A. webpack打包vue项目,可修改配置文件
vue项目打包完成后,如需改变配置文件中的信息,比如域名修改(如下图config.js),是不可能在配置文件中直接更改的,因为配置文件是前端写死的,这时只能手动更改项目中的配置,然后重新打包npm run build
var packConfig = require('../src/config')//引入原配置文件
var GenerateAssetPlugin = require('generate-asset-webpack-plugin')//引入插件
var createServerConfig = function(compilation){//声明转换函数,将对象转为json字符串
return JSON.stringify(packConfig)
}
plugins里添加
new GenerateAssetPlugin({//生成文件,并添加入内容
filename: 'config.json',
fn: (compilation, cb) => {
cb(null, createServerConfig(compilation));
},
extraFiles: []
})
import axios from 'axios'//引入一个ajax封装工具
import storage from 'services/storage'//引入对缓存操作的封装工具
var getConfigJson = function () {
//声明一个函数,用来读取json文件并将其内容存入缓存
axios.get('config.json').then((result) => {
//读取文件
storage.setItem('config', result.data)
}).catch((error) => {
console.log(error)
})
}
B. vue.config.js 配置
vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。
在根目录中创建 vue.config.js
这个文件应该导出一个包含了选项的对象:
publicPath
把开发服务器架设在根路径,可以使用一个条件式的值:
outputDir
assetsDir
indexPath
filenameHashing
pages
其值应该是一个对象,对象的 key 是入口的名字,value 是:
lintOnSave
runtimeCompiler
transpileDependencies
proctionSourceMap
crossorigin
integrity
Webpack相关配置
configureWebpack
chainWebpack
css.moles
css.extract
css.sourceMap
css.loaderOptions
支持的 loader 有:
devServer
devServer.proxy
parallel
pwa
pluginOptions
C. vue打包后生成可配置文件,用于修改接口路径等
vue打包发布后,如果接口地址等发生变更,需要重新打包,过于繁琐。因此需要将一些例如接口地址、网站参数等拿出来动态配置。
具体步骤如下:
1、安装generate-asset-webpack-plugin插件
npm install generate-asset-webpack-plugin --save-dev
2、在vue.config.js中配置如下:
3、使用
在main.js中全局引入
4、打包后dist下生成.json文件,修改接口后生效
如果你有更好的方法也请留言哦。。。
D. Vue-cli-4-路由配置文件,路由进阶,二级路由
vue.config.js 是vue的配置文件,必须创建在 demo根目录 下,该配置文件中,只能使用commonjs模块化语法,使用mole.export导出,格式如下图。
@符号代表src资源目录,在vue.config.js文件中将路径解析,path.resolve是拼接路径方法。将@c定义为当前绝对路径
@c代表src目录下的components文件,@v代表src目录下的views文件,其他同理,后续在其他文件中引入文件时,只需要使用以下方法即可导入,不会随着文件目录的改变而改变。
1.路由模式
2.路由元信息
meta属性,配置路由的元信息,其实就是在每个路由身上配置一份数据
3.路由守卫
在meta对象中,可以配置一个roles属性,其中可以配置路由的访问权限,下图中可访问的人已标记为admin,vip及user
其次,在 router.beforeEach 及 router.AfterEach 中可以配置信息
router.beforeEach 是路由前置守卫,每次跳转路由之前,都会拦截,其中next()方法表示下一步(跳转),其中是一个回调函数,其中有三个参数to,from,next
router.AfterEach是 路由后置守卫,其中可以将页面的title设置为meta属性中设置的title,其中是一个回调函数,其中有两个参数to,from
浏览器的访问权限可以在application中的session storage中添加一个roles:admin,如果路由信息中meta中未设置roles,则无法访问该设置了roles属性的路由页面
安装: npm install nprogress(给路由页面的跳转添加一个上方的进度条)
导入:
首先在页面views中创建一个文件夹,然后在该文件夹中创建两个二级路由页面,如下图所示
然后在所需要创建二级路由的一级路由创建信息中添加一个 children数组 ,该数组中添加二个对象,每个对象就是该一级路由页面的一个二级路由页面,如下图所示,该二级路由信息中的component信息采用了 路由懒加载 的方式导入
然后在一级路由页面one.vue中写入二级路由页面的router-link导航和router-view
最终效果如下图所示