VueCli

什么是 vue-cli

vue-cli 官方提供的一个脚手架(预先定义好的目录结构及基础代码,咱们在创建 Maven 项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架)用于快速生成一个 vue 的项目模板

  • 统一的目录结构
  • 本地调试
  • 热部署
  • 单元测试
  • 集成打包上线

安装

环境准备

  • Node.js(>= 6.x,首选 8.x)
  • git

安装 Node.js

请自行前往 http://nodejs.cn/download 官网下载安装,此处不再赘述

安装 vue-cli

1 安装 vue-cli
2 npm install vue-cli -g --registry=https://registry.npm.taobao.org
3 # 输出如下
4 npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
5 C:UsersAdministratorAppDataRoaming
pmvue -> C:UsersAdministratorAppDataRoaming
pm
ode_modulesvue-cliinvue
6 C:UsersAdministratorAppDataRoaming
pmvue-init -> C:UsersAdministratorAppDataRoaming
pm
ode_modulesvue-cliinvue-init
7 C:UsersAdministratorAppDataRoaming
pmvue-list -> C:UsersAdministratorAppDataRoaming
pm
ode_modulesvue-cliinvue-list
8 + vue-cli@2.9.6
9 added 241 packages from 206 contributors in 24.481s
安装 vue-cli

测试是否安装成功

 1 # 查看可以基于哪些模板创建 vue 应用程序,通常我们选择 webpack
 2 vue list
 3 # 输出如下
 4 Available official templates:
 5 ★  browserify - A full-featured Browserify + vueify setup with hot-reload, linting & unit testing.
 6 ★  browserify-simple - A simple Browserify + vueify setup for quick prototyping.
 7 ★  pwa - PWA template for vue-cli based on the webpack template
 8 ★  simple - The simplest possible Vue setup in a single HTML file
 9 ★  webpack - A full-featured Webpack + vue-loader setup with hot reload, linting, testing & css extraction.
10 ★  webpack-simple - A simple Webpack + vue-loader setup for quick prototyping.
vue list

第一个 vue-cli 应用程序

创建一个基于 webpack 模板的 vue 应用程序

 1 # 这里的 hello-vue-cli 是项目名称,可以根据自己的需求起名
 2 vue init webpack hello-vue-cli
 3 # 输出如下
 4 ? Project name hello-vue-cli
 5 ? Project description A Vue.js project
 6 ? Author Lusifer <topsale@vip.qq.com>
 7 ? Vue build standalone
 8 ? Install vue-router? No
 9 ? Use ESLint to lint your code? No
10 ? Set up unit tests No
11 ? Setup e2e tests with Nightwatch? No
12 ? Should we run `npm install` for you after the project has been created? (recommended) no
13    vue-cli · Generated "hello-vue-cli".
14 # Project initialization finished!
15 # ========================
16 To get started:
17   cd hello-vue-cli
18   npm install (or if using yarn: yarn)
19   npm run dev
20 Documentation can be found at https://vuejs-templates.github.io/webpack
vue init webpack hello-vue-cli

说明

  • Project name:项目名称,默认 回车 即可
  • Project description:项目描述,默认 回车 即可
  • Author:项目作者,默认 回车 即可
  • Install vue-router:是否安装 vue-router,选择 n 不安装(后期需要再手动添加)
  • Use ESLint to lint your code:是否使用 ESLint 做代码检查,选择 n 不安装(后期需要再手动添加)
  • Set up unit tests:单元测试相关,选择 n 不安装(后期需要再手动添加)
  • Setup e2e tests with Nightwatch:单元测试相关,选择 n 不安装(后期需要再手动添加)
  • Should we run npm install for you after the project has been created:创建完成后直接初始化,选择 n,我们手动执行

初始化并运行

 1 # 初始化
 2 cd hello-vue-cli
 3 npm install --registry=https://registry.npm.taobao.org
 4 # 输出如下
 5 npm WARN deprecated browserslist@2.11.3: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
 6 npm WARN deprecated bfj-node4@5.3.1: Switch to the `bfj` package for fixes and new features!
 7 npm WARN deprecated browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
 8 > core-js@2.6.9 postinstall D:WorkspaceStudyotherhello-vue-cli
ode_modulescore-js
 9 > node scripts/postinstall || echo "ignore"
10 Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
11 The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
12 > https://opencollective.com/core-js
13 > https://www.patreon.com/zloirock
14 Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
15 > uglifyjs-webpack-plugin@0.4.6 postinstall D:WorkspaceStudyotherhello-vue-cli
ode_moduleswebpack
ode_modulesuglifyjs-webpack-plugin
16 > node lib/post_install.js
17 npm notice created a lockfile as package-lock.json. You should commit this file.
18 npm WARN ajv-keywords@3.4.1 requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.
19 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modulesfsevents):
20 npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
21 added 1207 packages from 667 contributors and audited 11765 packages in 81.571s
22 found 10 vulnerabilities (6 moderate, 4 high)
23   run `npm audit fix` to fix them, or `npm audit` for details
24 # 运行
25 npm run dev
26 # 输出如下
27  DONE  Compiled successfully in 3226ms                                   
28  I  Your application is running here: http://localhost:8080
初始化

安装并运行成功后在浏览器输入:http://localhost:8080

目录结构

  • build 和 config:WebPack 配置文件
  • node_modules:用于存放 npm install 安装的依赖文件
  • src:项目源码目录
  • static:静态资源文件
  • .babelrc:Babel 配置文件,主要作用是将 ES6 转换为 ES5
  • .editorconfig:编辑器配置
  • eslintignore:需要忽略的语法检查配置文件
  • .gitignore:git 忽略的配置文件
  • .postcssrc.js:css 相关配置文件,其中内部的 module.exports 是 NodeJS 模块化语法
  • index.html:首页,仅作为模板页,实际开发时不使用
  • package.json:项目的配置文件
    • name:项目名称
    • version:项目版本
    • description:项目描述
    • author:项目作者
    • scripts:封装常用命令
    • dependencies:生产环境依赖
    • devDependencies:开发环境依赖

源码目录

  1. App.vue
  2. main.js
  3. ├─assets
  4. logo.png
  5. └─components
  6. HelloWorld.vue

main.js

项目的入口文件,我们知道所有的程序都会有一个入口

 1 // The Vue build version to load with the `import` command
 2 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
 3 import Vue from 'vue'
 4 import App from './App'
 5 Vue.config.productionTip = false
 6 /* eslint-disable no-new */
 7 new Vue({
 8 el: '#app',
 9 components: { App },
10 template: '<App/>'
11 })
main.js
  • import Vue from 'vue':ES6 写法,会被转换成 require("vue"); (require 是 NodeJS 提供的模块加载器)
  • import App from './App':意思同上,但是指定了查找路径,./ 为当前目录
  • Vue.config.productionTip = false:关闭浏览器控制台关于环境的相关提示
  • new Vue({...}):实例化 Vue
    • el: '#app':查找 index.html 中 id 为 app 的元素
    • template: '<App/>':模板,会将 index.html 中 <div id="app"></div> 替换为 <App />
    • components: { App }:引入组件,使用的是 import App from './App' 定义的 App 组件

App.vue

组件模板

 1 <template>
 2   <div id="app">
 3     <img src="./assets/logo.png">
 4     <HelloWorld/>
 5   </div>
 6 </template>
 7 <script>
 8 import HelloWorld from './components/HelloWorld'
 9 export default {
10   name: 'App',
11   components: {
12     HelloWorld
13   }
14 }
15 </script>
16 <style>
17 #app {
18   <!-- 字体 -->
19   font-family: 'Avenir', Helvetica, Arial, sans-serif;
20   <!-- 文字平滑效果 -->
21   -webkit-font-smoothing: antialiased;
22   -moz-osx-font-smoothing: grayscale;
23   text-align: center;
24   color: #2c3e50;
25   margin-top: 60px;
26 }
27 </style>
组件模板
  • template:HTML 代码模板,会替换 <App /> 中的内容
  • import HelloWorld from './components/HelloWorld':引入 HelloWorld 组件,用于替换 template 中的 <HelloWorld/>
  • export default{...}:导出 NodeJS 对象,作用是可以通过 import 关键字导入
    • name: 'App':定义组件的名称
    • components: { HelloWorld }:定义子组件

HelloWorld.vue

基本同上,不解释..

关于 <style scoped> 的说明:CSS 样式仅在当前组件有效,声明了样式的作用域

博客园:https://www.cnblogs.com/xianquan
Copyright ©2020 l-coil
【转载文章务必保留出处和署名,谢谢!】
【推广】 免费学中医,健康全家人
原文地址:https://www.cnblogs.com/xianquan/p/12491353.html