尤雨溪:Vue 3.0 计划 掘金译文
关于安装
Vue CLI 的包名称由 vue-cli 改成了 @vue/cli
1 | npm install -g @vue/cli |
项目创建
关于项目创建,除了命令创建3.x还增加了图形化界面创建以及管理vue项目
在创建新项目时还可以混合选用多种集成
- TypeScript
- PWA
- Vue Router & Vuex
- ESLint / TSLint / Prettier
- 用 Jest 或 Mocha 进行单元测试
- 用 Cypress 或者 Nightwatch 进行 E2E 测试
使用命令创建
命令:vue create vueapp
- 使用上下箭头选择默认设置还是手动选择功能
1 | Vue CLI v3.0.3 |
- 按空格键选择你需要的功能,选完后按回车
1 | babel:javascript转译器,将最新版的js语法(es6、es7)转换为现阶段浏览器可以兼容的js代码 |
- router是否使用history模式,history需要服务器支持
- css预处理器的选择,我习惯用sass
- 代码格式化检测选择,我用的是ide是vscode个人感觉搭配插件用着很舒服,所以我选Prettier
- 是否保存刚才的配置,下一次就不用重新配置了,我就直接回车
- 关于Babel, PostCSS, ESLint, etc.这些配置文件你是想放在package.json里面还是单独放在外面
编辑器一般默认会在项目根目录下寻找配置文件,这里我就直接回车选择In dedicated config files - 是否保存为未来项目的预配置吗,我也是直接回车
最后配置如下
1 | Vue CLI v3.0.3 |
图形化界面
图形化操作非常方便,我就不一步步演示了,主要懒得贴图 (°ー°〃)
1 | 执行npm命令 |
实用新功能
- node_modules
- public
- src
- .browserslistrc
- .eslintrc.js
- .gitignore
- babel.config.js
- package.json
- postcss.config.js
- README.md
以上是项目根目录,3.x对比2.x文件结构明显精简了不少,多了一个public文件夹用于存放静态文件少了config、build等一系列的配置文件,这些配置文件都被放在了node_modules@vue文件下
browserslist
根目录中多了一个.browserslist文件,可以指定项目的目标浏览器的范围
用于转译的 JavaScript 特性和添加CSS 浏览器前缀,可以减少兼容代码提高代码质量
如果想少一个文件,你也可以在package.json中添加browserslist字段,参数是一个数组
1 | 这是默认设置,兼容所有最新版本,不支持ie8以下 |
使用 npx browserslist 可以查看项目的浏览器兼容情况
将需要支持的目标浏览器参数放在文件中就好
vue-cli服务
在一个 Vue CLI 项目中,@vue/cli-service 安装了一个名为 vue-cli-service 的命令。
你可以在 npm scripts 中以 vue-cli-service、或者从终端中以 ./node_modules/.bin/vue-cli-service 访问这个命令
Vue CLI 项目有三个模式: development 模式用于启动,production 模式用于打包和e2e测试,test 模式用于unit测试
1 | 启动 |
现代模式
为了兼容那些不支持js新特性的浏览器我们需要Babel转译,但转译后的代码笨重冗长,这次3.x提供了一个现代模式
1 | npx vue-cli-service build --modern |
这个命令会产生两个应用的版本:一个现代版的包,面向支持 ES modules 的现代浏览器,另一个旧版的包,面向不支持的旧浏览器
而且不需要我们手动去部署和设置什么,简直很贴心
- 现代版的包会通过
<script type="module"> 在被支持的浏览器中加载;它们还会使用 <link rel="modulepreload">
进行预加载 - 旧版的包会通过
<script nomodule> 加载,并会被支持 ES modules
的浏览器忽略 - 一个针对 Safari 10 中
<script nomodule>
的修复会被自动注入
插件的添加
在一个已经被创建好的项目中安装一个插件,使用vue add命令
CLI 插件安装
每个 CLI 插件都会包含一个 (用来创建文件的) 生成器和一个 (用来调整 webpack 核心配置和注入命令的) 运行时插件
对于这种cli插件需要加入@vue的前缀,这个命令将 @vue/eslint 解析为完整的包名 @vue/cli-plugin-eslint,然后从 npm 安装它,调用它的生成器
1 | 插件添加 |
第三方插件安装
1 | 安装并调用 vue-cli-plugin-apollo,不带 @vue 前缀,该命令会换作解析一个 unscoped 的包 |
配置修改
例:向所有 Sass 样式传入共享的全局变量
在根目录新建一个vue.config.js,加入以下配置
1 | module.exports = { |
打包后路径问题
在vue.config.js文件中加入’baseUrl: ‘./‘’
1 | module.exports = { |
虽然官方说这个文件会被 @vue/cli-service 自动加载,但如果你启动项目用的是npm run serve,那么你最好使用npx vue-cli-service serve重启一下