<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue-cli創建項目從單頁面到多頁面的方法

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

        Vue-cli創建項目從單頁面到多頁面的方法

        Vue-cli創建項目從單頁面到多頁面的方法:對于某些項目來說,單頁面不能很好的滿足需求,所以需要將vue-cli創建的單頁面項目改為多頁面項目。 需要修改以下幾個文件: 1、下載依賴glob $npm install glob --save-dev 2、修改build下的文件 (1)修改webpack.base.conf.js 添加
        推薦度:
        導讀Vue-cli創建項目從單頁面到多頁面的方法:對于某些項目來說,單頁面不能很好的滿足需求,所以需要將vue-cli創建的單頁面項目改為多頁面項目。 需要修改以下幾個文件: 1、下載依賴glob $npm install glob --save-dev 2、修改build下的文件 (1)修改webpack.base.conf.js 添加

        對于某些項目來說,單頁面不能很好的滿足需求,所以需要將vue-cli創建的單頁面項目改為多頁面項目。

        需要修改以下幾個文件:

        1、下載依賴glob

        $npm install glob --save-dev

        2、修改build下的文件

        (1)修改webpack.base.conf.js

        添加以下代碼:

        var glob = require('glob');
        var entries = getEntry('./src/pages/**/*.js')

        將module.exports中的

        entry: {
         app: './src/main.js'
         },

        注釋掉,然后添加這一行代碼:

         entry: entries,

        至于entries是什么,別急呀,看下面:

        添加一個方法:

        //獲取入口js文件
        function getEntry(globPath) {
         var entries = {},
         basename, tmp, pathname;
        
         glob.sync(globPath).forEach(function (entry) {
         basename = path.basename(entry, path.extname(entry));
         pathname = basename.split("_")[0]; //index_main.js得到index
         entries[pathname] = entry;
         });
         return entries;
        }
        

        這個文件修改成這樣子就可以了。

        (2)修改webpack.dev.conf.js

        添加以下代碼:

        //引入
        var glob = require('glob')
        var path = require('path')
        
        

        將module.exports中的plugins里的

        new HtmlWebpackPlugin({
         filename: 'index.html',
         template: 'index.html',
         inject: true
        }),
        
        

        注釋掉,然后添加以下代碼:

        function getEntry(globPath) {
         
         var entries = {},basename;
        
         glob.sync(globPath).forEach(function (entry) {
         basename = path.basename(entry, path.extname(entry));
         entries[basename] = entry;
         });
         return entries;
        }
        
        var pages = getEntry('src/pages/**/*.html');
        
        for (var pathname in pages) {
         // 配置生成的html文件,定義路徑等
         var conf = {
         filename: pathname + '.html',
         template: pages[pathname], // 模板路徑
         inject: true, // js插入位置
         chunks:[pathname]
         };
         module.exports.plugins.push(new HtmlWebpackPlugin(conf));
        }
        
        

        這個文件修改到此就可以了。

        (3)webpack.prod.conf.js

        這個文件修改的套路與上一個文件類似
         添加以下代碼: var glob = require('glob') 因為項目在創建時,生成項目的時候是直接將可選的所有依賴都選擇了yes,所以項目中的env的聲明定義如下:

        代碼如下:
        var env = process.env.NODE_ENV === 'testing ? require('../config/test.env') : config.build.env ;

        但是由于webpack.test.conf.js文件目前還沒有進行修改,所以需要把這行聲明換成下面這行:

        var env = config.build.env

        將webpackConfig中的plugins里的

        new HtmlWebpackPlugin({
         filename: config.build.index,
         template: 'index.html',
         inject: true,
         minify: {
         removeComments: true,
         collapseWhitespace: true,
         removeAttributeQuotes: true
         },
         chunksSortMode: 'dependency'
        }),
        
        

        注釋掉,在聲明定義webpackConfig的后面添加以下代碼:

        function getEntry(globPath) {
         var entries = {},
         basename;
         glob.sync(globPath).forEach(function (entry) {
         basename = path.basename(entry, path.extname(entry));
         entries[basename] = entry;
         });
         return entries;
        }
        
        var pages = getEntry('src/pages/**/*.html');
        
        for (var pathname in pages) {
         var conf = {
         filename: process.env.NODE_ENV === 'testing'
         ? pathname + '.html'
         : config.build[pathname],
         template: pages[pathname],
         inject: true,
         minify: {
         removeComments: true,
         collapseWhitespace: true,
         removeAttributeQuotes: true
         },
         chunks:[pathname]
         }
         webpackConfig.plugins.push(new HtmlWebpackPlugin(conf));
        }
        
        

        此時,這個文件也修改好了。

        3、修改config下的文件

        這個文件夾下,只需要修改一個文件:index.js 這個文件的作用是,尋找文件路徑,然后根據這個文件設置的目錄層級,生成打包后的文件以及相應的層級文件結構。 添加以下代碼:

        var build = {
         env: require('./prod.env'),
         assetsRoot: path.resolve(__dirname, '../dist'),
         assetsSubDirectory: 'static',
         assetsPublicPath: '/',
         productionSourceMap: true,
         productionGzip: false,
         productionGzipExtensions: ['js', 'css']
        }
        
        function getEntry(globPath) {
         var entries = {},basename;
        
         glob.sync(globPath).forEach(function(entry) {
         basename = path.basename(entry, path.extname(entry));
         entries[basename] = entry;
         });
         return entries;
        }
        
        var pages = getEntry('src/pages/**/*.html');
         
        //入口 index: path.resolve(__dirname, '../dist/index.html')
        for (var pathname in pages) {
         build[pathname] = path.resolve(__dirname, '../dist/' + pathname + '.html')
        }
        
        

        然后將module.exports中的build的值換成我們剛剛添加聲明的變量build。 如果希望修改打包后的目層級結構,可以在build中修改;還可以在build中增加我們需要定義的變量,比如我們需要將fabfile.py和favicon.ico拷貝到dist目錄下的a目錄下,就可以在build中定義一個屬性,

        distA:path.resolve(__dirname, '../dist/a), 

        然后因為在webpack.prod.conf.js中已經引入了'copy-webpack-plugin'(var CopyWebpackPlugin = require('copy-webpack-plugin')),我們就可以在 webpackConfig.plugins下添加如下代碼:

        new CopyWebpackPlugin([
         {
         from: path.resolve(__dirname, '../fabfile.py'),
         to: config.build.distA,
         template: 'fabfile.py'
         }
         ])
        new CopyWebpackPlugin([
         {
         from: path.resolve(__dirname, '../favicon.ico'),
         to: config.build.distA,
         template: 'favicon.ico'
         }
         ])
        

        在src目錄下添加pages文件夾

        目錄的層級結構安排成類似于這種形式:

        5、打包

        做完以上修改,雖然本地運行沒有問題,但是打包后,還是會有問題,會出現報錯:webpackJsonp is not defined
        解決方式如下: 在webpack.prod.conf.js文件下的for (var pathname in pages)循環中定義的conf里,添加兩行代碼:

        chunksSortMode: 'dependency', // dependency 頁面中引入的js按照依賴關系排序;manual 頁面中引入的js按照下面的chunks的數組中的順序排序;
        
        chunks: ['manifest', 'vender', pathname] // 生成的頁面中引入的js,'manifest', 'vender'這兩個js是webpack在打包過程中抽取出的一些公共方法依賴,其中,'manifest'又是從'vender'中抽取得到的,所以這三個js文件的依賴關系是 pathname依賴 'vender','vender'依賴'manifest'.
        

        綜上,就是本次項目從單頁面到多頁面項目的轉變歷程,關于webpack.test.conf.js文件的修改,后續修改成功后,會繼續補充添加。

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

        文檔

        Vue-cli創建項目從單頁面到多頁面的方法

        Vue-cli創建項目從單頁面到多頁面的方法:對于某些項目來說,單頁面不能很好的滿足需求,所以需要將vue-cli創建的單頁面項目改為多頁面項目。 需要修改以下幾個文件: 1、下載依賴glob $npm install glob --save-dev 2、修改build下的文件 (1)修改webpack.base.conf.js 添加
        推薦度:
        標簽: 項目 構建 單頁面
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩在线永久免费播放| 亚洲欧美成人综合久久久| 黄色一级毛片免费看| 日韩不卡免费视频| 99久久精品国产亚洲| 中文字幕免费在线看电影大全| 国产精品免费视频播放器| 亚洲一区AV无码少妇电影| 免费阿v网站在线观看g| 亚洲理论精品午夜电影| 91精品国产免费久久国语麻豆| 亚洲国产精品一区二区第一页| 精品国产污污免费网站入口| 亚洲女同成人AⅤ人片在线观看| 精品亚洲国产成人av| 免费观看美女裸体网站| 亚洲色大成网站www久久九| 最近中文字幕mv免费高清视频7| 国产精品亚洲片在线va| 成人免费毛片内射美女-百度| 亚洲国产综合精品| 97无码免费人妻超级碰碰碰碰 | 亚洲a视频在线观看| 中国xxxxx高清免费看视频| 亚洲成人动漫在线观看| 国产精品69白浆在线观看免费| 亚洲一区二区三区久久| 国产精品黄页在线播放免费| 久久亚洲中文字幕无码| 国产午夜亚洲精品理论片不卡| 国产一级黄片儿免费看| 久久精品国产精品亚洲毛片| 免费在线观看h片| 亚洲欧美国产精品专区久久| 亚洲第一视频在线观看免费| 中文字幕免费视频精品一| 亚洲国产精品无码久久一区二区| 精品一区二区三区无码免费视频 | 亚洲欧洲精品国产区| 国内精自视频品线六区免费| 亚洲精品国产福利在线观看|