Vue CLi3入门
摘自:https://www.jianshu.com/p/cf9b56efd3b8
Vue CLi3入门
地址
安装
命名方式已经改为npm推荐的作用域规则,详情查看此文章
npm i @vue/cli -g
yarn add @vue/cli global
# 查看版本
vue -V
创建一个项目
vue create clidemoe # 2.0中 vue init webpack clidemoe
如果版本小于3.0会提示让你升级3.0以上。


第一次创建只会有两个选项(default和Manually select features),1和2是我之前创建保存的。
这里我们主要看Manually select features:
首先是特性选择(按空格键选中或取消,a全选,i反选):

接着是选择路由是否使用history模式:
Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n)
接着选择使用哪种css预处理器:

最后选择代码风格等:

最后会问你是否保存本次选择的配置:

接着又会问你特性的存放方式:

最后会问你是否保存本次预设

最后出现这两行就说明创建完成了:

创建方式2:
使用图形化vue ui创建项目:

- 选择包管理器
- 选择配置,可以选择默认,也可以自己手动配置(一般手动配置),还可以选择之前配置过的(前提是有保存)
- 选择功能(插件)

- 选择配置

- 如果勾选了保存预设,会有弹框让你输入这次保存的预设名
创建好了,看看页面
插件

依赖

默认启动服务方式:
npm run serve # 2.0中 npm run dev
npx vue-cli-service serve
对比:
CLi2启动方式是webpack-dev-server --inline --progress --config build/webpack.dev.conf.js,使用的是webpack-dev-server搭的服务
CLi3启动方式是vue-cli-service serve
vue-cli-service serve就是CLi服务,文件位于node_modules@vue\cli-service\bin
目录结构


相较于2.0,3.0的目录结构简单了许多,少了build、config两个目录,安装时自动下载了node_modules,3.0的webpack配置可以在根目录新建一个vue.config.js文件。
Vue CLi3.0删除了config和build文件夹,现在配置webpack只需要在项目的根目录下新建vue.config.js文件
#vue.config.js 完整默认配置
module.exports = {
// 基本路径
baseUrl: '/',
// 输出文件目录
outputDir: 'dist',
// 用于嵌套生成的静态资产(js,css,img,fonts)的目录。
assetsDir: '',
// 以多页模式构建应用程序。
pages: undefined,
// eslint-loader 是否在保存的时候检查
lintOnSave: true,
// 是否使用包含运行时编译器的Vue核心的构建。
runtimeCompiler: false,
// 默认情况下babel-loader忽略其中的所有文件node_modules。
transpileDependencies: [],
// 生产环境sourceMap
productionSourceMap: true,
// webpack配置
configureWebpack: () => {},
chainWebpack: () => {},
// css相关配置
css: {
// 启用 CSS modules
modules: false,
// 是否使用css分离插件
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {},
},
// webpack-dev-server 相关配置
devServer: {
host: '0.0.0.0',
port: 8080,
https: false,
hotOnly: false,
proxy: null, // 设置代理
before: app => {}
},
// enabled by default if the machine has more than 1 cores
parallel: require('os').cpus().length > 1,
// PWA 插件相关配置
pwa: {},
// 第三方插件配置
pluginOptions: {
// ...
}
}
浏览器兼容性
在package.json文件里多了一个browserslist字段,这个字段指定了项目兼容到哪些浏览器。
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
这个字段会被babel用来确定转义的js特性和需要添加的css前缀。
参考资料:https://www.jianshu.com/p/bd9cb7861b85
插件
vue add eslint
vue add @vue/cli-plugin-eslint
安装后会在src目录下生成一个plugins目录,里面会生成插件的配置文件。
vue add 的设计意图是为了安装和调用 Vue CLI 插件。这不意味着替换掉普通的 npm 包。对于这些普通的 npm 包,你仍然需要选用包管理器。
我们推荐在运行 vue add 之前将项目的最新状态提交,因为该命令可能调用插件的文件生成器并很有可能更改你现有的文件。
HTML和静态资源
CSS相关
Vue CLI 项目默认支持PostCss、CSS Modules 和 包含 Sass、Less、stylus在内的预处理器(包还是要安装的,只是不用配置了)。
预处理器:
在创建项目的时候选择预处理器(sass/less/stylus)。如果当时没有选好,内置的webpack任然会被预配置为可以完成所有的处理,你也可以手动安装相应的webpack loader:
npm i sass-loader node-sass -D
npm i less-loader less -D
npm i stylus-loader stylus -D
PostCSS:
Vue CLi默认开启了autoprefixer(自动添加前缀),如果要配置目标浏览器,可使用package.json的browserslist字段,所以开发时只需使用无前缀的css规则即可。
环境变量和模式
VueCLI移除了配置文件目录后,如何自定义配置环境变量和模式?
环境变量:
一般项目中,我们针对不同的开发环境,会配置不同的环境变量,下面这些文件会在不同的环境下被载入:
- .env #在所有环境中载入
- .env.development #在开发环境中被载入
- .env.production #在生产环境中被载入
- .env.local #在所有环境中载入,会被git忽略
- .env.development.local #在开发环境中载入,但会被git忽略
- .env.development.local #在生产环境中载入,但会被git忽略
- 在根目录下新建两个文件.env.development,.env.production。用这两个文件存放环境变量。
// env.development
NODE_ENV=development
VUE_APP_URL=http://123.com
// env.production
NODE_ENV=production
VUE_APP_URL=http://456.com
变量必须以VUE_APP_开头
被载入的变量将会被vue-cli-service的所有命令、插件、依赖可用。
tips:
为一个特定模式准备的环境文件将会比一般的环境文件拥有更高的优先级。(列如.env.development的优先级比.env高)。
模式:
默认情况写,一个Vue CLi项目有三个模式:
- development 模式用于 vue-cli-service serve
- production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
- test 模式用于 vue-cli-service test:unit
每个模式都会将NODE_ENV的值设置为模式的名称——比如在development模式下NODE_ENV的值会被设置为development。
可以在package.json中,通过传递 --mode 选项参数为命令行指定模式。
dev-build:"vue-cli-service build --mode development" #指定模式
案例
//vue.config.js
module.exports = {
baseUrl: process.env.NODE_ENV !== 'production' ? '/' : '/bl/',
// 这里在webpack配置时判断不同环境下使用不同配置
configureWebpack: config => {
if (process.env.NODE_ENV === "development") {
config.devtool = "source-map";
} else if (process.env.NODE_ENV === "production") {
config.devtool = "eval-source-map";
}
}
}
如果安装完vue-cli3后,还想用vue-cli2怎么办?这个时候就需要安装一个桥接工具了
npm install -g @vue/cli-init
//安装完后 就还可以使用 vue init 命令
vue init webpack my-demo
12人点赞
Vue CLi3入门的更多相关文章
- vue cli3超详细创建多页面配置
1.首先按照vue cli3 给的入门文档下载个vue cli3 如果之前下载了vue cli2的要先卸载之前的 2.检查安装是否成功 3.ok,现在环境搭建好了,新建项目 vue create he ...
- Vue.js 入门指南之“前传”(含sublime text 3 配置)
题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...
- vue框架入门和ES6介绍
vue框架入门和ES6介绍 vue-mvvm模式,vue是一种轻量级的前端框架,主要为模板渲染,数据同步,组件化,模块化,路由等. https://cn.vuejs.org/ 源码:https://g ...
- 在 vue cli3 的项目中配置双服务,模拟 ajax 分页请求
最近安装了下vue cli3版本,与 cli 2 相比,文件少了,以前配置方法也不管用了.demo 中的大量的数据,需要做成 ajax 请求的方式来展示数据,因此,需要启动两个服务,一个用作前端请求, ...
- 安装VUE Cli3 框架方法
下面为大家介绍一下怎样安装 VUE Cli3的步骤 官网地址 https://cli.vuejs.org/zh/guide/installation.html 一.首先要检查一下是否安装node环 ...
- Vue.js 入门教程
Vue.js 入门教程:https://cn.vuejs.org/v2/guide/index.html
- vue cli3.0 结合echarts3.0和地图的使用方法
echarts 提供了直观,交互丰富,可高度个性化定制的数据可视化图表.而vue更合适操纵数据. 最近一直忙着搬家,就没有更新博客,今天抽出空来写一篇关于vue和echarts的博客.下面是结合地图的 ...
- Vue CLI3 开启gzip压缩
gizp压缩是一种http请求优化方式,通过减少文件体积来提高加载速度.html.js.css文件甚至json数据都可以用它压缩,可以减小60%以上的体积. webpack在打包时可以借助 compr ...
- 免费的 Vue.js 入门与进阶视频教程
这是我免费发布的高质量超清「Vue.js 入门与进阶视频教程」. 全网最好的.免费的 Vue.js 视频教程,课程基于 Vue.js 2.0,由浅入深,最后结合实际的项目进行了最棒的技术点讲解,此课程 ...
随机推荐
- Java Web开发技术教程入门-自定义标签
回顾: 昨天了解了JSP开发的两种模式Model1和Model2模式.Model1采用JSP+JavaBean技术开发Web应用,它比较适合小规模应用的开发,效率较高,易于实现.但由于在Model1中 ...
- idea 设置自动生成注释
idea新建类注释规则 /** @ProjectName: ${PROJECT_NAME} @Package: ${PACKAGE_NAME} @ClassName: ${NAME} @Descrip ...
- 最短路(hdu2544)
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助 ...
- Scala新版本学习(1):
1.进官网:https://www.scala-lang.org/ 上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,S ...
- 详解EveryThing
摘要:Everything几乎是每个职场人必备的效率工具,但同事们都只用它的一两个基本功能,并没有发挥出该软件的真正效率.实际上,把Everything的功能用到极致能够成倍的提升我们的工作效率,本文 ...
- Vue路由守卫之组件内路由守卫
beforeRouteEnter,进入路由前.需要注意这里不能使用this,因为我们使用的是进入路由之前,那会组件还没创建,得不到this这个属性,所有我们只能使用过vm异步语句来让 ...
- js变量的作用域、变量的提升、函数的提升
变量的作用域在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问.在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问. ECMAScript 6 之前的 Jav ...
- iOS去掉字符串中的HTML标签的方法
方法一.NSScanner去除标签 - (NSString *)removeTheHtmlFromString:(NSString *)htmlString { NSScanner * scanner ...
- mysql数据库表名区分大小写
使用mysql的时候,创建的表明都是大写的,但是查询语句中表明用消息就会报错,表不存在. 查询后发现mysql默认配置是表明区分大小写的,如果要修改成不区分大小写,需要修改一下配置. 1.修改MySq ...
- Could not determine which “make” command to run. Check the “make” step in the build configuration
环境: QT5.10 VisualStudio2015 错误1: Could not determine which “make” command to run. Check the “make” s ...




