這篇文章主要介紹下vue-cli3.0項目搭建,項目結構和配置等整理一下,分享給你們。javascript
1、介紹css
Vue CLI 是一個基於 Vue.js 進行快速開發的完整系統。有三個組件:html
CLI:@vue/cli
全局安裝的 npm 包,提供了終端裏的vue命令(如:vue create 、vue serve 、vue ui 等命令)前端
CLI 服務:@vue/cli-service
是一個開發環境依賴。構建於 webpack 和 webpack-dev-server 之上(提供 如:serve
、build
和 inspect
命令)vue
CLI 插件:給Vue 項目提供可選功能的 npm 包 (如: Babel/TypeScript 轉譯、ESLint 集成、unit和 e2e測試 等)java
2、安裝node
一、全局安裝過舊版本的 vue-cli
(1.x 或 2.x)要先卸載它,不然跳過此步:webpack
1 npm uninstall vue-cli -g //或者 yarn global remove vue-cli
二、Vue CLI 3須要 nodeJs ≥ 8.9 (官方推薦 8.11.0+,你可使用 nvm 或 nvm-windows在同一臺電腦中管理多個 Node 版本)。git
(2)下載安裝nodeJs,中文官方下載地址:http://nodejs.cn/download/ github
三、安裝@vue/cli(Vue CLI 3的包名稱由 vue-cli
改爲了 @vue/cli
)
1 cnpm install -g @vue/cli //yarn global add @vue/cli
vue -V 檢查vue版本號
3、使用
一、vue create 搭建新項目
(1)新建項目:
*官方提示:若是你在 Windows 上經過 minTTY 使用 Git Bash,交互提示符並不工做,必須經過 winpty vue.cmd create hello-world
啓動這個命令
vue create <Project Name> //文件名 不支持駝峯(含大寫字母)
具體操做以下:
首先,會提示你選擇一個preset(預設):
① 除最後兩個,其餘選項都是你此前保存的預設配置(以下圖第一個「 my-default」是我以前保存的預設配置,現在即可以直接用了):
若是沒有配置保存過,則只有如下兩個選項:
② default(babel,eslint):默認設置(直接enter)很是適合快速建立一個新項目的原型,沒有帶任何輔助功能的 npm包
③ Manually select features:自定義配置(按方向鍵 ↓)是咱們所須要的面向生產的項目,提供可選功能的 npm 包
手動選擇須要添加的配置項:
1 ? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection) 2 >( ) Babel //轉碼器,能夠將ES6代碼轉爲ES5代碼,從而在現有環境執行。 3 ( ) TypeScript// TypeScript是一個JavaScript(後綴.js)的超集(後綴.ts)包含並擴展了 JavaScript 的語法,須要被編譯輸出爲 JavaScript在瀏覽器運行,目前較少人再用 4 ( ) Progressive Web App (PWA) Support// 漸進式Web應用程序 5 ( ) Router // vue-router(vue路由) 6 ( ) Vuex // vuex(vue的狀態管理模式) 7 ( ) CSS Pre-processors // CSS 預處理器(如:less、sass) 8 ( ) Linter / Formatter // 代碼風格檢查和格式化(如:ESlint) 9 ( ) Unit Testing // 單元測試(unit tests) 10 ( ) E2E Testing // e2e(end to end) 測試
選擇完後直接enter,而後會提示你選擇對應功能的具體工具包,選擇本身擅長或者使用普遍的(方便遇到問題時百度),簡介以下:
①是否使用history router:
Vue-Router 利用了瀏覽器自身的hash 模式和 history 模式的特性來實現前端路由(經過調用瀏覽器提供的接口)
② css預處理器
主要爲css解決瀏覽器兼容、簡化CSS代碼 等問題
③ ESLint:
提供一個插件化的javascript代碼檢測工具,ESLint + Prettier //使用較多
④ 什麼時候檢測:
⑤ 單元測試 :
? Pick a unit testing solution: (Use arrow keys) > Mocha + Chai //mocha靈活,只提供簡單的測試結構,若是須要其餘功能須要添加其餘庫/插件完成。必須在全局環境中安裝 Jest //安裝配置簡單,容易上手。內置Istanbul,能夠查看到測試覆蓋率,相較於Mocha:配置簡潔、測試代碼簡潔、易於和babel集成、內置豐富的expect
⑥ 如何存放配置 :
⑦ 是否保存本次配置(y:記錄本次配置,而後須要你起個名; n:不記錄本次配置):
⑧ 搭建完成:
2,項目結構
精簡了不少,但仍是和vue2.0有不少區別的,基本的用法變化不是特別大
① vuex(狀態管理):
vue cli 2 中 :vuex是搭建完成後本身npm install的,並不包括在搭建過程當中。能夠看到vue cli 2的vuex默認文件夾(store)又包含了三個js文件:action(存放一些調用外部API接口的異步執行的的方法,而後commit mutations改變mutations 數據)、index(初始化mutations 數據,是store的出口)、mutations(處理數據邏輯的同步執行的方法的集合,Vuex中store數據改變的惟一方法commit mutations)
vue cli 3 中:vuex是包含在搭建過程供選擇的預設。vue cli 3 中默認只用一個store.js代替了原來的store文件夾中的三個js文件。action、mutations、state以及store 的 getters 的用法有不少
② router (路由):
vue cli 2 :「 router/index.js 」
vue cli 3:「router.js」(用法和作的事都同樣)
③ 去掉 static 、 新增 public 文件夾
vue cli 2 :static 是 webpack 默認存放靜態資源的文件夾,打包時會直接複製一份到dist文件夾不會通過 webpack 編譯
vue cli 3 :摒棄 static 新增了 public 。vue cli 3 中「靜態資源」兩種處理方式:
經webpack 處理:在 JavaScript 被導入或在 template/CSS 中經過「相對路徑」被引用的資源會被編譯並壓縮
不經webpack 處理:放置在 public
目錄下或經過絕對路徑被引用的資源將會「直接被拷貝」一份,不作任何編譯壓縮處理
④ index.html :
vue cli 2 :「index.html 」
vue cli 3 :「public/index.html 」此模板會被 html-webpack-plugin 處理的
⑤ src/views:
vue cli 3 的 src文件夾 新增 views文件夾 用來存放 「頁面」,區分 components(組件)
⑥ 去掉 build(根據config中的配置來定義規則)、config(配置不一樣環境的參數)文件夾 :
vue cli 3 中,這些配置 你能夠經過 命令行參數、或 vue.config.js
(在根目錄 新建一個 vue.config.js 同名文件)裏的 devServer 字段配置開發服務器
⑦ babel.config.js:
配置Babel 。Vue CLI 使用了 Babel 7 中的新配置格式 babel.config.js
。和 .babelrc
或 package.json
中的 babel
字段不一樣,這個配置文件不會使用基於文件位置的方案,而是會一致地運用到項目根目錄如下的全部文件,包括 node_modules
內部的依賴。官方推薦在 Vue CLI 項目中始終使用 babel.config.js
取代其它格式。
⑧ 根目錄的一些其餘文件的改變:
以前全部的配置文件都在vue create 搭建時preset預設 或者 後期能夠經過 命令參數 、 vue.config.js 中配置
根據須要在根目錄下新建 vue.config.js自行配置,eg:(簡單配置,更多配置詳情參見官網:https://cli.vuejs.org/zh/config/)
1 module.exports = { 2 baseUrl: '/',// 部署應用時的根路徑(默認'/'),也可用相對路徑(存在使用限制) 3 outputDir: 'dist',// 運行時生成的生產環境構建文件的目錄(默認''dist'',構建以前會被清除) 4 assetsDir: '',//放置生成的靜態資源(s、css、img、fonts)的(相對於 outputDir 的)目錄(默認'') 5 indexPath: 'index.html',//指定生成的 index.html 的輸出路徑(相對於 outputDir)也能夠是一個絕對路徑。 6 pages: {//pages 裏配置的路徑和文件名在你的文檔目錄必須存在 不然啓動服務會報錯 7 index: {//除了 entry 以外都是可選的 8 entry: 'src/index/main.js',// page 的入口,每一個「page」應該有一個對應的 JavaScript 入口文件 9 template: 'public/index.html',// 模板來源 10 filename: 'index.html',// 在 dist/index.html 的輸出 11 title: 'Index Page',// 當使用 title 選項時,在 template 中使用:<title><%= htmlWebpackPlugin.options.title %></title> 12 chunks: ['chunk-vendors', 'chunk-common', 'index'] // 在這個頁面中包含的塊,默認狀況下會包含,提取出來的通用 chunk 和 vendor chunk 13 }, 14 subpage: 'src/subpage/main.js'//官方解釋:當使用只有入口的字符串格式時,模板會被推導爲'public/subpage.html',若找不到就回退到'public/index.html',輸出文件名會被推導爲'subpage.html' 15 }, 16 lintOnSave: true,// 是否在保存的時候檢查 17 productionSourceMap: true,// 生產環境是否生成 sourceMap 文件 18 css: { 19 extract: true,// 是否使用css分離插件 ExtractTextPlugin 20 sourceMap: false,// 開啓 CSS source maps 21 loaderOptions: {},// css預設器配置項 22 modules: false// 啓用 CSS modules for all css / pre-processor files. 23 }, 24 devServer: {// 環境配置 25 host: 'localhost', 26 port: 8080, 27 https: false, 28 hotOnly: false, 29 open: true, //配置自動啓動瀏覽器 30 proxy: {// 配置多個代理(配置一個 proxy: 'http://localhost:4000' ) 31 '/api': { 32 target: '<url>', 33 ws: true, 34 changeOrigin: true 35 }, 36 '/foo': { 37 target: '<other_url>' 38 } 39 } 40 }, 41 pluginOptions: {// 第三方插件配置 42 // ... 43 } 44 };
vue-cli升級到3以後,減小了不少的配置文件,將全部的配置項都濃縮到了vue.config.js這個文件中,因此學懂並會用vue.config.js文件很重要。
這裏有一篇關於vue-cli3的全面配置的文章供你們參考,http://www.javashuo.com/article/p-nhkozbxx-w.html
熱更新配置
在vue.config.js添加
1 chainWebpack: config => { 2 // 修復HMR 3 config.resolve.symlinks(true); 4 },
修改css部分熱更新還須要註釋掉 //extract: true,
css: { //extract: true,// 是否使用css分離插件 ExtractTextPlugin sourceMap: false,// 開啓 CSS source maps loaderOptions: {},// css預設器配置項 modules: false// 啓用 CSS modules for all css / pre-processor files. },
這樣,熱更新配置就完成了!
三、vue ui 圖形化界面建立項目
vue ui
這個就很少介紹了,可視化界面建立新項目更直觀,也能夠添加一些項目依賴,插件和配置。
文章就介紹到這裏,但願能幫你們對於vue-cli3.0有更深的理解。