1. 介绍

介绍如何使用VUE ELEMENT TEMPLATE 工程模板 , 默认增加集成 vuex, vue-router, Element UI & axios & iconfont & permission control & lint等,提供默认的MVVM项目框架. 前端项目集成的是:https://github.com/PanJiaChen/vue-admin-template

因为在登陆系统时使用了vuex进行统一状态管理,本文也介绍vue-devtools的简单使用

因为使用了extract的几个插件,目前只支持webpack3 , 尚不支持升级到webpack4
link:https://vuejs.org/[vue 官方文档]
link:https://router.vuejs.org/zh/[vue router 官方文档]
link:https://vuex.vuejs.org/zh/[vuex 官方文档]

2. VUE element Template 多项目框架使用

使用了vuex进行统一状态管理,可配合vue-devtools 进行时间旅行等debug功能操作.

3. 关于测试

因为element模板中集成了 vue-router和vuex等特性,因此单元测试类的编写与之前略有不同.

详细可参看示例

建议仔细阅读官方的测试教程https://vue-test-utils.vuejs.org/zh/

4. 关于与server打包进一个工程的方案

尽管目前前后端分离为两个工程,但真实项目中,可能无法运维nodejs, 因此需要将client打包后,放入到server工程的static/js目录中. 以下是操作步骤:

4.1. 修改client工程

自动打包是cli运行环境,因此需要修改几个插件的配置:

修改client/config/prod.env.js文件

'use strict'
module.exports = {
  SKIP_SASS_BINARY_DOWNLOAD_FOR_CI:true,  (1)
  CHROMEDRIVER_SKIP_DOWNLOAD:true,        (2)
  NODE_ENV: '"production"',
  SERVER_URL: '"http://localhost:8080"'
}
1 production 环境不必下载node-sass插件
2 production 环境不必下载chromedriver插件

修改client/config/index.js文件, 以便在server工程中访问资源

  build: {
    // Template for index.html
    index: path.resolve(__dirname, '../dist/index.html'),

    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '/js/vue/',          (1)

    /**
     * Source Maps
     */

    productionSourceMap: true,
1 / 改为 /js/vue/ ,方便在server工程中访问

4.2. 修改server工程

修改build.gradle 文件

....
//apply plugin: 'war'              (1)
....
/*war{                             (2)
        baseName = 'vuedemo25'
        version = '0.0.1-SNAPSHOT'
}*/
....
1 注释掉 war插件
2 注释掉 war的配置

4.3. 添加build.gradle文件

在项目的根目录,settings.gradle文件的同目录下创建build.gradle文件 内容如下:

task copyClientResources(dependsOn: ':client:build', type: Copy) {
    group = 'build'
    description = 'Copy client resources into server'
    from "${project(':client').projectDir}/dist"
    into "${project(':server').buildDir}/resources/main/static/js/vue/"
}
task assembleServerAndClient(type: Copy, dependsOn: ['copyClientResources', ':server:assemble']) {
    group = 'build'
    description = 'Build combined server & client JAR/WAR'
    from fileTree(dir: "${project(':server').buildDir}/libs/")
    into "${rootProject.buildDir}"
    doLast {
        logger.quiet "JAR/WAR generated at ${rootProject.buildDir}. It combines the server and client projects."
    }
}
task(":server:assemble").mustRunAfter(copyClientResources)

4.4. 刷新gradle project

在右侧的gradle管理界面中, 点击refresh all gradle projects , 进行项目刷新.

4.5. 打包工程

在右侧的gradle管理界面中, 选择总工程→tasks→build →assembleServerAndClient

运行后,在根目录会创建出build目录

4.6. 运行工程

运行build 目录下的war包

java - jar ***.war

启动后,浏览 http:localhost:8080/js/vue/index.html 即可.

4.7. 继续开发,复原server工程

打包后,为后续继续开发,需要修改server/build.gradle 文件, 将下述注释取消.

....
apply plugin: 'war'              (1)
....
war{                             (2)
        baseName = 'vuedemo25'
        version = '0.0.1-SNAPSHOT'
}
....
1 去掉 war插件注释
2 去掉 war的配置注释