国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

詳解如何使用webpack打包多頁(yè)jquery項(xiàng)目

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:01:19
文檔

詳解如何使用webpack打包多頁(yè)jquery項(xiàng)目

詳解如何使用webpack打包多頁(yè)jquery項(xiàng)目:雖然已經(jīng)2019年了 不過(guò)有一些項(xiàng)目 還是需要用到j(luò)query的 不過(guò)考慮到使用jquery的一堆兼容性問(wèn)題 也為了可以順利地使用ES6來(lái)擼代碼 研究使用webpack+babel打包代碼來(lái)發(fā)布 幾個(gè)重點(diǎn): 1.為了將模塊分割加載,不至于一個(gè)js文件過(guò)大,一個(gè)頁(yè)面中使用多個(gè)js文
推薦度:
導(dǎo)讀詳解如何使用webpack打包多頁(yè)jquery項(xiàng)目:雖然已經(jīng)2019年了 不過(guò)有一些項(xiàng)目 還是需要用到j(luò)query的 不過(guò)考慮到使用jquery的一堆兼容性問(wèn)題 也為了可以順利地使用ES6來(lái)擼代碼 研究使用webpack+babel打包代碼來(lái)發(fā)布 幾個(gè)重點(diǎn): 1.為了將模塊分割加載,不至于一個(gè)js文件過(guò)大,一個(gè)頁(yè)面中使用多個(gè)js文

雖然已經(jīng)2019年了
不過(guò)有一些項(xiàng)目
還是需要用到j(luò)query的
不過(guò)考慮到使用jquery的一堆兼容性問(wèn)題
也為了可以順利地使用ES6來(lái)擼代碼
研究使用webpack+babel打包代碼來(lái)發(fā)布

幾個(gè)重點(diǎn):

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

例如,我們有三個(gè)頁(yè)面:index、share、assist

三個(gè)頁(yè)面有通用的css文件:common.css

設(shè)置入口文件時(shí),可以這樣設(shè)置

entry: {
 // 通用css
 commoncss: path.resolve(__dirname, './src/css/common.css.js'),

 // 主頁(yè)
 indexcss: path.resolve(__dirname, './src/css/index.css.js'),
 index: path.resolve(__dirname, './src/index.js'),

 // 頁(yè)1
 sharecss: path.resolve(__dirname, './src/css/share.css.js'),
 share: path.resolve(__dirname, './src/share.js'),

 // 頁(yè)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文件結(jié)束

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

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

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

對(duì),就一句話

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

然后,要使用三個(gè)webpack的插件

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

HtmlWebpackPlugin 用于打包出多個(gè)html文件

CopyWebpackPlugin 用于img標(biāo)簽,后面說(shuō)

jquery 就是jquery,全局引用

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

plugins: [
 new webpack.ProvidePlugin({
 $:"jquery"
 }),
 new CopyWebpackPlugin([{
 from: __dirname + '/src/public/'
 }]), // 吧src下public文件夾下的所有內(nèi)容直接拷貝到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是三個(gè)文件分別的入口文件

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

dist文件夾如下


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

我們知道,webpack打包不會(huì)打包HtmlWebpackPlugin的template里的img標(biāo)簽下的圖片,所以在html里使用了img標(biāo)簽的圖片都要放在public文件夾下,CopyWebpackPlugin這個(gè)組件會(huì)直接把圖片復(fù)制過(guò)去

關(guān)于HtmlWebpackPlugin的具體參數(shù)的細(xì)則可以上網(wǎng)搜一下,很多這方面的內(nèi)容
其他的比如loader、babel不在這篇文章想說(shuō)的重點(diǎn)之列,不贅述

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

 let actName = 'yourProjectName';// 
 let actKV = {
 name: actName,
 entry: {
 // 通用css
 commoncss: path.resolve(__dirname, './src/css/common.css.js'),

 // 主頁(yè)
 indexcss: path.resolve(__dirname, './src/css/index.css.js'),
 index: path.resolve(__dirname, './src/index.js'),

 // 分享頁(yè)1
 sharecss: path.resolve(__dirname, './src/css/share.css.js'),
 share: path.resolve(__dirname, './src/share.js'),

 // 分享頁(yè)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']
 }]
 },
 
 }

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳解如何使用webpack打包多頁(yè)jquery項(xiàng)目

詳解如何使用webpack打包多頁(yè)jquery項(xiàng)目:雖然已經(jīng)2019年了 不過(guò)有一些項(xiàng)目 還是需要用到j(luò)query的 不過(guò)考慮到使用jquery的一堆兼容性問(wèn)題 也為了可以順利地使用ES6來(lái)擼代碼 研究使用webpack+babel打包代碼來(lái)發(fā)布 幾個(gè)重點(diǎn): 1.為了將模塊分割加載,不至于一個(gè)js文件過(guò)大,一個(gè)頁(yè)面中使用多個(gè)js文
推薦度:
標(biāo)簽: 打包 頁(yè)面 解析
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国内精品一区二区三区 | 国产一区成人 | 国产区在线视频 | 日韩一区二区三区免费 | 欧美极品另类xxx | 国产成a人片在线观看视频下载 | 亚洲第一免费视频 | 欧美亚洲综合一区 | 成人久久久久久 | 欧美精品在线一区 | 91在线一区二区 | 欧美色图亚洲激情 | 精品国产自在在线在线观看 | 91区国产| 欧美精品午夜久久久伊人 | 欧美一区三区 | 中文在线第一页 | 久久久国产99久久国产久 | 亚洲另类网 | 四虎精品永久在线 | 久久免费国产精品一区二区 | zozozo性欧美禽交3 | 国产日韩一区二区三区在线播放 | 日本va视频 | 在线观着免费观看国产黄 | 欧美精品午夜久久久伊人 | 五月天婷婷丁香 | 精品欧美 | 91香蕉国产 | 二区久久国产乱子伦免费精品 | 午夜看一级特黄a大片黑 | 亚洲第一欧美 | 亚洲国产激情 | 精品日韩欧美一区二区三区 | 欧美精品福利 | 亚洲国产欧美国产综合一区 | 久久国产精品一区二区 | 亚洲高清在线视频 | 国产精品成人69xxx免费视频 | 国产成人精品日本亚洲专区6 | 在线观看精品国产 |