Vue学习笔记(九) Vue CLI

简介: Vue学习笔记(九) Vue CLI


1、简介


Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,它包括三个独立的部分:

  • CLI:一个全局安装的 npm 包,提供在终端里使用的命令
  • CLI 服务:一个局部安装在使用 @vue/cli 创建的项目中的 npm 包
  • CLI 插件:CLI 插件可以为项目提供可选功能的 npm 包

这里先附上 Vue CLI 的官方文档:https://cli.vuejs.org/zh/guide/


2、安装


在 3.x 版本之后,cli 从原来的 vue-cli 更名为 @vue/cli

如果你之前安装过 vue-cli,那么需要先卸载

> npm uninstall -g vue-cli

然后才能安装 @vue/cli

> npm install -g @vue/cli

安装成功之后,可以使用如下命令验证安装是否成功

> vue -V


3、单文件组件


在正式讲解怎么使用 @vue/cli 搭建项目前,我们先来了解一下什么是单文件组件(SFC)

很多时候,我们可以使用 Vue.component() 定义全局组件,然后用 new Vue() 在页面指定一个容器元素

除了这种方法之外,我们还可以使用一个拓展名为 .vue 的文件定义组件,这种方法我们称为单文件组件

每个 .vue 文件包含三种类型的顶级语言块:<template><script><style>,也支持自定义块

  • 模板 <template>

每个 .vue 文件最多包含一个 <template> 块,用于写模板(HTML 及其拓展)

  • 脚本 <script>

每个 .vue 文件最多包含一个 <script> 块,用于写逻辑(JavaScript 及其拓展)

任何匹配 .js 文件的 webpack 规则都将会运用到这个 <script> 块的内容中

  • 样式 <style>

一个 .vue 文件可以包含多个 <style> 标签,用于写样式(CSS 及其拓展)

任何匹配 .css 文件的 webpack 规则都将会运用到这个 <style> 块的内容中

一个简单的例子如下:

<!-- Hello.vue -->
<template>
    <p>{{ greeting }}</p>
</template>
<script>
export default {
    data: function () {
        return {
            greeting: 'Hello'
        }
    }
}
</script>
<style>
p {
    font-size: 10px;
    text-align: center;
}
</style>


4、快速原型开发


我们可以使用 vue servevue build 命令对单个 .vue 文件进行快速原型开发

不过在此之前,我们需要额外安装一个全局拓展

> npm install -g @vue/cli-service-global


(1)vue serve


vue serve 命令用于在开发环境下零配置为 .js.vue 文件启动一个服务器

> vue serve --help
Usage: serve [options] [entry]
serve a .js or .vue file in development mode with zero config
Options:
  -o, --open  Open browser
  -c, --copy  Copy local url to clipboard
  -h, --help  output usage information


该命令的默认入口文件为 main.jsindex.jsApp.vueapp.vue ,当然也可以显式指定

我们可以到刚才创建的 Hello.vue 文件的文件夹下运行如下命令

> vue serve Hello.vue
DONE Compiled successfully in 5267ms
  App running at:
  - Local: http://localhost:8080
  - Network: http://172.20.10.12:8080
  Note that the development build is not optimized.
  To create a production build, run `npm run build`.

这时,我们在浏览器中访问 http://localhost:8080 即可看到我们的应用


(2)vue build


vue build 命令用于在生产环境模式下零配置构建一个 .js.vue 文件

> vue build --help
Usage: build [options] [entry]
build a .js or .vue file in production mode with zero config
Options:
  -t, --target <target>  Build target (app | lib | wc | wc-async, default: app)
  -n, --name <name>      name for lib or web-component mode (default: entry filename)
  -d, --dest <dir>       output directory (default: dist)
  -h, --help             output usage information


5、创建项目


  1. 我们可以使用 vue create project-name 命令创建一个项目
> vue create mini-project


  1. 首先,选择一个预设的模板,这里有两个选项(单选):
  • default (babel, eslint):默认设置,适合创建一个简单的项目
  • Manually select features:手动配置,适合在生产环境中使用(绝大多数情况下需要选择这个)


我们选择 Manually select features

? Please pick a preset: (Use arrow keys)
  default (babel, eslint)
> Manually select features
  1. 然后,选择需要使用的特性,这里有九个选项(多选):
  • Babel:JavaScript 编译器(默认已选择)
  • TypeScript:JavaScript 超集
  • Progressive Web App (PWA) Support:渐进式 Web 应用
  • Router:Vue 路由
  • Vuex:Vue 状态管理
  • CSS Pre-processors:CSS 预处理器
  • Linter / Formatter:代码风格检查和代码格式化(默认已选择)
  • Unit Testing:单元测试
  • E2E Testing:端到端测试


我们选择 Babel、Router、Vuex、CSS Pre-processors、Linter / Formatter

? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)
  (*) Babel
  ( ) TypeScript
  ( ) Progressive Web App (PWA) Support
  (*) Router
  (*) Vuex
> (*) CSS Pre-processors
  (*) Linter / Formatter
  ( ) Unit Testing
  ( ) E2E Testing
  1. 接着,为 Router 选择路由模式,这里有两个选项(Y/n):
  • Y:使用 history mode,URL 中不带有 # 符号,但是需要后台配置支持
  • n:使用 hash mode,URL 中会带有 # 符号,但 # 符号并不包含在 HTTP 请求中


我们选择 n

? Use history mode for router? (Requires proper server setup for index fallback in p
  1. 接着,选择 CSS Pre-processors,这里有四个选项(单选)
  • Sass/SCSS (with dart-sass)
  • Sass/SCSS (with node-sass)
  • Less
  • Stylus


我们选择 Less

? Pick a CSS Pre-processors (PostCSS, Autoprefixer ans CSS Modules are supported by default): (Use arrow keys)
  Sass/SCSS (with dart-sass)
  Sass/SCSS (with node-sass)
> Less
  Stylus
  1. 接着,选择 Linter / Formatter,这里有四个选项(单选):
  • ESLint with error prevention only
  • ESLint + Airbnb config
  • ESLint + Standard config
  • ESLint + Prettier


我们选择 ESLint + Standard config

? Pick a linter / formatter config: (Use arrow keys)
  ESLint with error prevention only
  ESLint + Airbnb config
> ESLint + Standard config
  ESLint + Prettier
  1. 接着,选择在什么时间进行检测,这里有两个选项(多选):
  • Lint on save:保存时检测
  • Lint and fix on commit:提交时检测


我们选择 Lint on save

? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)
> (*) Lint on save
  ( ) Lint and fix on commit
  1. 接着,选择在什么位置保存配置文件,这里有两个选项(单选):
  • In dedicated config files:独立保存为 config 文件
  • In package.json:全部保存在 package.json 文件


我们选择 In dedicated config files

? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? (Use arrow  keys)
> In dedicated config files
  In package.json
  1. 最后,选择是否保存本次配置以便于下次使用,这里有两个选项(y/N):
  • y:保存配置
  • N:不保存配置


我们选择 N

? Save this as a preset for future projects? (y/N)

之后,就可以等待 @vue/cli 为我们创建项目啦~


6、项目结构


在创建成功之后,我们可以利用命令 cd mini-project 进入目录,利用命令 npm run serve 运行项目

这些就不细说啦,具体用法可以参考一下 README.md 文件(在根目录下)

下面我们主要看看利用 @vue/cli 创建的项目的目录结构是怎么样的

+ mini-project
  + node_modules(存放第三方模块)
  + public(存放静态文件)
    - favicon.ico(图标)
    - index.html(页面模板)
  + src(我们自己写的文件一般放在这个文件夹下)
    + assets(存放资源文件)
    + components(存放公共组件)
    + views(存放视图组件)
    - App.vue(页面入口文件)
    - main.js(程序入口文件)
    - router.js(路由管理:Router)
    - store.js(状态管理:Vuex)
  - package.json(项目配置文件)
  - package-lock.json(项目配置文件)
  - babel.config.js(babel 配置文件)
  - postcss.config(postcss 配置文件)
  - README.md(项目说明文档)
  - ...(其它配置文件)


注意

在 3.x 版本之后,CLI 不会自动创建配置文件,这是因为项目在初始化的时候已经配置好绝大部分配置

如果还需要手动配置,那么我们就要到根目录下创建一个名为 vue.config.js 的文件

vue.config.js 是一个可选的配置文件,如果项目的根目录中存在这个文件,则会被 @vue/cli-service 自动加载

但是由于篇幅问题,这里不会作太多的介绍,详细内容请参考官方文档:https://cli.vuejs.org/zh/config/


文章知识点与官方知识档案匹配,可进一步学习相关知识

目录
相关文章
|
8天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
8天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
8天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
8天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
7天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
9天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
7天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1050 0
|
9天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
14天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发