<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:01:19
        文檔

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

        詳解如何使用webpack打包多頁jquery項目:雖然已經2019年了 不過有一些項目 還是需要用到jquery的 不過考慮到使用jquery的一堆兼容性問題 也為了可以順利地使用ES6來擼代碼 研究使用webpack+babel打包代碼來發布 幾個重點: 1.為了將模塊分割加載,不至于一個js文件過大,一個頁面中使用多個js文
        推薦度:
        導讀詳解如何使用webpack打包多頁jquery項目:雖然已經2019年了 不過有一些項目 還是需要用到jquery的 不過考慮到使用jquery的一堆兼容性問題 也為了可以順利地使用ES6來擼代碼 研究使用webpack+babel打包代碼來發布 幾個重點: 1.為了將模塊分割加載,不至于一個js文件過大,一個頁面中使用多個js文

        雖然已經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']
         }]
         },
         
         }

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        詳解如何使用webpack打包多頁jquery項目:雖然已經2019年了 不過有一些項目 還是需要用到jquery的 不過考慮到使用jquery的一堆兼容性問題 也為了可以順利地使用ES6來擼代碼 研究使用webpack+babel打包代碼來發布 幾個重點: 1.為了將模塊分割加載,不至于一個js文件過大,一個頁面中使用多個js文
        推薦度:
        標簽: 打包 頁面 解析
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产日韩一区二区三免费高清| 中文字幕乱码亚洲无线三区 | 国产人成免费视频| 亚洲人成人无码.www石榴 | 99re免费99re在线视频手机版| 久久亚洲国产中v天仙www| 免费国产污网站在线观看| 亚洲精品高清国产一久久| 3344免费播放观看视频| 亚洲中文字幕久久精品蜜桃| 日韩一级免费视频| 黄色三级三级三级免费看| 亚洲午夜福利精品无码| 91国内免费在线视频| 亚洲精品美女久久久久| 青春禁区视频在线观看直播免费| 亚洲综合色一区二区三区| 免费少妇a级毛片人成网| 一级女人18片毛片免费视频| 亚洲精品无码久久久影院相关影片| 国内少妇偷人精品视频免费| 亚洲五月六月丁香激情| AA免费观看的1000部电影| 亚洲高清一区二区三区电影 | 日韩精品亚洲人成在线观看| 国产免费不卡v片在线观看| 亚洲AV成人精品日韩一区| 久久精品国产亚洲一区二区三区| 国产午夜精品免费一区二区三区| 亚洲精品美女久久久久| 性做久久久久免费看| 久久免费国产精品一区二区| 亚洲中文字幕久在线| 免费国产a国产片高清| 久久久久久一品道精品免费看| 国产精品高清视亚洲精品| 无码不卡亚洲成?人片| 99精品视频免费观看| 爱情岛论坛亚洲品质自拍视频网站| 亚洲AV综合色区无码另类小说| 女人让男人免费桶爽30分钟|