vue 3.0 項目搭建

這篇文章主要介紹下vue-cli3.0項目搭建嘉抒,項目結(jié)構(gòu)和配置等整理一下鲫骗,分享給大家。

一眶蕉、介紹

Vue CLI 是一個基于 Vue.js 進行快速開發(fā)的完整系統(tǒng)。有三個組件:

CLI@vue/cli 全局安裝的 npm 包唧躲,提供了終端里的vue命令(如:vue create 造挽、vue serve 碱璃、vue ui 等命令)

CLI 服務@vue/cli-service是一個開發(fā)環(huán)境依賴。構(gòu)建于 webpack 和 webpack-dev-server 之上(提供 如:serve饭入、buildinspect 命令)

CLI 插件:給Vue 項目提供可選功能的 npm 包 (如: Babel/TypeScript 轉(zhuǎn)譯嵌器、ESLint 集成、unit和 e2e測試 等)

二谐丢、安裝

1嘴秸、全局安裝過舊版本的 vue-cli(1.x 或 2.x)要先卸載它,否則跳過此步:

npm uninstall vue-cli -g //或者 yarn global remove vue-cli

2庇谆、Vue CLI 3需要 nodeJs ≥ 8.9 (官方推薦 8.11.0+,你可以使用 nvm 或 nvm-windows在同一臺電腦中管理多個 Node 版本)凭疮。

(2)下載安裝nodeJs饭耳,中文官方下載地址:http://nodejs.cn/download/

3、安裝@vue/cli(Vue CLI 3的包名稱由 vue-cli 改成了 @vue/cli

cnpm install -g @vue/cli //yarn global add @vue/cli

vue -V 檢查vue版本號

三执解、使用

1寞肖、vue create 搭建新項目

(1)新建項目:

*官方提示:如果你在 Windows 上通過 minTTY 使用 Git Bash,交互提示符并不工作衰腌,必須通過 winpty vue.cmd create hello-world 啟動這個命令

vue create <Project Name> //文件名 不支持駝峰(含大寫字母)

具體操作如下:

首先新蟆,會提示你選擇一個preset(預設):

① 除最后兩個其他選項都是你此前保存的預設配置(如下圖第一個“ my-default”是我之前保存的預設配置右蕊,如今便可以直接用了):

image.png

如果沒有配置保存過琼稻,則只有以下兩個選項:

② default(babel,eslint):默認設置(直接enter)非常適合快速創(chuàng)建一個新項目的原型饶囚,沒有帶任何輔助功能的 npm包

③ Manually select features:自定義配置是我們所需要的面向生產(chǎn)的項目帕翻,提供可選功能的 npm 包(按方向鍵 ↓,a全選萝风,i反選嘀掸,空格單選)

image.png

上邊是我選擇的默認配置

手動選擇需要添加的配置項:

 ? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection) 
 1 ( ) Choose Vue version // 選擇vue 版本
 2 ( ) Babel //轉(zhuǎn)碼器,可以將ES6代碼轉(zhuǎn)為ES5代碼规惰,從而在現(xiàn)有環(huán)境執(zhí)行睬塌。 
 3 ( ) TypeScript// TypeScript是一個JavaScript(后綴.js)的超集(后綴.ts)包含并擴展了 JavaScript 的語法,需要被編譯輸出為 JavaScript在瀏覽器運行歇万,目前較少人再用
 4 ( ) Progressive Web App (PWA) Support// 漸進式Web應用程序
 5 ( ) Router // vue-router(vue路由)
 6 ( ) Vuex // vuex(vue的狀態(tài)管理模式)
 7 ( ) CSS Pre-processors // CSS 預處理器(如:less揩晴、sass)
 8 ( ) Linter / Formatter // 代碼風格檢查和格式化(如:ESlint)
 9 ( ) Unit Testing // 單元測試(unit tests)
10 ( ) E2E Testing // e2e(end to end) 測試</pre>

選擇完后直接enter,然后會提示你選擇對應功能的具體工具包贪磺,選擇自己擅長或者使用廣泛的(方便遇到問題時百度)文狱,簡介如下(一下是我的選擇):

  1. 選擇 vue 版本


    image.png

2 是否使用history router:
hash路由與hsitory路由主要差別:
(1)在url顯示: hash有#很Low 坟募; history 無#好看
(2)回車刷新: hash 可以加載到hash值對應頁面 啡邑; history一般就是404掉了
(3)支持版本: hash支持低版本瀏覽器和IE瀏覽器 ; history是HTML5新推出的API

image.png

可以百度學習 (hash模式和history模式的不同 )
3 css預處理器
主要為css解決瀏覽器兼容勇哗、簡化CSS代碼 等問題
image.png

我選擇的是Sass/Scss(with dart-sass)
node-sass是自動編譯實時的,dart-sass需要保存后才會生效苏研。sass 官方目前主力推dart-sass 最新的特性都會在這個上面先實現(xiàn)等浊。(該回答參考http://www.imooc.com/qadetail/318730

4 ESLint:

提供一個插件化的javascript代碼檢測工具,ESLint + Prettier //使用較多

image.png

5 何時檢測:建議選擇保存就檢測摹蘑,等到commit的時候筹燕,問題可能都已經(jīng)積累很多了。

image.png

6 單元測試 :


image.png

Mocha + Chai //mocha靈活,只提供簡單的測試結(jié)構(gòu)衅鹿,如果需要其他功能需要添加其他庫/插件完成撒踪。必須在全局環(huán)境中安裝
Jest //安裝配置簡單,容易上手大渤。內(nèi)置Istanbul制妄,可以查看到測試覆蓋率,相較于Mocha:配置簡潔泵三、測試代碼簡潔耕捞、易于和babel集成、內(nèi)置豐富的expect

7 如何存放配置 :

image.png

若選擇獨立放置文件 項目會有單獨如下圖所示的幾件文件烫幕。


image.png

8 是否保存本次配置(y:記錄本次配置俺抽,然后需要你起個名; n:不記錄本次配置):


image.png

9 搭建完成:

image.png

image.png

2,項目結(jié)構(gòu)


image.png

vue3.0精簡了很多较曼,但還是和vue2.0有很多區(qū)別的磷斧,基本的用法變化不是特別大

① vuex(狀態(tài)管理):

vue cli 2 中 :vuex是搭建完成后自己npm install的,并不包括在搭建過程中捷犹⊥ィ可以看到vue cli 2的vuex默認文件夾(store)又包含了三個js文件:action(存放一些調(diào)用外部API接口的異步執(zhí)行的的方法,然后commit mutations改變mutations 數(shù)據(jù))伏恐、index(初始化mutations 數(shù)據(jù)孩哑,是store的出口)mutations(處理數(shù)據(jù)邏輯的同步執(zhí)行的方法的集合,Vuex中store數(shù)據(jù)改變的唯一方法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 默認存放靜態(tài)資源的文件夾,打包時會直接復制一份到dist文件夾不會經(jīng)過 webpack 編譯
vue cli 3 :摒棄 static 新增了 public 斗幼。vue cli 3 中“靜態(tài)資源”兩種處理方式:
經(jīng)webpack 處理:在 JavaScript 被導入或在 template/CSS 中通過“相對路徑”被引用的資源會被編譯并壓縮
不經(jīng)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文件夾 用來存放 “頁面”,區(qū)分 components(組件)

⑥ 去掉 build(根據(jù)config中的配置來定義規(guī)則)蜕窿、config(配置不同環(huán)境的參數(shù))文件夾 :
vue cli 3中谋逻,這些配置 你可以通過 命令行參數(shù)呆馁、或 vue.config.js (在根目錄 新建一個 vue.config.js 同名文件)里的 devServer 字段配置開發(fā)服務器

⑦ babel.config.js:
  配置Babel 。Vue CLI 使用了 Babel 7 中的新配置格式 babel.config.js毁兆。和 .babelrcpackage.json 中的 babel 字段不同浙滤,這個配置文件不會使用基于文件位置的方案,而是會一致地運用到項目根目錄以下的所有文件气堕,包括 node_modules 內(nèi)部的依賴纺腊。官方推薦在 Vue CLI 項目中始終使用 babel.config.js 取代其它格式。

⑧ 根目錄的一些其他文件的改變:
  之前所有的配置文件都在vue create 搭建時preset預設 或者 后期可以通過 命令參數(shù) 茎芭、 vue.config.js 中配置
根據(jù)需要在根目錄下新建 vue.config.js自行配置揖膜,eg:(簡單配置,更多配置詳情參見官網(wǎng):https://cli.vuejs.org/zh/config/

module.exports = {
  baseUrl: '/',// 部署應用時的根路徑(默認'/'),也可用相對路徑(存在使用限制)
  outputDir: 'dist',// 運行時生成的生產(chǎn)環(huán)境構(gòu)建文件的目錄(默認''dist''梅桩,構(gòu)建之前會被清除)
  assetsDir: '',//放置生成的靜態(tài)資源(s壹粟、css、img摘投、fonts)的(相對于 outputDir 的)目錄(默認'')
  indexPath: 'index.html',//指定生成的 index.html 的輸出路徑(相對于 outputDir)也可以是一個絕對路徑。
  pages: {//pages 里配置的路徑和文件名在你的文檔目錄必須存在 否則啟動服務會報錯
    index: {//除了 entry 之外都是可選的
      entry: 'src/index/main.js',// page 的入口,每個“page”應該有一個對應的 JavaScript 入口文件
      template: 'public/index.html',// 模板來源
      filename: 'index.html',// 在 dist/index.html 的輸出
      title: 'Index Page',// 當使用 title 選項時,在 template 中使用:<title><%= htmlWebpackPlugin.options.title %></title>
      chunks: ['chunk-vendors', 'chunk-common', 'index'] // 在這個頁面中包含的塊虹蓄,默認情況下會包含,提取出來的通用 chunk 和 vendor chunk
    },
    subpage: 'src/subpage/main.js'//官方解釋:當使用只有入口的字符串格式時,模板會被推導為'public/subpage.html',若找不到就回退到'public/index.html',輸出文件名會被推導為'subpage.html'
  },
  lintOnSave: true,// 是否在保存的時候檢查
  productionSourceMap: true,// 生產(chǎn)環(huán)境是否生成 sourceMap 文件
  css: {
    extract: true,// 是否使用css分離插件 ExtractTextPlugin
    sourceMap: false,// 開啟 CSS source maps
    loaderOptions: {},// css預設器配置項
    modules: false// 啟用 CSS modules for all css / pre-processor files.
  },
  devServer: {// 環(huán)境配置
    host: 'localhost',
    port: 8080,
    https: false,
    hotOnly: false,
    open: true, //配置自動啟動瀏覽器
    proxy: {// 配置多個代理(配置一個 proxy: 'http://localhost:4000' )
      '/api': {
        target: '<url>',
        ws: true,
        changeOrigin: true
      },
     // '/foo': {
     //  target: '<other_url>'
     // }
    }
  },
  pluginOptions: {// 第三方插件配置
    // ...
  }
};

vue-cli升級到3之后犀呼,減少了很多的配置文件,將所有的配置項都濃縮到了vue.config.js這個文件中薇组,所以學懂并會用vue.config.js文件很重要外臂。

這里有一篇關于vue-cli3的全面配置的文章供大家參考,https://segmentfault.com/a/1190000017008697

熱更新配置

在vue.config.js添加

chainWebpack: config => {
  // 修復HMR
  config.resolve.symlinks(true);
},

修改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.
},

這樣律胀,熱更新配置就完成了宋光!

3、vue ui 圖形化界面創(chuàng)建項目

vue ui
  這個就不多介紹了炭菌,可視化界面創(chuàng)建新項目更直觀罪佳,也可以添加一些項目依賴,插件和配置黑低。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赘艳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子克握,更是在濱河造成了極大的恐慌蕾管,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菩暗,死亡現(xiàn)場離奇詭異掰曾,居然都是意外死亡,警方通過查閱死者的電腦和手機停团,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門旷坦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掏熬,“玉大人,你說我怎么就攤上這事塞蹭∧踅” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵番电,是天一觀的道長岗屏。 經(jīng)常有香客問我,道長漱办,這世上最難降的妖魔是什么这刷? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮娩井,結(jié)果婚禮上暇屋,老公的妹妹穿的比我還像新娘。我一直安慰自己洞辣,他們只是感情好咐刨,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扬霜,像睡著了一般定鸟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上著瓶,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天联予,我揣著相機與錄音,去河邊找鬼材原。 笑死沸久,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的余蟹。 我是一名探鬼主播卷胯,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼威酒!你這毒婦竟也來了诵竭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤兼搏,失蹤者是張志新(化名)和其女友劉穎卵慰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佛呻,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡裳朋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吓著。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲤嫡。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡送挑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暖眼,到底是詐尸還是另有隱情惕耕,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布诫肠,位于F島的核電站司澎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏栋豫。R本人自食惡果不足惜挤安,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丧鸯。 院中可真熱鬧蛤铜,春花似錦、人聲如沸丛肢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜂怎。三九已至穆刻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間派敷,已是汗流浹背蛹批。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工撰洗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留篮愉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓差导,卻偏偏與公主長得像试躏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子设褐,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348