主要内容:

  1. vue-cli2和3的区别
  2. 创建vue-cli3脚手架
  3. vue-cli3项目的目录结构
  4. vue-cli2和vue-cli3中 main.js文件的区别
  5. vue-cli3的配置文件管理

一. vue-cli2和vue-cli3的区别

  • vue-cli3 是基于webpack4的, vue-cli2是基于webpack3
  • vue-cli3的设计原则是"0配置", 移除了配置文件根目录下build和config等目录
  • vue-cli3 提供了vue ui命令, 进行可视化配置, 操作更方便
  • 替换了static文件夹为public文件夹, 并且index.html移动到public文件夹中

二. 创建vue-cli3脚手架

之前创建了vue-cli2的脚手架, 这次来创建vue-cli3的.

创建项目的命令:

vue create 项目名称

1. please pick a preset: 请选择一个配置

三选一, 我们来看看这个配置的含义:

  1. defalut (babel, eslint)

    默认配置, 默认配置安装了es6转es5,eslint代码格式化工具
  1. Manually select feature: 手动选择特性

    通常, 如果我们需要指定哪些插件安装,哪些不安装, 就可以选择手动

  • 按空格键, 选中/取消选中
  • 按上下箭头, 上下选择
  • 取消Linter, 我们不使用格式啊校验.

某些配置是单独放在在一个配置文案

2. Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys): 配置文件放在那里呢?

  • In dedicated config files:独立文件
  • In package.json : 放到package.json中

    通常我们都选择独立的配置文件, 方便管理

3. Save this as a preset for future projects? (y/N) 是否将刚刚的配置保存到项目中?

如果选择是: 下次在配置选项的时候, 除了default,manually,还会多一个我们保存的项目配置.

  • Y: 如果以后搭建项目都希望是这个配置就选择y
  • N: 不希望保存配置

    下次在创建项目的时候, 我们就可以自动选择之前保存的项目特征

如果我们设置了很多自定义配置,如何取消呢?

在/Users/用户名/.vuerc, 修改这个文件

{
"useTaobaoRegistry": false,
"presets": {
"mySet": {
"useConfigFiles": true,
"plugins": {
"@vue/cli-plugin-babel": {}
},
"vueVersion": "2"
}
}
}

里面有个选项是presets. 下面就是我们保存的设置.设置名称是mySet.这个配置只安装一个插件:@vue/cli-plugin-babel

4. Save preset as: 保存上面的配置的文件名是什么?

三. vue-cli3项目的目录结构

下面来对比看一下vue-cli2 和vue-cli3的项目结构的区别



可以看到vue-cli3的项目结构简洁了很多

  • build和config配置文件都没有了
  • static换成了public文件夹.

下面我们来看一下vue-cli3项目中各个文件的含义

1. node_modules: npm构建的组件都在这个文件夹里面

2. public: 里面存放公共资源. 目前有index.html和

3. src: 存放源代码

4. .browserslitstrc: 浏览器适配配置

> 1%
last 2 versions
not dead

适配市场份额大于1%的最后两个版本, 不适配已经过期的版本

5. gitignore: 忽略文件

node_modules
/dist

重点看这个, 忽略node_modules文件和/dist构建后的文件. 通过运行npm run serve就可以生成这两个文件了

6. babel.config.js: babel插件设置

module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

通常, 不修改这个文件的内容

7. package.json: npm配置文件

{
"name": "03-vuecli3",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"vue-template-compiler": "^2.6.11"
}
}

这个比vue-cli2的devDependencies配置文件少了很多. 而多了一个下面这个配置:

"@vue/cli-service": "~4.5.0",

这个配置的作用是: 管理dev环境的依赖. vue-cli3使用这个配置以后, 简化了配置文件.

8. package-lock.json: 真实使用的插件的版本号.

在package.json配置文件中, 我们会使用~或者^来模糊匹配版本号, 而这个文件里就是精确指明使用的详细版本号了

四.vue-cli2和vue-cli3中 main.js文件的区别

来看下面的图片, 对比二者的区别:

Vue.config.productionTip = false

这句话的意思是: 是否打印项目启动的详细提示信息. false: 不打印. true: 打印

不同的地方在这里

vue-cli2

new Vue({
el: '#app',
render: h => h(App)
})

vue-cli3

new Vue({
render: h => h(App),
}).$mount('#app')

其实这两种写法是一个意思. el:'#app',vue在解析的时候, 会去执行$mount("#app").

五. vue-cli3的配置文件管理

vue-cli3为了项目结构简单, 去掉了config和build文件夹。 但是这些文件夹实际上都是需要的。 加入我们想要修改配置文件, 要如何修改呢?有三种方法:

方法一:使用vue UI配置界面修改

首先, 我们安装vue UI界面管理。 这是一个全局的命令

vue ui

安装好以后, 如下所示:


然后打开界面

在这我们可以导入项目, 创建项目.

我们导入刚刚创建的vuecli3项目, 导入成功后看到如下界面:


页面左侧有菜单, 分别看:

a.插件


在这里可以看到我们安装的全部插件, 还可以点击添加插件按钮,安装新插件. 这些插件可以在package.json配置文件中找到

{
"name": "03-vuecli3",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"vue-template-compiler": "^2.6.11"
}
}

在devDependencies选项中有三个插件, 而我们的vue ui中只有两个, 另一个在<依赖>里面,一会就可以看到了.

b.依赖


可以看到目前这个项目依赖core-js和vue. 其中vue的版本是2.6.12
同时依赖了vue-template-compiler, 版本也是2.6.12, 通常vue和vue-template-compiler的版本是一样的. 如果不一样, 可能编译会报错.

c.配置

这里面就有我们之前在webpack.config.js中定义的输入路径,输出路径, 公共路径等. 如果需要修改, 可以直接修改这里

d.任务

我们之前启动服务都是使用命令, vue3也可以在ui界面进行启动

点击运行按钮, 即可启动.并且可以监控启动状态等.

方法二:在node_module模块中查看配置

虽然vue-cli3简化了配置, 但是这些配置还是得有, 只是对用户来说, 隐藏了. 那么这个配置隐藏在哪里了呢?在node_module中@vue目录下.

在@vue目录下, 找到cli-service目录, 现在vue的配置都交给了cli-service来管理. 在cli-service目录下, 有一个webpack.config.js.这个就是webpack的配置.

// this file is for cases where we need to access the
// webpack config as a file when using CLI commands. let service = process.VUE_CLI_SERVICE if (!service || process.env.VUE_CLI_API_MODE) {
const Service = require('./lib/Service')
service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
service.init(process.env.VUE_CLI_MODE || process.env.NODE_ENV)
} module.exports = service.resolveWebpackConfig()

我们看到它引入了lib目录下的Service.js配置文件, 这里面有引入了很多包.

这里就有base基础配置, dev开发环境配置,prod生成环境配置等.

方法三: 自定义需要修改的配置文件

如果我们想要修改默认配置, 需要在根目录下新建一个文件vue.config.js. 这个文件名是固定的, 不可修改.

然后将自定义的内容写到module.exports里面

module.exports= {

}

16. 使用vue3结构及配置管理的更多相关文章

  1. sizeof(结构体) = ?

    关于结构体大小怎样计算的文章,我想网上一搜到处都有人总结,本人之所以在此基础上还要发表这样的文章是想用最简单的计算方法来总结前人给出的结论,以致我们在以后在对结构体相关编程中不会陷入字节对齐的陷阱中. ...

  2. activti表结构

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  3. C结构体中数据的内存对齐问题

    转自:http://www.cnblogs.com/qwcbeyond/archive/2012/05/08/2490897.html 32位机一般默认4字节对齐(32位机机器字长4字节),64位机一 ...

  4. 小甲鱼PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)

    咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! (视频教程:http://fishc.com/a/shipin/jiemixilie/) 接着我们来谈谈 IM ...

  5. MP4(一)-结构

    http://blog.csdn.net/zhuweigangzwg/article/details/17222951 一.基本概念 1.mp4概述 MP4文件中的所有数据都装在box(QuickTi ...

  6. MP4文件格式具体解释——结构概述

    MP4文件格式具体解释(ISO-14496-12/14) Author:Pirate Leo Email:codeevoship@gmail.com 一.基本概念 1. 文件,由很多Box和FullB ...

  7. activiti数据库表结构剖析

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  8. PE文件常用结构体

    Dos头结构: typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_c ...

  9. Apache activiti5.13工作流框架的表结构详解

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

随机推荐

  1. 三、Python基本数据类型

    一.基本算术运算(获取的结果是值) 1 a1=10 2 a2=20#初始赋值 3 a3=a1+a2 #结果30 4 a4=a2-a1 #结果10 5 a5=a1*a2 #结果200 6 a6=a2/a ...

  2. PowerShell随笔1---背景

    既然是随笔,那就想到什么说什么,既会分享主题知识,也会分享一些其他技巧和个人学习方法,供交流. 我一般学习一个东西,我都会问几个问题: 这东西是什么? 这东西有什么用,为什么会出现,出现是为了解决什么 ...

  3. KEIL + STM32 续

    接上一篇,debug出现问题 1.手动安装STM32 芯片包   Keil.STM32F1xx_DFP.2.2.0.pack; https://www.keil.com/dd2/Pack/ 百度网盘  ...

  4. HDU2837 Calculation(指数循环节)题解

    题意: 已知\(f(0)=1,f(n)=(n\%10)^{f(n/10)}\),求\(f(n)\mod m\) 思路: 由扩展欧拉定理可知:当\(b>=m\)时,\(a^b\equiv a^{b ...

  5. MDN All In One

    MDN All In One https://github.com/mdn/ https://wiki.mozilla.org/MDN MDN 要凉了 https://developer.mozill ...

  6. Protocol Buffers All In One

    Protocol Buffers All In One Protocol Buffers - Google's data interchange format Protocol buffers are ...

  7. js console 性能测试 & don't-use-array-foreach-use-for-instead

    don't-use-array-foreach-use-for-instead slower https://coderwall.com/p/kvzbpa/don-t-use-array-foreac ...

  8. API 授权 All In One

    API 授权 All In One 身份验证 授权类型 身份验证类型 继承认证 没有认证 API密钥 不记名令牌 基本认证 摘要授权 OAuth 1.0 OAuth 2.0 授权码 隐含的 密码凭证 ...

  9. HTML5 drag & drop & H5 DnD

    HTML5 drag & drop H5 DnD https://html5demos.com/ demos https://html5demos.com/dnd-upload https:/ ...

  10. vs code & macOS services

    vs code & macOS services Mac OS X, Open Folder With VS Code (right click) https://github.com/Mic ...