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

最新文章專題視頻專題問答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
主站蜘蛛池模板: 欧美日韩国产高清一区二区三区 | 国产中文在线 | 欧美精品午夜久久久伊人 | 国内精品视频一区二区三区 | 国产一区二区三区精品视频 | 色综合天天综合中文网 | 一道精品一区二区三区 | 亚洲va在线va天堂va四虎 | 国产成人免费在线视频 | 国产区亚洲区 | 欧美国产日韩另类 | 日韩欧美精品综合一区二区三区 | 亚洲欧美日韩综合在线 | 999国产精品999久久久久久 | 中文字幕第一页亚洲 | 久久精品国产免费一区 | 久久成人毛片 | 精品视频一区二区三区 | 一级特黄女毛毛片 | 国产成人精品免费视 | 在线欧美日韩 | 日韩综合网站 | 欧美国产中文 | 91久久精品国产亚洲 | 亚欧美综合| 国产精品久久久久久久久鸭 | 欧美激情hd | 国产亚洲一区二区三区啪 | 国产 在线 | 日韩 | 日韩免费一区二区三区在线 | 又黄又爽无遮挡免费视频 | 天堂亚洲欧美日韩一区二区 | 国产视频高清 | 成人无码一区二区片 | 91色欧美 | 久久亚洲一级α片 | 国产传媒一区二区三区四区五区 | 国产成人久久精品激情91 | 午夜视频免费在线观看 | 毛片免费网址 | 九九九国产在线 |