Vue項(xiàng)目使用webpack進(jìn)行項(xiàng)目開發(fā)環(huán)境搭建

為什么需要webpack

現(xiàn)在的前端炊汹,越來越復(fù)雜晦溪,特別是SPA(single page web application)流行之后荧嵌,一個應(yīng)用程序往往會依賴很多其他的模塊,或者編譯scss亭姥、less、stylus等顾稀,如果僅僅是靠人來管理是不可能的达罗,這個時候我們必須依賴于webpack來解決。

現(xiàn)在最流行的三個SPA的框架静秆,都于webpack緊密相連粮揉。

  • React.js + webpack
  • Vue.js + webpack
  • Angular.js + webpack

學(xué)習(xí)webpack有4個重點(diǎn)內(nèi)容:

  • 入口(entry)
  • 輸出(output)
  • 加載器(loader)
  • 插件(plugins)

webpack安裝

注意:請先安裝node環(huán)境

npm install webpack@3.11.0 -g

建議大家這樣操作(隨時切換鏡像源):

  1. npm install nrm -g // 安裝nrm
  2. nrm ls // 查看鏡像源
  3. nrm use taobao // 選擇淘寶鏡像,也可以選擇cnpm

使用webpack
01-webpack-cli

使用命令:webpack 輸入文件路徑 打包后文件路徑將一個文件打包成另外一個文件
02-webpack-config

  1. 配置webpack.config.js

  2. 運(yùn)行webpack
    var path = require('path')

    module.exports = {
      // 入口文件配置
      entry: "./src/app.js",
    
      // 出口文件配置項(xiàng)
      output: {
        // 輸出的路徑抚笔,webpack2起就規(guī)定必須是絕對路徑
        path: path.join(__dirname, 'dist'),
        // 輸出文件名字
        filename: "bundle.js"
      }
    }
    

03-webpack-dev-server

默認(rèn)為--inline模式

  1. 運(yùn)行:npm init -y
  2. 運(yùn)行:npm i webpack-dev-server@2.9.7 webpack@3.11.0 -D
      var path = require('path')
      module.exports = {
        // 入口文件配置
        entry: "./src/app.js",
    
        // 輸出配置
        output: {
          // 輸出的路徑
          path: path.join(__dirname, 'dist'),
          // 靜態(tài)資源在服務(wù)器上運(yùn)行時的訪問路徑扶认,可以直接 http://localhost:8080/dist/bundle.js訪問到服務(wù)器中的bundle.js文件
          publicPath: '/dist',
          // 輸出文件名字
          filename: "bundle.js"
        }
      }
  1. index.html中修改 <script src="/dist/bundle.js"></script>
  2. 運(yùn)行:webpack-dev-server
  3. 運(yùn)行:webpack-dev-server --inline --hot --open --port 8090
  4. 配置script:"dev": "webpack-dev-server --inline --hot --open --port 8090"
  5. npm run dev

04-webpack-css

  1. 安裝npm install css-loader style-loader --save-dev
      module: {
        rules: [
          // 配置的是用來解析.css文件的loader(style-loader和css-loader)
          {
            // 1.0 用正則匹配當(dāng)前訪問的文件的后綴名是  .css
            test: /\.css$/,
            use: ['style-loader', 'css-loader'] //webpack底層調(diào)用這些包的順序是從右到左
          }
        ]
      }

05-webpack-less&webpack-sass

npm install less less-loader sass-loader node-sass --save-dev

    {
        test: /\.less$/,
        use: [{
            loader: 'style-loader'
        }, {
            loader: 'css-loader'
        }, {
            loader: 'less-loader'
        }]
    },

    {
        test: /\.scss$/,
        use: [{
            loader: 'style-loader'
        }, {
            loader: 'css-loader'
        }, {
            loader: 'sass-loader'
        }]
    }

06-webpack-圖片&字體

  1. npm install file-loader url-loader --save-dev

url-loader封裝了file-loader

    {
        test: /\.(png|jpg|gif)/,
        use: [{
            loader: 'url-loader',
            options: {
              // limit表示如果圖片大于50000byte,就以路徑形式展示殊橙,小于的話就用base64格式展示
                limit: 50000
            }
        }]
    }

07-webpack-html

  1. npm install html-webpack-plugin --save-dev

  2. 如果添加了title辐宾,需要在模板中添加<%= htmlWebpackPlugin.options.title %>

    // 注意需要注釋掉publicPath,不然會沖突

    var HtmlWebpackPlugin = require('html-webpack-plugin')

    plugins: [
    new HtmlWebpackPlugin({
    filename: 'index.html',
    template: 'template.html'
    })
    ]

08-webpack-babel

  1. npm install babel-core babel-loader babel-preset-env --save-dev

注意:

webpack 1.x | babel-loader <= 6.x

webpack 2.x | babel-loader >= 7.x (推薦) (^6.2.10 也能用, 但是會出現(xiàn)不推薦使用的警告)

webpack 3.x | babel-loader >= 7.1

        {
          test: /\.js$/,
          // Webpack2建議盡量避免exclude蛀柴,更傾向于使用include
          // exclude: /(node_modules)/, // node_modules下面的.js文件會被排除
          include: [path.resolve(__dirname, 'src')]
          use: {
            loader: 'babel-loader',
            // options里面的東西可以放到.babelrc文件中去
            options: {
              presets: ['env']
            }
          }
        }
    
    // .babelrc文件內(nèi)的配置
    {
      "presets":["env"]
    }

結(jié)合webpack處理單文件組件

配置webpack相關(guān)loader

  1. npm install vue --save
  2. npm install vue-loader vue-template-compiler --save-dev
    {
        test: /\.vue$/,
        loader: 'vue-loader'
    }
    ```
    // 如果使用的是webpack1.x螃概,還需要安裝 `babel-plugin-transform-runtime`,并添加一下配置;如果是webpack2.x以上請忽略一下配置
{
  test: /\.js$/,
  include: [path.resolve(__dirname, 'src')],
  use: {
    loader: 'babel-loader',
    // options里面的東西可以放到.babelrc文件中去
    options: {
      presets: ['env']
      // plugins: ['transform-runtime']
    }
  }
}

使用vue文件創(chuàng)建vue組件

<!-- App.vue -->
<template>
   <div>{{msg}}</div>
</template>
<script>
export default {
  data () {
    return {
      msg: 'hello world'
    }
  }
}
</script>
<style>
  div {
    color: red;
  }
</style>

引入組件,并將組件渲染到頁面

// app.js
import Vue from 'vue'
import App from './App.vue'

new Vue({
    el: '#app',
    render: h=> h(App)
})

路由配置

  1. npm install vue-router --save
    // app.js
    import Vue from 'vue'
    import App from './App.vue'
    
    import Login from './Login.vue'
    // 1. 引入vue-router
    import VueRouter from 'vue-router'
    
    // 2. 表示使用路由插件
    Vue.use(VueRouter)
    //3. 配置路由規(guī)則
    var router = new VueRouter({
      routes: [
        { name: 'login', path: '/login', component: Login }
      ]
    })
    
    new Vue({
      el: '#app',
      // 掛載路由
      router,
      // 這是個渲染函數(shù)鸽疾,指定渲染組件
      render: h => h(App)
    })

當(dāng)然你也可以使用vue-cli自動化構(gòu)建工具搭建項(xiàng)目,更加的方便

vue-cli是官方的一個腳手架工具吊洼,所謂腳手架呢就是一個架子,什么架子呢制肮?項(xiàng)目結(jié)構(gòu)的架子冒窍,里面有一些最基本的結(jié)構(gòu)配置。利用vue-cli呢豺鼻,我們可以生成這樣的一個腳手架综液,所以呢它就被稱為vue腳手架工具。

npm install vue-cli -g

vue init webpack admin
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末儒飒,一起剝皮案震驚了整個濱河市谬莹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖附帽,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠戳,死亡現(xiàn)場離奇詭異,居然都是意外死亡蕉扮,警方通過查閱死者的電腦和手機(jī)整胃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喳钟,“玉大人屁使,你說我怎么就攤上這事”荚颍” “怎么了蛮寂?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長应狱。 經(jīng)常有香客問我共郭,道長,這世上最難降的妖魔是什么疾呻? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任除嘹,我火速辦了婚禮,結(jié)果婚禮上岸蜗,老公的妹妹穿的比我還像新娘尉咕。我一直安慰自己,他們只是感情好璃岳,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布年缎。 她就那樣靜靜地躺著,像睡著了一般铃慷。 火紅的嫁衣襯著肌膚如雪单芜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天犁柜,我揣著相機(jī)與錄音洲鸠,去河邊找鬼。 笑死馋缅,一個胖子當(dāng)著我的面吹牛扒腕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萤悴,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瘾腰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了覆履?” 一聲冷哼從身側(cè)響起蹋盆,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤费薄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后栖雾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體义锥,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年岩灭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赂鲤。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡噪径,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出数初,到底是詐尸還是另有隱情找爱,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布泡孩,位于F島的核電站车摄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仑鸥。R本人自食惡果不足惜吮播,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望意狠。 院中可真熱鬧,春花似錦疮胖、人聲如沸环戈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽性昭。三九已至拦止,卻和暖如春巩梢,著一層夾襖步出監(jiān)牢的瞬間创泄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工括蝠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鞠抑,地道東北人忌警。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓搁拙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親箕速。 傳聞我的和親對象是個殘疾皇子酪碘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

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