Vue-cli
1.配置文件
vue.config.js
2.快速原型开发:对单个vue文件进行快速原型开发
- vue serve:需要安装全局依赖,机器一致性无法保证,对应目录执行:vue serve file
- vue build:将目标文件构建成一个生产环境的包用来部署,对应目录执行:vue build file
3.创建项目
- vue create project
- 选取preset:默认/手动,.vuerc保存设置
- vue ui:图形化创建和管理项目
4.插件:
- 每个CLI插件都会包含一个(用来创建文件)生成器和一个(用来调整webpack核心配置和注入命令的)运行时插件
- 现有项目安装插件:vue add plugin
- 项目本地的插件:package.json中配置vuePlugins.service/vuePlugins.ui选项为对应插件
5.Preset:.vuerc中配置
- 包含创建新项目所需预定义选项和插件的JSON对象
- 为集成工具添加配置:当”useConfigFiles”:true,configs的值会被合并到vue.config.js中
- 版本管理:可配置插件的version选项,忽略时自动最新
- 允许插件的命令提示:可配置插件的prompts选项为true
- 远程Preset:创建项目时通过 –preset 使用远程preset
- 加载文件系统中Preset:–preset的值是相对或绝对文件路径则本地加载
6.CLI服务:
-
vue-cli-service serve
:启动一个开发服务器 -
vur-cli-service build
:产生可用于生产环境的包 -
vur-cli-service inspect
:审查一个Vue CLI项目的webpack config
7.浏览器兼容性:
- browserslist字段:指定项目目标浏览器,用来确定JS特性以及CSS浏览器前缀
-
Polyfill:
-
默认的Vue CLI项目会使用
@vue/babel-preset-app
,它通过
@babel/preset-env
和 browserslist 配置来决定项目需要的 polyfill -
默认情况下,它会把
useBuiltIns:'usage'
传递给
@babel/preset-env
,这样它会根据源代码中出现的语言特性自动检测需要的 polyfill,确保polyfill数量的最小化 -
如果该依赖基于一个目标环境不支持的 ES 版本撰写: 将其添加到
vue.config.js
中的 transpileDependencies 选项。这会为该依赖同时开启语法转换和根据使用情况检测 polyfill -
如果该依赖交付了 ES5 代码并显式地列出了需要的 polyfill: 你可以使用
@vue/babel-preset-app
的 polyfills 选项预包含所需要的 polyfill -
如果该依赖交付 ES5 代码,但使用了 ES6+ 特性且没有显式地列出需要的 polyfill (例如 Vuetify):请使用
useBuiltIns: 'entry'
然后在入口文件添加
import 'core-js/stable'; import 'regenerator-runtime/runtime';
。这会根据 browserslist 目标导入所有 polyfill -
当使用 Vue CLI 来构建一个库或是 Web Component 时,推荐给
@vue/babel-preset-app
传入 useBuiltIns: false 选项。
-
默认的Vue CLI项目会使用
-
现代模式:
vue-cli-service build --modern
生成两个应用的版本, 现代版的包不需要为了支持旧的浏览器而生成冗长的转译代码
8.HTML
- Index文件:index.html在构建过程中,资源链接会被自动注入。另外Vue CLI会自动注入resource hint(preload/prefetch、manifest 和图标链接 (当用到 PWA 插件时)) 以及构建过程中处理的 JavaScript 和 CSS 文件的资源链接。
-
插值:可以使用lodash template插入内容
- <%= VALUE %> 用来做不转义插值;
- <%- VALUE %> 用来做 HTML 转义插值;
- <% expression %> 用来描述 JavaScript 流程控制
-
Preload:
<link rel="preload">
是一种resource hint,用来指定页面加载后很快用到资源。 默认情况下Vue CLI为所有初始化渲染需要的文件自动生成 preload 提示,这些提示会被
@vue/preload-webpack-plugin
注入,并且可以通过chainWebpack的
config.plugin('prefetch')
进行修改和删除 -
Prefetch:
<link rel="prefectch">
是一种resource hint,用来告诉浏览器在页面加载完成后, 利用空闲时间提前获取用户未来可能会访问的内容。默认情况下Vue CLI会为所有作为 async chunk 生成的 JavaScript 文件 (通过动态 import() 按需 code splitting 的产物) 自动生成 prefetch 提示。这些提示会被
@vue/preload-webpack-plugin
注入,并且可以通过 chainWebpack 的
config.plugin('prefetch')
进行修改和删除 - 构建多页面应用:Vue CLI 支持使用 vue.config.js 中的 pages 选项构建一个多页面的应用
9.处理静态资源
-
处理方式:
- 在JavaScript被导入或在template/CSS中通过相对路径被引用。这类引用会被webpack处理。
- 放置在public目录下或通过绝对路径被引用。这类资源将直接被拷贝而不会经过webpack处理。
- 从相对路径导入:资源url都会被解析为一个模块依赖,chainWebpack 调整内联文件的大小限制
-
URL转换规则:
- 绝对路径:保留
- .开头:作为相对模块请求
- ~开头:作为模块解析请求,可以引用Node模块资源
-
@开头:Vue CLI 默认会设置一个指向
<projectRoot>/src
的别名 @。(仅作用于模版中)
- public文件夹:提供应急手段,若应用没有部署在域名的根部,那么需要为URL配置publicPath前缀
10.CSS相关
- 引用静态资源:通过css-loader解析url引用将作为模块请求进行处理
- 自动化导入:通过style-resources-loader导入css资源
- 引用PostCSS和CSS modules
-
向预处理Loader传递选项:
vue.config.js
中的
css.loaderOptions
选项
11.webpack相关
-
简单配置:
vue.config.js
中的configureWebpack选项:
plugins: [new MyAwesomeWebpackPlugin()]
会被
webpack-merge
合并入最终的 webpack 配置。有些webpack选项是基于
vue.config.js
中的值设置的,不能直接修改。 -
链式操作:Vue CLI内部的webpack配置是通过
webpack-chain
维护的。这个库提供了一个webpack原始配置的上层抽象,使其可以定义具名的loader规则和具名插件,并有机会在后期进入这些规则并对它们的选项进行修改 -
审查webpack配置:
vue-cli-service
暴露了inspect命令用于审查解析好的webpack配置,调用
vue inspect
将解析出来的webpack配置大隐刀stdout
12.模式
- development
- test
- production
13.环境变量:
-
只有NODE_ENV,BASE_URL 和以 VUE_APP_开头的变量将通过
webpack.DefinePlugin
静态地嵌入到客户端侧的代码中
14.构建目标
- target选项指定不同的构建目标
-
应用模式:默认模式
- index.html 会带有注入的资源和 resource hint
- 第三方库会被分到一个独立包以便更好的缓存
- 小于 4kb 的静态资源会被内联在 JavaScript 中
- public 中的静态资源会被复制到输出目录中
-
库模式lib:
- 项目的 publicPath 是根据主文件的加载路径动态设置
- Vue是外置的,在命令中添加–inline-vue标志避免错误
- 构建库输出文件:提供给打包器的CommonJS、给浏览器或UMD、压缩后的UMD、提取出的CSS
-
Web Components模式:
- Vue是外置的,既使导入包依旧假设有可用全局变量Vue
- 构建一个组件,在脚本引入后作为元素使用
- 注册多个组件的包,包内名称:名称前缀-文件名
-
异步组件:
--target wc-async
,使用中按需获取组件实例,避免包过大
版权声明:本文为qq_44242707原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。