Vue-CLI 的安裝和使用

Vue-CLI (Vue 腳手架) 介紹

  • Vue-CLI 是一個專門為單頁面應用快速搭建繁雜的腳手架, 它可以輕松的創(chuàng)建新的應用程序而且可用于自動生成Vue和webpack的項目模板

  • 如果只是簡單的寫幾個 Vue 的 Demo 程序, 那么不需要 Vue-CLI

  • 如果你在開發(fā)大型項目, 那么你需要, 并且必然需要使用 Vue-CLI

  • Vue-CLI 使用前提

    • Node.js
    • Webpack

安裝 Vue 腳手架

Vue-CLI 的安裝

npm install -g @vue/cli
  • 注意:
    • 上面安裝的是 Vue-CLI 的最新版本
    • 如果想按照 Vue-CLI2 的方式初始化項目時是不可以的
    • 如果使用 npm 安裝比較慢的話可以使用 cnpm 進行安裝

cnpm 安裝

由于國內(nèi)直接使用 npm 的官方鏡像時非常慢的, 所以推薦使用淘寶 npm 鏡像

npm install -g cnpm --registry="https://registry.npm.taobao.org"

安裝之后就可以使用 cnpm 命令來安裝模塊了

拉取 2.x 模版 (Vue-CLI 舊版本)

Vue-CLI 3 和舊版本使用了相同的 Vue 命令, 所以 Vue-CLI 2 被覆蓋了, 如果你仍想使用舊版本的 vue init 功能, 你可以全局安裝一個橋接工具:

npm install -g @vue/cli-init
# 'vue init' 的運行效果將會跟 'Vue-CLI@2.x' 相同

Vue-CLI 的使用

Vue-CLI 2

初始化項目

vue init webpack 項目名稱
image
  • Project name: 項目名稱(一般和初始化的項目名稱一致)
  • Project description: 項目描述
  • Author: 作者(姓名, 郵箱)
  • Vue build: 構(gòu)建項目時使用 Runtime-Compiler 還是 Runtime-only
  • Install vue-router? 是否安裝 Vue 的路由
  • Use ESLint to lint your code? 是否使用 ESlint 限制代碼規(guī)范
    • 如果選擇了 ESLint, 那么需要選擇 ESLint 規(guī)范
    • Pick an ESLint preset (Use arrow keys) 選擇規(guī)范
  • Set up unit tests: 是否使用單元測試
  • Setup e2e tests with Nightwatch? 是否端到端測試, 且安裝 Nightwatch?
  • Should we run npm install for you after the project has been created? (recommended): 你準備管理項目時使用 NPM 還是 Yarn 呢?

runtime-compiler 和 runtime-only 的區(qū)別

無論是使用 runtime-compiler 還是使用 runtime-only 只要 (template 或 render函數(shù)) 與 el 一起使用, 都會替換掉 el 掛載的標簽

唯一不同: main.js

此為 runtime-compiler 的 main.js


import Vue from "vue";
import App from "./App";

Vue.config.productionTip = false;

new Vue({
  el: "#app",
  components: { App },
  template: "<App/>"
});

此為 runtime-only 的 main.js

import Vue from "vue";
import App from "./App";

Vue.config.productionTip = false;

new Vue({
  el: "#app",
  render: h => h(App)
});
image
  • runtime-compiler 的運行過程

    • template -> 解析 -> ast -> 編譯 -> render -> virtual dom -> UI
  • runtime-only 的運行過程

    • rander -> virtual dom -> UI

區(qū)別

  • runtime-only 性能更高
  • runtime-only 文件更小 (比 runtime-compiler 輕 10kb 左右), 因為 template 的解析, ast 編譯都會有相應的代碼

簡單總結(jié)

  • 如果在之后的開發(fā)中, 你依然使用 template, 就需要選擇 runtime-compiler
  • 如果你之后的開發(fā)中, 使用的是 .vue 文件開發(fā), 那么可以選擇 runtime-only

render 函數(shù)

render: function (createElement) {
  // 1. createElement("標簽", {標簽的屬性}, ["內(nèi)容"])
  // return createElement("div", { class: "box" }, ["hello world"]);
  // 2. createElement(組件)
  return createElement(App)
}

.vue 文件里的 template 需不需要解析呢?

  • 答案是不需要
  • 因為在 .vue 文件中的 template 由 vue-template-compiler 解析成 render 函數(shù)

Vue-CLI 3

Vue-CLI 3 及以上版本號稱"零配置", 它將大部分配置文件都藏在 .git文件夾中, 僅有少部分是需要開發(fā)者自行配置的

初始化項目

vue create my-project

Please pick a preset: 選擇配置(默認配置 || 手動選擇一些特性)

  • 如果選擇手動設置 >> Check the features needed for your project: 選擇特性(按空格 選中|取消選中)
  • Where do you prefer placing config for Babel, ESLint, etc.?: (將某些配置文件放到獨立的文件中 || 將某些配置放在package.json中)
  • Save this as a preset for future projects?: 是否將剛才的配置保存為將來項目的預置
    • 如果選擇 yes
    • Save preset as: 保存的名字
  • Pick the package manager to use when istalling dependencies: 選擇 NPM 或 Yarn

main.js 變化(最終版本)

new Vue({
  render: h => h(App)
}).$mount("#app");

用 $mount("#app") 取締了 el

  • el 最終還是會通過$mount()進行掛載

配置 Vue CLI3 的方式

啟動配置服務器: vue ui 指令, 安裝@vue/cli 同時安裝了 vuevue ui

  • 運行vue ui命令
  • 在項目根目錄創(chuàng)建文件名為 "vue.config.js", 然后運行git commit -m '添加一個配置文件'

Vue-CLI 2 和 Vue-CLI 3 的區(qū)別

  • Vue-CLI 3 是基于 webpack4 打造, Vue-CLI 2 還是 webpack3
  • Vue-CLI 3 的設計原則是“零配置”, 移除的配置文件根目錄下的, build 和 config 等目錄
  • Vue-CLI 3 提供了 vue ui 命令, 提供了可視化配置, 更加人性化
  • Vue-CLI 3 移除了 static 文件夾, 新增了 public 文件夾, 并且 index.html 移動到 public 中
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子创倔,更是在濱河造成了極大的恐慌瘩扼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媒鼓,死亡現(xiàn)場離奇詭異届吁,居然都是意外死亡,警方通過查閱死者的電腦和手機绿鸣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門疚沐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潮模,你說我怎么就攤上這事亮蛔。” “怎么了擎厢?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵尔邓,是天一觀的道長晾剖。 經(jīng)常有香客問我,道長梯嗽,這世上最難降的妖魔是什么齿尽? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮灯节,結(jié)果婚禮上循头,老公的妹妹穿的比我還像新娘。我一直安慰自己炎疆,他們只是感情好卡骂,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著形入,像睡著了一般全跨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亿遂,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天浓若,我揣著相機與錄音,去河邊找鬼蛇数。 笑死挪钓,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的耳舅。 我是一名探鬼主播碌上,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浦徊!你這毒婦竟也來了馏予?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤盔性,失蹤者是張志新(化名)和其女友劉穎吗蚌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纯出,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蚯妇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了暂筝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箩言。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焕襟,靈堂內(nèi)的尸體忽然破棺而出陨收,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布务漩,位于F島的核電站拄衰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饵骨。R本人自食惡果不足惜翘悉,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望居触。 院中可真熱鬧妖混,春花似錦、人聲如沸轮洋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弊予。三九已至祥楣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汉柒,已是汗流浹背误褪。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竭翠,地道東北人振坚。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓薇搁,卻偏偏與公主長得像斋扰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啃洋,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容