第1講 使用vue-cli3.0創(chuàng)建項(xiàng)目

vue-cli 3.0是基于webpack 4.0之上構(gòu)建的vue腳手架工具,得益于webpack4.0的零配置特性,使得在使用vue-cli 3.0時(shí)赞季,零配置就可以開(kāi)發(fā)和打包vue項(xiàng)目

vue-cli 3.0及更高版本為了區(qū)別vue-cli 1.0和vue-cli 2.0,名字更改成了@vue/cli,如果你的電腦已經(jīng)安裝了比如vue-cli 2.0展氓,需要卸載它,然后安裝@vue/cli脸爱,不用擔(dān)心安裝了更高版本的vue-cli不能兼容老項(xiàng)目遇汞,比如用vue-cli 2.0創(chuàng)建的項(xiàng)目,啟動(dòng)和打包還是分別使用npm run dev和npm run build即可

vue --version // 查看電腦上已安裝的vue-cli的版本
npm uninstall vue-cli -g  // 卸載老版本vue-cli
npm install -g @vue/cli // 安裝3.0版本的vue-cli

mac電腦卸載和安裝vue-cli方式如下:

sudo chmod -R 777 /usr/local/lib/node_modules/  // 放開(kāi)權(quán)限
sudo npm uninstall vue-cli -g  // 卸載老版本
sudo npm install -g @vue/cli  // 安裝新版本

安裝完畢,在cmd中輸入vue ui空入,啟動(dòng)項(xiàng)目管理器络它,新建一個(gè)vue項(xiàng)目,在這個(gè)過(guò)程需要操作步驟有:

1. 新建項(xiàng)目文件夾-vue-base-frame
2. 選擇包管理器-npm
3. 初始化git倉(cāng)庫(kù)默認(rèn)打開(kāi)
4. 選擇一套預(yù)設(shè)--選擇手動(dòng)
5. babel-打開(kāi)
6. Router-打開(kāi)
7. Vuex-打開(kāi)
8. CSS Pre-processors(css預(yù)處理器)-打開(kāi)
9. 使用配置文件-打開(kāi)
10. pick a css pre-processor 下拉選擇less
11. pick a linter / formatter config 下拉選擇 eslint + standard config
12. lint on save-打開(kāi)
13. 然后點(diǎn)擊“創(chuàng)建項(xiàng)目歪赢,不保存預(yù)設(shè)”

經(jīng)過(guò)上述步驟化戳,就可以靜待vue基礎(chǔ)模板下載下來(lái),當(dāng)模板下載完成后轨淌,cmd進(jìn)入項(xiàng)目根目錄迂烁,執(zhí)行npm run serve啟動(dòng)項(xiàng)目,這和vue-cli 2.x版本中npm run dev啟動(dòng)方式不一樣递鹉,啟動(dòng)完成盟步,瀏覽器打開(kāi)這個(gè)項(xiàng)目,可以看到兩個(gè)簡(jiǎn)單的頁(yè)面Home和About躏结,接下來(lái)却盘,需要對(duì)這個(gè)vue模板進(jìn)行改造,在改造之前媳拴,我先來(lái)介紹一下黄橘,項(xiàng)目里各個(gè)文件的作用

先從項(xiàng)目根目錄開(kāi)始看起,主要有三個(gè)文件

  1. <b>package.json</b> 項(xiàng)目配置文件屈溉,項(xiàng)目中所需的依賴(lài)都會(huì)在這里說(shuō)明塞关,當(dāng)其他人要使用你這個(gè)項(xiàng)目時(shí),只需要執(zhí)行npm install 就可以安裝這些依賴(lài)子巾,啟動(dòng)項(xiàng)目了帆赢,這里解析下json文件里面dependencies和devDependencies,dependencies聲明生成環(huán)境所需要的依賴(lài)线梗,也就是項(xiàng)目打包以后這些依賴(lài)也是要打包進(jìn)去的椰于,而devDependencies代表開(kāi)發(fā)環(huán)境的依賴(lài),也就是方面你開(kāi)發(fā)而加載的一些依賴(lài)仪搔,這些依賴(lài)在項(xiàng)目打包時(shí)不會(huì)放進(jìn)去
  2. <b>public文件夾</b> 公共文件夾瘾婿,在vue-cli 2.x創(chuàng)建的項(xiàng)目模板中,就是static這個(gè)文件夾烤咧,vue-cli 3.x創(chuàng)建的項(xiàng)目模板中偏陪,取而代之的就是這個(gè)public文件夾,這里面有一個(gè)index.html文件煮嫌,它是提供給webpack笛谦,使其在運(yùn)行和打包的時(shí)候作為模板文件使用,生成最后項(xiàng)目里的index.html
  3. <b>src文件夾</b> 這是項(xiàng)目的主文件夾立膛,以后我們開(kāi)發(fā)都是在這個(gè)文件夾內(nèi)完成的

再來(lái)看下這個(gè)src這個(gè)主文件夾里都有哪些文件:

  1. assets 存放項(xiàng)目里的靜態(tài)資源文件揪罕,比如圖片梯码,圖標(biāo),字體文件等
  2. components 從代碼里抽離出一些可復(fù)用的邏輯組成一個(gè)組件好啰,以便我們復(fù)用
  3. views 項(xiàng)目里的頁(yè)面都放在這個(gè)文件夾里
  4. App.vue 項(xiàng)目里的基礎(chǔ)組件(根組件)
  5. main.js 項(xiàng)目的入口文件轩娶,項(xiàng)目在開(kāi)發(fā)運(yùn)行或者編譯的時(shí)候,都會(huì)以這個(gè)為起始點(diǎn)
  6. router 存放路由文件
  7. store 存放狀態(tài)管理文件

以上就是我們下載下來(lái)的初始vue模板的所有說(shuō)明框往,這里提示一下鳄抒,因?yàn)樵趩?dòng)vue ui(項(xiàng)目管理器)上開(kāi)啟了eslint代碼檢查,這里防止你以后寫(xiě)代碼一直報(bào)空格和換行錯(cuò)誤椰弊,需要在根目錄里找到.editorconfig文件和.eslintrc.js文件许溅,修改一下

// .editorconfig.js
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 4 // 將這個(gè)項(xiàng)目默認(rèn)的2改為4
trim_trailing_whitespace = true
insert_final_newline = true
// .eslintrc.js
  rules: {
    'indent': ['error', 4], // 新增這一行代碼
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
  }

<b>vue.config.js文件</b>

你會(huì)發(fā)現(xiàn)通過(guò)vue-cli 3.x創(chuàng)建的項(xiàng)目里沒(méi)有這個(gè)文件,是因?yàn)樽铋_(kāi)始我講到了基于webpack4.0特性0配置特性秉版,在使用vue-cli 3.0創(chuàng)建項(xiàng)目的時(shí)候贤重,webpack的配置均被隱藏了,老版本的vue-cli清焕,創(chuàng)建的項(xiàng)目并蝗,我們可以找到build和config這兩個(gè)文件夾,但是vue-cli 3.x創(chuàng)建的項(xiàng)目已經(jīng)沒(méi)有這兩個(gè)文件夾秸妥,當(dāng)需要覆蓋原有配置時(shí)滚停,需要在根目錄下新建vue.config.js文件,來(lái)配置新的配置粥惧,當(dāng)項(xiàng)目啟動(dòng)以后vue.config.js會(huì)被自動(dòng)加載

// vue.config.js
/* 如果當(dāng)前是生產(chǎn)環(huán)境production
如果項(xiàng)目部署到域名(www.baidu.com)根目錄下键畴,直接'/' : '/',
如果需要部署到(www.baidu.com/iview-admin)目錄下,直接'/iview-admin/' : '/'
如果是開(kāi)發(fā)環(huán)境突雪,直接'/' : '/' */
const BASE_URL = process.env.NODE_ENV === 'production' ? '/iview-admin/' : '/'
/* 引入node的path模塊 */
const path = require('path')
/* 自定義方法resolve */
const resolve = dir => {
  return path.join(__dirname, dir);
}

// 引入webpack
// const webpack = require('webpack')



module.exports = {
  lintOnSave: false, // 關(guān)閉eslint檢查
  /* webpack配置 */
  chainWebpack: config => {
    config.resolve.alias
      .set('@', resolve('src')) // 用@代替src起惕,在項(xiàng)目里你需要引入文件的時(shí)候,只需要@/api,@/config,@/mock...即可
      .set('_c', resolve('src/components')) // 用_c代替src/components,我們需要引入組件時(shí)挂签,只需要_c/HelloWorld.vue即可
  },

  // 打包時(shí)不生成map文件疤祭,這樣減少打包的體積盼产,并且加快打包的速度
  productionSourceMap: false,

  // 跨域配置
  devServer: {
    /* 自動(dòng)打開(kāi)瀏覽器 */
    open: true,
    hot: true, // vue cli3.0 關(guān)閉熱更新
    // liveReload: false, // webpack liveReload關(guān)閉
    /* 設(shè)置為0.0.0.0則所有的地址均能訪問(wèn) */
    host: '0.0.0.0',
    port: 4000,
    // proxy: 'http://localhost:4000', // 告訴開(kāi)發(fā)服務(wù)器饵婆,將任何未知請(qǐng)求(沒(méi)有匹配到靜態(tài)文件的請(qǐng)求),都代理到這個(gè)url上戏售,來(lái)滿(mǎn)足跨域的請(qǐng)求
  },
  // configureWebpack: {
  //   plugins: [
  //     new webpack.ProvidePlugin({
  //       $:"jquery",
  //       jQuery:"jquery",
  //       "windows.jQuery":"jquery"
  //     })
  //   ]
  // },
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侨核,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灌灾,更是在濱河造成了極大的恐慌搓译,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锋喜,死亡現(xiàn)場(chǎng)離奇詭異些己,居然都是意外死亡豌鸡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)段标,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涯冠,“玉大人,你說(shuō)我怎么就攤上這事逼庞∩吒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵赛糟,是天一觀的道長(zhǎng)派任。 經(jīng)常有香客問(wèn)我,道長(zhǎng)璧南,這世上最難降的妖魔是什么掌逛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮司倚,結(jié)果婚禮上颤诀,老公的妹妹穿的比我還像新娘。我一直安慰自己对湃,他們只是感情好崖叫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拍柒,像睡著了一般心傀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拆讯,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天脂男,我揣著相機(jī)與錄音,去河邊找鬼种呐。 笑死宰翅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爽室。 我是一名探鬼主播汁讼,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼阔墩!你這毒婦竟也來(lái)了嘿架?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啸箫,失蹤者是張志新(化名)和其女友劉穎耸彪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體忘苛,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝉娜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年唱较,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片召川。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绊汹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扮宠,到底是詐尸還是另有隱情西乖,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布坛增,位于F島的核電站获雕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏收捣。R本人自食惡果不足惜届案,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罢艾。 院中可真熱鬧楣颠,春花似錦、人聲如沸咐蚯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)春锋。三九已至矫膨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間期奔,已是汗流浹背侧馅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呐萌,地道東北人馁痴。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肺孤,于是被迫代替她去往敵國(guó)和親罗晕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348