17审孽、webpack從0到1-構(gòu)建vue項目

講下webpack中的對于vue配置县袱,其實vue官方就提供了一套模板vue-webpack-template,我們學(xué)習(xí)學(xué)習(xí)佑力,然后基于當(dāng)前自己的項目來配置下式散。
git倉庫:webpack-demo

1、處理vue

  • 對于.vue這種文件打颤,webpack肯定是不認(rèn)識的暴拄,所以我們需要相應(yīng)的loader來處理它漓滔,通過查閱文檔我們發(fā)現(xiàn)需要安裝這兩個東西:
$ npm install vue-loader vue-template-compiler --save-dev
  • 然后安裝文檔上面的教程,照貓畫虎搞一下乖篷。這個loader兩個環(huán)境都是需要的响驴,我們應(yīng)該是丟到webpack.common.js中:
// webpack.common.js
const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
  module: {
    rules: [
      // ... 其它規(guī)則
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ]
  },
  plugins: [
    // 請確保引入這個插件!
    new VueLoaderPlugin()
  ]
}

2撕蔼、寫點vue

  • 首先既然要使用vue豁鲤,就需要安裝它。
$ cd chapter17
$ npm install vue --save
  • 然后我們需要對當(dāng)前的文件目錄做次比較大的改動:
  webpack-demo/chapter17
  |- /build
  |- src
-   |- assets
-   |- styles
-   |- content.js
-   |- footer.js
-   |- header.js
-   |- logo.js
+   |- App.vue
    |- index.js
  |- index.html
  |- package.json
  |- postcss.config.js
  |- README.md
  • 然后我們在App.vue中寫點內(nèi)容(你應(yīng)該很熟悉):
<template>
  <div id="app">
    hello world
  </div>
</template>

<style lang="scss">
#app {
  font-family: "Avenir", Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}
</style>
  • 然后我們刪掉src/index.js這個入口文件原來所有的示例代碼鲸沮,使用下面這部分替換:
import Vue from "vue";
import App from "./App.vue";

Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");
  • 上面這個就是vue的語法羅琳骡,會將所有的內(nèi)容都掛載到idapp的這個元素上,很明顯我們目前沒有讼溺,所以我們需要對src/index.html這個模板加上這個元素:
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><%= htmlWebpackPlugin.options.title %></title>
</head>

<body>
+    <div id="app"></div>
</body>

</html>
  • 然后我們npm run dev打包楣号,瀏覽器中就會顯示出hello world了。現(xiàn)在怒坯,是不是有點vue的那意思了炫狱?

3、關(guān)于路由

  • 頁面要跳轉(zhuǎn)剔猿,很明顯视译,現(xiàn)在我們還少了vue-router這個必要的東西,然我們參照官網(wǎng)的教程归敬,安裝一下:
$ npm install vue-router --save
  • 然后憎亚,為了讓我們現(xiàn)在這個項目跟像一個標(biāo)準(zhǔn)的vue項目,所以我們參照一下vue-webpack-template的目錄結(jié)構(gòu)對我們的做點修改弄慰。
    • 我們將原來的一直伴隨我們的header第美、footercontent三塊的js及樣式文件都遷移到了components目錄下作為了三個子組件陆爽。
    • 新建了一個src/views里面放了放了兩個頁面組件什往,用來測試router的跳轉(zhuǎn)。
上一章的src目錄 現(xiàn)在的src目錄
  • 新建了一個路由文件慌闭,src/router/index.js就是vue腳手架初始化生成的內(nèi)容了:
import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter);

const routes = [
  {
    path: "/",
    name: "home",
    component: () => import("../views/home.vue")
  },
  {
    path: "/about",
    name: "about",
    component: () => import("../views/about.vue")
  }
];

const router = new VueRouter({
  routes
});

export default router;
  • 然后需要在入口文件src/index.js中引入這個路由别威,還有一些其他的都是關(guān)于vue的基本使用用法的東西就不多說了,去看下倉庫源碼即可驴剔。

4省古、問題

  • 到了這一步以后,自然我們需要跑一下項目丧失,這時候問題來了豺妓,死活這張圖片不顯示;報http://localhost:8080/[object%20Module]找不到圖片的錯誤。
  • 經(jīng)過一頓google后終于找到了答案琳拭,原來我們需要在webpack.common.js中使用url-loader的地方把esModule設(shè)置為false-->錯誤reason训堆。
 // ...
 {
    test: /\.(png|jpg|gif)$/i,
    use: [
      {
        loader: "url-loader",
        options: {
          limit: 4096,
+         esModule: false
        }
      }
    ]
  }
  • 學(xué)點東西還是挺不容易啊,坑真多白嘁。坑鱼。。絮缅。終于鲁沥,看到了完整的頁面,路由跳轉(zhuǎn)頁也沒問題耕魄。


5黍析、小結(jié)

  • 嗯,回想過去第一次用vue-cli腳手架搭起頁面的時刻屎开,是不是有那味了?react也是差不多马靠,裝下react react-dom奄抽,但是由于我react的技術(shù)棧不是很熟,就不班門弄斧了甩鳄,用create-react-app這個官方腳手架初始化搞個項目逞度,原理也都一樣。
  • 至此妙啃,我們也從0到了1的配置了一個跟vue-webpack-template這樣的模板項目出來了档泽,雖然比不上官方,但也算是有模有樣的揖赴。
  • 參考鏈接:
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馆匿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子燥滑,更是在濱河造成了極大的恐慌渐北,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铭拧,死亡現(xiàn)場離奇詭異赃蛛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)搀菩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門呕臂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肪跋,你說我怎么就攤上這事歧蒋。” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵疏尿,是天一觀的道長瘟芝。 經(jīng)常有香客問我,道長褥琐,這世上最難降的妖魔是什么锌俱? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮敌呈,結(jié)果婚禮上贸宏,老公的妹妹穿的比我還像新娘。我一直安慰自己磕洪,他們只是感情好吭练,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著析显,像睡著了一般鲫咽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谷异,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天分尸,我揣著相機(jī)與錄音,去河邊找鬼歹嘹。 笑死箩绍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尺上。 我是一名探鬼主播材蛛,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怎抛!你這毒婦竟也來了卑吭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤马绝,失蹤者是張志新(化名)和其女友劉穎陨簇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迹淌,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡河绽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了唉窃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耙饰。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纹份,靈堂內(nèi)的尸體忽然破棺而出苟跪,到底是詐尸還是另有隱情廷痘,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布件已,位于F島的核電站笋额,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏篷扩。R本人自食惡果不足惜兄猩,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鉴未。 院中可真熱鬧枢冤,春花似錦、人聲如沸铜秆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽连茧。三九已至核蘸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啸驯,已是汗流浹背客扎。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留坯汤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓搀愧,卻偏偏與公主長得像惰聂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咱筛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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