文章目录

  • 一、快速开发工具
  • 1. Vue-CLI
  • 2. 安装 Vue-CLI
  • 二、使用老版本 Vue-CLI
  • 1. 构建项目
  • 2. 项目结构介绍
  • 三、使用新版本 Vue-CLI
  • 1. 构建项目
  • 2. 新版本和老版本结构对比
  • 3. 新版本中修改配置


一、快速开发工具



1. Vue-CLI



搭建项目的问题

当以前端工程化为目标搭建一个项目时,虽然有 webpack 帮我们减少很多麻烦,但项目的基础配置依旧繁琐

构建一个新的项目时,我们大概会经历:

  • 创建项目,构建标准的目录结构
  • 初始化 package.json,让项目被 NPM 管理
  • 基础依赖安装(基础依赖指的是大部分项目都会用到的插件或加载器, 比如样式加载器、文件加载器、小型服务器插件等 )
  • 配置 webpack.config.js,将加载器和插件进行应用
  • 等等…,最后还要写一个 Demo 页面,确保项目搭建正确

几乎每个项目在构建时都要经历这些步骤,这些操作不仅与实际业务无关,还很耗时,所以我们非常需要一个能将
这些步骤自动化的工具,来简化和加快我们的项目基础构建工作

快速开发工具

快速开发工具就是用来解决上述问题的,它会以大部分项目都在使用的目录结构和基础配置为标准,快速的帮我们
搭建出一个新的项目,帮我们解决项目基础构建问题,让我们将更多的经历和工作重心放在业务开发上,也有人将这
种工具称为 - 脚手架

Vue-CLI

快速开发工具是一个广泛的概念,属于一种分类,而 Vue-CLI 就是分类中的一个具体实现,它是专门为技术栈是
vue.js 的项目产生的一个快速开发工具,本文会记录 Vue-CLI 的基本使用方式和目录结构,关于它的更多资料,推荐
阅览 Vue-CLI 中文网Vue-CLI 英文网



2. 安装 Vue-CLI



1) 安装

我们可以使用 NPM 来安装 Vue-CLI。Vue-CLI 属于命令行工具,我们会经常使用其命令,就和 webpack 差不
多,所以建议进行全局安装。在任意处打开 CMD 窗口,执行如下命令:

npm i @vue/cli -g

Vue-CLI 的版本有很多,为了方便后面学习,我们需要对版本的称呼进行统一,可以用它的重大更新作为分界,
Vue-CLI 1.x 和 Vue-CLI 2.x 我们称为老版本,Vue-CLI 3.x 及未来版本称新版本,而上面安装的就是新版本

2) 配置环境变量

为了任意地方都可以使用 Vue-CLI 的命令,我们需要配置系统变量,找到 NPM 的全局路径,查看路径下是否有刚

刚安装的 Vue-CLI 生成的命令行脚本 vue.cmd

vue项目系统架构是啥 介绍vue项目的整体架构_Vue


确定有命令行脚本后,将全局路径配置到系统环境变量的 Path 属性中

vue项目系统架构是啥 介绍vue项目的整体架构_vue.js_02

3) 验证命令能否使用

任意处打开 CMD 窗口,并运行 Vue-CLI 的命令 vue -V,如果出现下图内容,代表 Vue-CLI 安装成功

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_03



二、使用老版本 Vue-CLI



有时候我们虽然安装的是新版本 Vue-CLI,但是我们却想使用老版本的命令,以及使用老版本的结构来创建项目,
这时候我们可以通过 NPM 安装一个老版本兼容包,命令如下:

npm i -g @vue/cli-init

安装后,我们就可以使用老版本命令,以老版本结构为基础创建项目了

1. 构建项目



1) 用老版本命令,来构建项目

在想创建项目的地方打开 CMD 窗口,运行命令 vue init webpack 文件夹名,这时会出现如下信息,代表正在拉取

老版本的模板,这里需要等一会

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_04

2) 设置项目名

拉取完模板后,会出现如下画面,让我们来设置项目名,一般文件夹名就是项目名,所以直接回车就可以

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_05

3) 设置项目描述

接下来,会提示让我们设置项目描述,不想用默认的就改一下,然后回车

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_06

4) 设置项目作者

接下来,会提示让我们设置项目作者,不想用默认的就改一下,然后回车

vue项目系统架构是啥 介绍vue项目的整体架构_Vue_07

5) 选择运行时版本还是模板编译版本

接下来,会提示让我们设置 Webpack 打包时使用的 Vue 版本,第一个是模板编译版,第二个是运行时版本,两者

区别已经讲过了,按照需要自己选就可以,按键盘的上下箭头就能进行选择,选中的会变成深色字体,选好按回车

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_08


此处我选择的是运行时版本

6) 是否安装 vue-router 插件

接下来,会提示让我们输入 Yn 来确定是否使用 vue-router 插件, 在 Vue 进行单页面应用开发时,vue-router

可以支持路由跳转功能,因为还没学所以我输入了 n

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_09

7) 是否安装 ESLint 插件

接下来,会提示让我们输入 Yn 来确定是否使用 ESLint 插件, ESLint 是一个静态语法检查的插件,它会按照

ECMAScript 规范 或 自定义的规范 对代码进行检查,此处我选 n

vue项目系统架构是啥 介绍vue项目的整体架构_Vue_10

8) 是否安装单元测试相关插件

接下来,会提示让我们输入 Yn 来确定是否使用单元测试相关插件,此处我选 n

vue项目系统架构是啥 介绍vue项目的整体架构_vue.js_11

9) 是否安装 Nightwatch 测试插件

接下来,会提示让我们输入 Yn 来确定是否使用 Nightwatch 测试插件,我选 n

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_12

10) 依赖的安装方式

接下来,会让我们选择以 npm 还是 yarn 的方式来安装创建项目所需的依赖,这里我选 npm 方式

vue项目系统架构是啥 介绍vue项目的整体架构_Vue_13

11) 等待项目构建完成

最后,只需要等待项目构建完成就可以了,最终会出现如下画面

vue项目系统架构是啥 介绍vue项目的整体架构_vue.js_14

12) 验证项目是否能正常启动

进到创建好的项目文件夹内,打开 package.json 文件,来看看可以使用的自定义脚本命令

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_15


Vue-CLI 一共帮我们创建好 3 个脚本命令

  • dev:用开发环境运行项目
  • start:用开发环境运行项目,其实就是调了一下 dev 脚本
  • build:用生产环境配置将项目打包

已经知道脚本作用了, 那我们直接运行一下看看效果, 在项目根目录通过 CMD 窗口, 运行npm run start

vue项目系统架构是啥 介绍vue项目的整体架构_vue.js_16


出现上图内容,说明 webpack-dev-server 已经启动了,我们按提示的地址,用浏览器访问一下:

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_17


能看到这个画面,就说明整个项目的初始构建已经完成了

2. 项目结构介绍



1) 目录整体介绍

vue项目系统架构是啥 介绍vue项目的整体架构_Vue_18

目录名

描述

build

项目打包的相关配置,都是一些对 webpack 进行配置的文件

config

定义构建相关的变量,主要是为了提供给 build 文件夹中的文件使用

node_modules

通过 npm 下载的项目中使用的依赖包

src

存放业务相关的代码和资源

src -> assets

存放图片之类的资源文件,这个目录中放的都是想被 webpack 的各种 loader 当作模块处理的文件

src -> components

存放项目中想被复用的公共 UI 组件

static

存放图片之类的资源文件,这个目录中的文件打包时会被 CopyWebpackPlugin 插件复制到出口根目录


2) 文件细分介绍

① build 目录内文件介绍

vue项目系统架构是啥 介绍vue项目的整体架构_vue项目系统架构是啥_19

文件名

描述

build.js

构建生产环境的代码

check-versions.js

检查 Node.js 环境 和 NPM 的版本

utils.js

构建辅助工具类,类中主要是通过运算,来动态生成 webpack 一些加载器的配置

vue-loader.conf.js

用来配置 sourceMap,项目打包后会对 JS 压缩,sourceMap 用来记录代码压缩前后的对应关系,方便调试

webpack.base.conf.js

webpack 配置文件 - 开发环境和生产环境的通用配置。将基础配置、开发环境和生产环境各对应一个文件比较易于维护

webpack.dev.conf.js

webpack 配置文件 - 开发环境的配置,webpack 打包过程中内容会与 webpack.base.conf.js 合并

webpack.prod.conf.js

webpack 配置文件 - 生产环境的配置,webpack 打包过程中内容会与 webpack.base.conf.js 合并

建议每个文件的内容都好好读一下,因为有 webpack 和 npm 的基础,这些配置文件慢慢看还是可以看懂的

② config 目录内文件介绍

vue项目系统架构是啥 介绍vue项目的整体架构_vue项目系统架构是啥_20

文件名

描述

dev.env.js

定义开发环境构建时要用的变量

prod.env.js

定义生产环境构建时要用的变量

index.js

定义开发环境和生产环境构建时都要使用的变量


③ src 目录内文件介绍

vue项目系统架构是啥 介绍vue项目的整体架构_vue项目系统架构是啥_21

文件名

描述

assets -> logo.png

Demo 中要用的图片,会被 webpack 的加载器当作模块处理,实际项目中的静态资源也建议放在该目录下

components -> HelloWorld.vue

Demo 中定义的组件,实际项目中的自定义组件也建议放在该目录下

App.vue

Demo 中的入口组件,实际项目中的入口组件也建议放在这个位置

main.js

Demo 中的入口文件,里面会定义 Vue 对象,并使用入口组件 App.vue

这些文件中的具体内容,就不详细分析了, 因为前面学了那么久的 Vue 知识,这些内容慢慢看,完全可以看懂

④ 其他文件

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_22

文件名

描述

static -> .gitkeep

目录内暂时没有内容,git 默认不会管理空目录,所以目录内习惯建一个空文件 .gitkeep,目的是让 git 管理

.babelrc

该文件用来配置 ES 语法适配插件 - Babel

.editorconfig

定义代码风格,使用 IDE 对代码进行格式化时,会参照该文件

.gitignore

用来定义可以被 git 忽略的文件

.postcssrc.js

用来配置 PostCSS 插件的,该插件用来做跨浏览器样式兼容的,能自动添加特殊浏览器的私有前缀

index.html

主页,现在都是单页面应用,所以该 html 唯一的作用就是来驱动 main.js

package.json

npm 配置文件

README.md

git 管理的项目,可以通过该文件来添加项目说明

通过 Vue-CLI 构建的是一个标准的单页面应用结构,其生成的各个文件,我相信慢慢看是可以读懂的,以后我们可
以按照项目的实际需求对各个配置文件进行修改,达到想要的效果

三、使用新版本 Vue-CLI



Vue-CLI 新版本构建出的项目是以无配置文件为目标,所以构建出来的项目不再有 webpack 相关的配置文件

1. 构建项目



1) 用新版本命令,来构建项目

在想创建项目的地方打开 CMD 窗口,运行命令 vue create 项目名

vue项目系统架构是啥 介绍vue项目的整体架构_vue项目系统架构是啥_23

2) 选择如何构建项目

此处有三个选项:

  • 使用 Vue 2 + Babel + ESLint 来构建项目
  • 使用 Vue 3 + Babel + ESLint 来构建项目
  • 手动配置

这个地方我选择的是手动配置,另外要注意 Vue2、Vue3 和 Vue-CLI2、Vue-CLI3 是不一样的,前者代表 Vue 的版

本,后者代表的是快速生成工具的版本

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_24

3) 选择具体配置

按空格选择想使用的插件,此处我选了 Vue 和 Babel

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_25

4) 选择 Vue 的版本

因为现在学的就是 Vue 2, 所以选择 2.x

vue项目系统架构是啥 介绍vue项目的整体架构_Vue_26

5) 选择 Babel 配置存放的位置

第一个选项代表单独存在一个文件内, 第二个选项代表存在 package.json 中,我选第一个

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_27

6) 是否保存本次配置

保存后,下次构建项目时除了 Vue2、Vue3、手动配置外,还会有本次的配置供选择,此处我输入 N 不保存

vue项目系统架构是啥 介绍vue项目的整体架构_vue项目系统架构是啥_28

7) 等待项目构建完成

看到如下画面,代表项目构建完成

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_29

8) 验证项目正确性

与 Vue-CLI2 一样,我们可以通过 package.json 文件来查找运行的脚本,也可以通过上图中最后提示的命令去运

行,为了方便,我直接使用上图中的命令 cd vue-cli3-studynpm run serve

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_30


上图代表 webpack-dev-server 启动成功,接下来通过浏览器访问提示的地址

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_31


2. 新版本和老版本结构对比



我们先来看下新版本创建的项目的整体结构

vue项目系统架构是啥 介绍vue项目的整体架构_配置文件_32

与老版本结构中的的重要目录对比

文件名

描述

src 及 内部目录

作用、结构与老版本时一样,没有变化

public

和老版本的 static 目录功能一样,不同的是新版本中 index.html 放到该目录内, 而老版本 index.html 在项目根目录

通过对比我们可以发现,新版本和老版本的整体结构差不多,但是关于项目构建的 buildconfig 两个目录不见
了,这也正是 Vue-CLI 新版本无配置文件特性的体现

3. 新版本中修改配置



新版本 Vue-CLI 构建的项目中,虽然没有生成配置文件,但是并不代表没有 webpack 的配置,只是这些配置隐藏起
来,让我们的项目看上去结构更简单而已,如果想修改 webpack 的配置,简单介绍一下常见的三种方式:

1) 图形界面

在项目根目录打开 CMD 窗口,运行命令 vue ui

vue项目系统架构是啥 介绍vue项目的整体架构_Vue_33


出现上图中的 HTTP 地址就代表启动成功,然后直接通过浏览器访问,就可以用图形化的方式修改配置:

vue项目系统架构是啥 介绍vue项目的整体架构_新版本_34


2) 添加配置文件

在项目的根目录添加配置文件 vue.config.js,该配置文件最后会与隐藏的 webpack 配置进行合并,具体的文件内容
建议参照 官方文档

3) 修改隐藏的配置文件

我们前面提到了,新版本 Vue-CLI 构建的项目,之所以不用生成 webpack 相关的配置文件,是因为在打包时有一套
隐藏的配置可以使用,该配置目录为 项目\node_modules\@vue\cli-service项目\node_modules\@vue\cli-service\lib
我们可以直接修改这两个目录下的文件来更改配置