概述
一个Spring-boot + Vue.js的web应用,用于展示一些通用的ElasticSearch使用场景. 这是一个相对比较激进的项目,使用了很多当下最流行的前后端技术. 前端: ES6/Typescript+WebPack+EsLint+vuejs2+vue-router 2+axios+element-ui 后端: Spring-boot+ElasticSearch+MySql+Spark
优势
语法糖 -- 更易读的代码,更安全的代码
- ES2015/TypeScript:异步编程promise,类结构,变量作用域,模块化,函数默认参数, 箭头函数与this,字符串模板,静态类型检查(TS)
- Less:嵌套,变量,方法
工程化构建 -- 让机器帮你优化代码
- 多源构建:支持多种代(ES2015/TS/Less)码编写,忽略编译/预处理过程
- 错误检查:使用EsLint等工具检查低级语法错误,让程序猿集中精力处理业务逻辑
- 代码风格统一:自动格式化代码,保证团队代码风格统一,提高可读性和可维护性
- 自动性能优化:让工具帮你打包,合并文件,优化图片,处理模块加载
- 热加载:自动编译代码,并刷新浏览器,保护你的F5键!
- IDE支持:让js也能自动完成代码提示,并且更准确. 更方便地阅读和重构代码
规范化编写 -- 限制你的程序猿天马行空的coding
- 框架结构清晰,层次分明:
- 使用Vue.js把代码进行分类编写(data,props,computed,methods)
- 使用vue文件编写组件,一个文件就是一个组件,代码在物理上进行隔离
- 使用js模块编写代码,保证命名和变量作用域冲突问题,并保证代码复用性
- 正统的js class编写风格,远离prototype的恶心写法
- EsLint检查代码风格:
- 代码样式统一
- 自动格式化代码
- 自动检查低级语法错误
前后端分离
- 加速原型界面开发:前后端并行开发,缩短开发周期
- 降低耦合度,简化逻辑:
- 封装常用业务组件
- 模块化代码,提高代码重用
- MVVM思想:UI模版绑定与业务逻辑处理数据分离
- 更容易的单元测试: action与UI代码分离,方便单元测试
- 为后端微服务化打下基础:前端完全从后端获取JSON数据进行界面展示逻辑处理,后端专注业务逻辑,接收和返回数据都只是JSON,简化后端与前端的耦合度
快速构建部署
- 前端: 与后端完全分离,使用webpack等构建工具打包生成静态Html,js,css文件.直接在Nginx中同步静态文件
- 后端: 使用Spring-boot单jar应用,节省war构建和tomcat等web容器构建, 直接java -jar xx.jar在Docker容器中运行
- 自动化构建脚本: 使用nodejs自动化部署脚本执行发布更新任务,减少人工操作,避免人工低级运维错误,并且任何人都能操作发布更新系统
- 服务器配置统一管理: 方便运维人员动态分配服务器资源,也使程序员发布更新时不需要接触敏感服务器密码
一次学习,多端应用
- 基础UI组件迁移成本低: 开发人员可以根据实际需要快速切换到其他UI组件
- 方便支持多端App混合应用: vue.js与weex完全类似,学习后迁移应用支持weex非常方便快速
环境搭建
前端部分
- 安装nodejs, 去官网下载v7.x版本NodeJs,并安装;
- 在命令行下安装cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 进入web目录,安装相关全局工具和相关依赖:
cd web cnpm install -g vue-cli webpack eslint gulp cooking-cli cnpm install
- 运行dev开发模式
npm run dev
- 运行lint检查代码文件(注:dev模式自动检查,build是也检查,lint一般只是快速检查时使用)
npm run lint
- 运行build工具编译生成静态文件(发布时使用)
npm run build
后端部分
- 安装gradle, 去官网下载v3.x版本,并安装;
- 启动你的es服务器, 检查配置文件/wES-demo/src/main/resources/application.yml中的es服务器配置;
- 在命令行中进入wES-demo目录下执行命令启动开发模式:
- 开发模式:
cd wES-demo gradle bootrun
- 生产模式:
cd wES-demo gradle bootrepackage java -jar .\build\libs\wES-demo-0.2.jar
- 开发模式: