亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳解如何使用webpack打包多頁jquery項目

2019-11-19 12:11:05
字體:
來源:轉載
供稿:網友

雖然已經2019年了
不過有一些項目
還是需要用到jquery的
不過考慮到使用jquery的一堆兼容性問題
也為了可以順利地使用ES6來擼代碼
研究使用webpack+babel打包代碼來發布

幾個重點:

1.為了將模塊分割加載,不至于一個js文件過大,一個頁面中使用多個js文件
2.由于是多頁項目(多個html),每個頁面使用的js文件都不一致
基于以上兩點,需要配置多個入口文件
3.會把小圖片轉換成base64,所以可能css轉成的js文件會比較大,所以css文件都單獨設置入口js

例如,我們有三個頁面:index、share、assist

三個頁面有通用的css文件:common.css

設置入口文件時,可以這樣設置

entry: {  // 通用css  commoncss: path.resolve(__dirname, './src/css/common.css.js'),  // 主頁  indexcss: path.resolve(__dirname, './src/css/index.css.js'),  index: path.resolve(__dirname, './src/index.js'),  // 頁1  sharecss: path.resolve(__dirname, './src/css/share.css.js'),  share: path.resolve(__dirname, './src/share.js'),  // 頁2  assistcss: path.resolve(__dirname, './src/css/assist.css.js'),  assist: path.resolve(__dirname, './src/assist.js'),}

其中,common.css.js文件中,只有幾行代碼

import '../css/base.css';import '../css/plugin.css';import '../css/common.css';

common.css.js文件結束

由于會有一些圖片的base64,所以大小大約100+KB

類似的還有index.css.js和share.css.js和assist.css.js
index.css.js如下

import '../css/index.css';

對,就一句話

打包出來的js文件大小就看引入了多少小圖片了,一般幾百KB

然后,要使用三個webpack的插件

const HtmlWebpackPlugin = require('html-webpack-plugin');const CopyWebpackPlugin = require('copy-webpack-plugin');const jquery = require('jquery');

HtmlWebpackPlugin 用于打包出多個html文件

CopyWebpackPlugin 用于img標簽,后面說

jquery 就是jquery,全局引用

webpack.config.js里的plugins配置如下

plugins: [  new webpack.ProvidePlugin({    $:"jquery"  }),  new CopyWebpackPlugin([{    from: __dirname + '/src/public/'  }]), // 吧src下public文件夾下的所有內容直接拷貝到dist(輸出目錄)下  new HtmlWebpackPlugin({    filename: 'index.htm',    template: 'src/index.html',    chunks: ['commoncss', 'indexcss', 'index'],    inject: 'true',    hash: true,  }),  new HtmlWebpackPlugin({    filename: 'share.htm',    template: 'src/share.html',    chunks: ['commoncss', 'sharecss', 'share'],    inject: 'true',    hash: true,  }),  new HtmlWebpackPlugin({    filename: 'assist.htm',    template: 'src/assist.html',    chunks: ['commoncss', 'assistcss', 'assist'],    inject: 'true',    hash: true,  })]

src目錄下的文件如下

index.js assist.js share.js是三個文件分別的入口文件

index.html assist.html share.html是三個文件的模板,html代碼可以寫在這里(當然想用模板文件也是可以的,只要HtmlWebpackPlugin插件支持)

dist文件夾如下


(為什么是htm而不是html,是為了便于讀者區分模板文件和輸出文件)

我們知道,webpack打包不會打包HtmlWebpackPlugin的template里的img標簽下的圖片,所以在html里使用了img標簽的圖片都要放在public文件夾下,CopyWebpackPlugin這個組件會直接把圖片復制過去

關于HtmlWebpackPlugin的具體參數的細則可以上網搜一下,很多這方面的內容
其他的比如loader、babel不在這篇文章想說的重點之列,不贅述

最后,附上webpack.config.js文件

 let actName = 'yourProjectName';//   let actKV = {    name: actName,    entry: {      // 通用css      commoncss: path.resolve(__dirname, './src/css/common.css.js'),      // 主頁      indexcss: path.resolve(__dirname, './src/css/index.css.js'),      index: path.resolve(__dirname, './src/index.js'),      // 分享頁1      sharecss: path.resolve(__dirname, './src/css/share.css.js'),      share: path.resolve(__dirname, './src/share.js'),      // 分享頁2      assistcss: path.resolve(__dirname, './src/css/assist.css.js'),      assist: path.resolve(__dirname, './src/assist.js'),    }  };    return {    entry: actKV.entry,    target: "web",    output: {      path: path.resolve(__dirname + '/dist/'+actName),      // publicPath: './/',      filename: 'js/[name].js',      // chunkFilename: "[name].chunk.[hash].js",    },    plugins: [      new webpack.ProvidePlugin({        $:"jquery"      }),      new CopyWebpackPlugin([{        from: __dirname + '/src/public/'      }]),      new HtmlWebpackPlugin({        filename: 'index.htm',        template: 'src/index.html',        chunks: ['commoncss', 'indexcss', 'index'],        inject: 'true',        hash: true,      }),      new HtmlWebpackPlugin({        filename: 'share.htm',        template: 'src/share.html',        chunks: ['commoncss', 'sharecss', 'share'],        inject: 'true',        hash: true,      }),      new HtmlWebpackPlugin({        filename: 'assist.htm',        template: 'src/assist.html',        chunks: ['commoncss', 'assistcss', 'assist'],        inject: 'true',        hash: true,      })    ],    mode: 'development',    node: {      __filename: true,      __dirname: true    },    devtool: isProduction ? 'source-map':'inline-source-map',    devServer:{      inline: true,      open: true,       historyApiFallback: true,       // host: ip.address(),      host: 'localhost',      progress: true,      contentBase: "./dist/",      port: 3430,      historyApiFallback:true,      publicPath:'/src/',      proxy: {        '*': {          target: 'http://127.0.0.1:3430',          secure: false        }      },    },    resolve: {      alias: {      },      extensions: ['.js', '.less', '.css', '.vue', '.jsx'],    },    externals: {    },    module: {      rules: [{        test: //.vue$/,        loader: 'vue-loader',      }, {        test: //.js$/,        include: path.join(__dirname,'/src'),        exclude: path.resolve(__dirname, 'node_modules'),        use:[          {            loader: 'babel-loader',            query: {              presets: ['es2015']            }          }        ]      }, {        test: //.xml$/,        loader: "xml-loader"      }, {        test: //.(css|less)$/,        loader: "style-loader!css-loader",      },       {        test: //.(png|jpg|jpeg|gif|icon|webp)$/,        loader: 'url-loader',        options: {          limit: 16384,          name: 'images/[name].[hash:5].[ext]',        }      },      {        test: //.(woff|woff2|svg|eot|ttf)/??.*$/,        loader: "file-loader?&name=assets/fonts/[name].[ext]"      }, {        test: //.txt$/,        loader: "text-loader"      },{        test: //.jsx$/,        exclude: /node_modules/,        loaders: ['jsx-loader', 'babel-loader']      }]    },      }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品性高朝久久久久久久| 热99久久精品| 中文字幕在线观看日韩| 精品久久久久久久中文字幕| 国产精品一区二区电影| 国产成人av在线| 亚洲国产毛片完整版| 日韩欧美高清视频| 成人免费激情视频| 国产性猛交xxxx免费看久久| 欧美一二三视频| 日本91av在线播放| 1769国产精品| 亚洲美女精品成人在线视频| 久久精品亚洲精品| 国产精品极品在线| 国产午夜精品久久久| 亚洲人成电影网站色www| 亚洲欧美国产精品专区久久| 亚洲成色777777女色窝| 国产精品99久久久久久久久久久久| 一区二区三区高清国产| 狠狠做深爱婷婷久久综合一区| 97碰碰碰免费色视频| 夜夜嗨av色综合久久久综合网| 欧美精品精品精品精品免费| 亚洲一区久久久| 欧美日韩国产精品一区二区不卡中文| 国产亚洲欧美aaaa| 国产精品亚洲一区二区三区| 日韩理论片久久| 九九视频直播综合网| 成人精品久久久| 日韩av在线免费| 国产激情综合五月久久| 国产精品小说在线| 成人网欧美在线视频| 亚洲一区二区三区xxx视频| 国产一区二区三区视频在线观看| 亚洲视频一区二区| 日本高清久久天堂| 中文字幕免费国产精品| 亚洲精品一区二区在线| 日韩精品免费一线在线观看| 久久久久久久久久久久av| 亚洲天堂av电影| 日韩二区三区在线| 欧美日韩国产在线| 国产日韩亚洲欧美| 欧美日韩中文字幕| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕亚洲字幕| 黑人巨大精品欧美一区二区三区| 一本色道久久综合亚洲精品小说| 国产在线98福利播放视频| 国产精品久久av| 97国产成人精品视频| 久久精品99无色码中文字幕| 欧美国产精品日韩| 久久精品国产清自在天天线| 中文字幕亚洲专区| 久久久国产一区二区| 日韩av男人的天堂| 久久久久久久久久久久久久久久久久av| 国产一区二区三区在线视频| 18性欧美xxxⅹ性满足| 日韩av网址在线观看| 亚洲精品国产精品国自产观看浪潮| 68精品国产免费久久久久久婷婷| 亚洲大胆人体av| 中文字幕少妇一区二区三区| 一本久久综合亚洲鲁鲁| 久久韩国免费视频| 亚洲黄色av女优在线观看| 日日骚av一区| 国产精自产拍久久久久久蜜| 亚洲香蕉伊综合在人在线视看| 亚洲精品午夜精品| 高清欧美电影在线| 91久久久久久久久久久| 亚洲综合av影视| 国产精品露脸自拍| 亚洲精品一区二区网址| 欧美激情一二区| 成人两性免费视频| 欧美性受xxxx黑人猛交| 国产视频精品在线| 国产黑人绿帽在线第一区| 黑人巨大精品欧美一区二区免费| 国产精品久久久久久超碰| 欧美性xxxx极品hd欧美风情| 国产自产女人91一区在线观看| 欧美精品videosex牲欧美| 久久九九国产精品怡红院| 久久久精品欧美| 国产精品一二区| 久热精品在线视频| 在线观看精品自拍私拍| 欧美激情视频免费观看| 亚洲欧美国产日韩天堂区| 欧美伦理91i| 91精品视频免费观看| 久久久久久久一区二区三区| 日韩av一区在线观看| 亚洲区中文字幕| 欧美自拍视频在线| 日韩中文有码在线视频| 亚洲一区av在线播放| 亚洲精品在线观看www| 久久亚洲春色中文字幕| 欧美寡妇偷汉性猛交| 国产亚洲欧美日韩一区二区| 亚洲人成欧美中文字幕| 97成人精品视频在线观看| 国产欧美亚洲视频| 欧美激情视频一区二区三区不卡| 久久99精品视频一区97| 国产精品普通话| 日韩视频精品在线| 日韩激情片免费| 国产精品自在线| 欧美性猛交xxxx乱大交极品| 亚洲成人久久久久| 国产午夜精品视频免费不卡69堂| 国产在线观看精品一区二区三区| 91av在线免费观看| 国产69久久精品成人看| 亚洲品质视频自拍网| 日韩精品电影网| 中文字幕成人在线| 日韩在线视频线视频免费网站| 国产精品久久久久久久久久小说| 亚洲日本成人网| 欧美成人精品xxx| 92国产精品久久久久首页| 日韩av免费观影| 国产精品99久久久久久久久| 国产69精品久久久久9| 日韩av在线网| 国产亚洲欧美日韩精品| 国产精品扒开腿做| 欧美老女人xx| 国产精品高清网站| 国产亚洲欧美aaaa| 久久精品亚洲国产| 亚洲激情视频网| 欧美日韩亚洲激情| 亚洲精品第一国产综合精品| 亚洲高清久久久久久| 成人观看高清在线观看免费| 色综合天天狠天天透天天伊人| 国产亚洲欧洲高清一区| 国产偷国产偷亚洲清高网站| 欧美日韩免费观看中文| 麻豆一区二区在线观看| 国产伦精品免费视频| 亚洲在线免费观看| 国产精国产精品| 中文一区二区视频| 97视频免费在线看| 久久国产色av| 亚洲人线精品午夜| 欧美日韩第一页| 欧美最猛性xxxxx(亚洲精品)|