webpack

webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)埃儿。

一:webpack的作用:
1) 打包(依賴->把多個(gè)文件打包成一個(gè)js文件)
2) 減少http請(qǐng)求,較少的服務(wù)器壓力,省寬帶
3) 轉(zhuǎn)化(比如 less/sass/ts) 需要loader
4) 優(yōu)化(SPA越來越盛行,前端項(xiàng)目復(fù)雜度高,webpack可以對(duì)項(xiàng)目進(jìn)行優(yōu)化)

二:webpack安裝(前提:必須先確保node環(huán)境已經(jīng)安裝了)
webpack webpack庫
webpack-cli webpack客戶端器仗,包含webpack命令
webpack-dev-server 啟動(dòng)一個(gè)web服務(wù)

三:.開發(fā)環(huán)境:
簡(jiǎn)介:就是平時(shí)編寫代碼的環(huán)境
English:development
(2) 生產(chǎn)環(huán)境:
簡(jiǎn)介:項(xiàng)目開發(fā)完畢,部署上限
English:production

四: 常用loader:
1.js處理
babel-loader,
2.css處理
style-loader,css-loader,sass-loader,
3.文件處理
url-loader,file-loader 如果文件小于限制就轉(zhuǎn)成DataUrl
4.處理vue文件
vue-loader 加載.vue文件并處理成js


ps:關(guān)于loader的寫法:
1) use:["xxx-loader","xxx-loader"]
2) loader:["xxx-loader","xxx-loader"]
3) use:[
{loader:"style-loader"},
{loader:"style-loader"}
]


五:常用插件

  1.      CommonsChunkPlugin  抽取頁面邏輯蝌箍,已棄用青灼,使用
    
  2.     html-webpack-plugin   處理html
    
  3.      HotModuleReplacementPlugin  模塊熱替換,webpack4.0的支持不夠好
    
  4.     UglifyjsWebpackPlugin 處理js妓盲,已啟用合并到webpack4.0 webpack -p會(huì)壓縮js和css
    
  5.      clean-webpack-plugin  刪除構(gòu)建的文件夾
    
  6.    mini-css-extract-plugin 抽取css杂拨,替代extract-text-webpack-plugin
    
  7.     vue-loader/lib/plugin  引入vue-loader
    
  8.     html-webpack-plugin   處理html,并自動(dòng)引用output的文件
    

六: 安裝命令
全局安裝:cnpm install -g webpack, webpack-cli, webpack-dev-server
本地安裝:cnpm install -D|--save-dev babel-loader

七:webpack執(zhí)行命令:
webpack src/indexjs --output dist.bundle.js 在沒有配置文件的情況下的執(zhí)行方式
webpack 配置文件后直接webpack執(zhí)行
webpack --mode development 開發(fā)環(huán)境編譯
webpack --mode production 生產(chǎn)環(huán)境編譯(壓縮文件)
webpack --help 指令幫助(提示能用那些webpack的命令)
webpack -p 生產(chǎn)環(huán)境編譯悯衬,自動(dòng)壓縮css弹沽、js
webpack -w 監(jiān)聽文件并實(shí)時(shí)構(gòu)建
--devtool eval 為你的代碼創(chuàng)建源地址。當(dāng)有任何報(bào)錯(cuò)的時(shí)候可以讓你更加精確地定位到文件和行號(hào)
--progress 顯示合并代碼進(jìn)度
--colors --hot 命令行中顯示顏色
--content-base 指向設(shè)置的輸出目錄

八:webpack配置文件:
文件名:webpack.config.js 遵循commonJS規(guī)范
配置文件結(jié)構(gòu)示例:
module.exports = {
entry:{}, 入口文件
output:{}, 出口文件 //整體打包的路徑注意點(diǎn)需要一個(gè)絕對(duì)路徑
module:{ 加載器
rules:[
{
test:/.js$/, 正則判斷文件類型
exclude:"node_modules", 排除那些目錄文件不使用babel-loader
use:["babel-loader],
}
]
},
plugins:[], 插件
devtool:"", 開發(fā)配置
devServer:{} 開發(fā)服務(wù)器
}


具體引用

   const path = require('path');
    const webpack = require('webpack');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const CleanWebpackPlugin = require('clean-webpack-plugin');
     const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  // 引入vue-loader
const VueLoaderPlugin = require('vue-loader/lib/plugin')

//配置插件
const plugins = [
// 引入vue插件
new VueLoaderPlugin(),
// 從頁面中抽離css
new MiniCssExtractPlugin({
    filename: '[name].[contenthash:6].css'
}),
// 刪除構(gòu)建目錄
new CleanWebpackPlugin(['build/assets/']),
//處理html筋粗,并自動(dòng)引用output的文件
new HtmlWebpackPlugin({
    //目標(biāo)文件
    filename: '../index.html',
    //模版文件
    template: './src/index.html',
    //對(duì)文件進(jìn)行壓縮
    minify: {
        //壓縮代碼
        minimize: true,
        //移除注釋
        removeComments: true,
        //去掉空格
        collapseWhitespace: true,
        //壓縮行內(nèi)css
        minifyCSS: true,
        //壓縮行內(nèi)js
        minifyJS: false
          }
        })
    ];

   module.exports = {
//構(gòu)建模式策橘,development or production
mode: process.env.NODE_ENV || 'development',
//輸入配置
entry: {
    index: './src/js/index.js',
    vendors: ['jquery']
    },
    //輸出配置
    output: {
    filename: '[name].[hash:6].js',
    path: path.resolve(__dirname, 'build/assets/'),
    publicPath: 'assets/'
},
    //是否生成source map以及如何生成
    devtool: 'eval-source-map',
    // devtool: 'none',
  devServer: {
      //serve加載的目錄
      contentBase: './build',
      port: 9000,
    //打開瀏覽器
    open: true,
    //啟用gzip壓縮文件
    compress: true,
    //強(qiáng)制頁面訪問index.html
    historyApiFallback: true,
    //實(shí)時(shí)刷新
    inline: true,
    //支持模塊熱更新
    hot: true
                },
//模塊操作
      module: {
      rules: [{
            test: /\.vue$/,
            loader: 'vue-loader'
        },
        {
            test: /\.(js|jsx)$/, //正則判斷文件類型
            exclude: /node_modules/, //排除這個(gè)文件夾不處理
            use: ['babel-loader'] //使用加載器  
        },
        {
            test: /\.css$/,
            use: [MiniCssExtractPlugin.loader, 'css-loader']
        },
        {
            test: /\.scss$/,
            use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
        },
        {
            test: /\.(gif|png|jpe?g|svg)$/i,
            use: [{
                loader: 'url-loader',
                options: {
                    name: '[name].[hash:6].[ext]',
                    limit: 1024
                }
            }]
        },
        {
            test: /\.(eot|ttf|svg|woff)$/,
            use: ['url-loader']
          }
        ]
      },
  plugins,
  optimization: {
      splitChunks: {
          cacheGroups: {
              commons: {
                test: /[\\/]node_modules[\\/]/,
                name: "vendors",
                  }
              }
            }
      }
  };

vue寫法

            <template>

         <div>

         <h2>{{message}}</h2>
     <ul>
     <li v-for="(item,index) in arr">與琪{{item}}</li>
  </ul>
 </div>

    </template>
  <script>
     export default {
      data: function(){
          return {
             message: 'Hello Vue!',
              arr: [1,2,3,4,5,6]
          }
      }
    }
                  </script>

相關(guān)js的寫法

1.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娜亿,隨后出現(xiàn)的幾起案子丽已,更是在濱河造成了極大的恐慌,老刑警劉巖买决,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沛婴,死亡現(xiàn)場(chǎng)離奇詭異吼畏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嘁灯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門泻蚊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丑婿,你說我怎么就攤上這事性雄。” “怎么了羹奉?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵秒旋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我尘奏,道長(zhǎng)蝗拿,這世上最難降的妖魔是什么剪撬? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任汽烦,我火速辦了婚禮泻轰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘俗孝。我一直安慰自己酒甸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布赋铝。 她就那樣靜靜地躺著插勤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪革骨。 梳的紋絲不亂的頭發(fā)上农尖,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音良哲,去河邊找鬼盛卡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛筑凫,可吹牛的內(nèi)容都是我干的滑沧。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼巍实,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼滓技!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棚潦,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤令漂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洗显,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡外潜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挠唆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘱吗,死狀恐怖玄组,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谒麦,我是刑警寧澤俄讹,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站绕德,受9級(jí)特大地震影響患膛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耻蛇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一踪蹬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臣咖,春花似錦跃捣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刁赦,卻和暖如春娶聘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甚脉。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工丸升, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宦焦。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓发钝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親波闹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酝豪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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

  • 1 Webpack 1.1 概念簡(jiǎn)介 1.1.1 WebPack是什么 1、一個(gè)打包工具 2精堕、一個(gè)模塊加載工具 3...
    Kevin_Junbaozi閱讀 6,645評(píng)論 0 16
  • 版權(quán)聲明:本文為博主原創(chuàng)文章揉阎,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一背捌、webpack介紹 1毙籽、由來 ...
    it筱竹閱讀 11,064評(píng)論 0 21
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng),為了節(jié)省你的閱讀時(shí)間毡庆,在文前列寫作思路如下: 什么是 webpack坑赡,它要...
    蕭玄辭閱讀 12,681評(píng)論 7 110
  • 一、webpack的基本概念 webpack 本質(zhì)上是一個(gè)打包工具么抗,它會(huì)根據(jù)代碼的內(nèi)容解析模塊依賴毅否,幫助我們把多個(gè)...
    cilla123閱讀 1,536評(píng)論 0 8
  • 如果可以重新開始我選擇從來沒有認(rèn)識(shí)過你。 ~題記 高一蝇刀,剛開...
    張嚯嚯閱讀 166評(píng)論 0 1