最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue-cli創(chuàng)建項(xiàng)目從單頁(yè)面到多頁(yè)面的方法

 更新時(shí)間:2017年09月20日 09:51:04   作者:silencetea  
本篇文章主要介紹了Vue-cli創(chuàng)建項(xiàng)目從單頁(yè)面到多頁(yè)面的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

對(duì)于某些項(xiàng)目來(lái)說(shuō),單頁(yè)面不能很好的滿足需求,所以需要將vue-cli創(chuàng)建的單頁(yè)面項(xiàng)目改為多頁(yè)面項(xiàng)目。

需要修改以下幾個(gè)文件:

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是什么,別急呀,看下面:

添加一個(gè)方法:

//獲取入口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;
}

這個(gè)文件修改成這樣子就可以了。

(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));
}

這個(gè)文件修改到此就可以了。

(3)webpack.prod.conf.js

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

復(fù)制代碼 代碼如下:

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

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

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));
}

此時(shí),這個(gè)文件也修改好了。

3、修改config下的文件

這個(gè)文件夾下,只需要修改一個(gè)文件:index.js 這個(gè)文件的作用是,尋找文件路徑,然后根據(jù)這個(gè)文件設(shè)置的目錄層級(jí),生成打包后的文件以及相應(yīng)的層級(jí)文件結(jié)構(gòu)。 添加以下代碼:

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。 如果希望修改打包后的目層級(jí)結(jié)構(gòu),可以在build中修改;還可以在build中增加我們需要定義的變量,比如我們需要將fabfile.py和favicon.ico拷貝到dist目錄下的a目錄下,就可以在build中定義一個(gè)屬性,

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

然后因?yàn)樵趙ebpack.prod.conf.js中已經(jīng)引入了'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文件夾

目錄的層級(jí)結(jié)構(gòu)安排成類(lèi)似于這種形式:

5、打包

做完以上修改,雖然本地運(yùn)行沒(méi)有問(wèn)題,但是打包后,還是會(huì)有問(wèn)題,會(huì)出現(xiàn)報(bào)錯(cuò):webpackJsonp is not defined
解決方式如下: 在webpack.prod.conf.js文件下的for (var pathname in pages)循環(huán)中定義的conf里,添加兩行代碼:

chunksSortMode: 'dependency', // dependency 頁(yè)面中引入的js按照依賴關(guān)系排序;manual 頁(yè)面中引入的js按照下面的chunks的數(shù)組中的順序排序;

chunks: ['manifest', 'vender', pathname] // 生成的頁(yè)面中引入的js,'manifest', 'vender'這兩個(gè)js是webpack在打包過(guò)程中抽取出的一些公共方法依賴,其中,'manifest'又是從'vender'中抽取得到的,所以這三個(gè)js文件的依賴關(guān)系是 pathname依賴 'vender','vender'依賴'manifest'.

綜上,就是本次項(xiàng)目從單頁(yè)面到多頁(yè)面項(xiàng)目的轉(zhuǎn)變歷程,關(guān)于webpack.test.conf.js文件的修改,后續(xù)修改成功后,會(huì)繼續(xù)補(bǔ)充添加。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue實(shí)現(xiàn)根據(jù)hash高亮選項(xiàng)卡

    Vue實(shí)現(xiàn)根據(jù)hash高亮選項(xiàng)卡

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)根據(jù)hash高亮選項(xiàng)卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問(wèn)題

    Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問(wèn)題

    這篇文章主要介紹了Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue移動(dòng)端微信授權(quán)登錄插件封裝的實(shí)例

    vue移動(dòng)端微信授權(quán)登錄插件封裝的實(shí)例

    今天小編就為大家分享一篇vue移動(dòng)端微信授權(quán)登錄插件封裝的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Vue項(xiàng)目引發(fā)的「過(guò)濾器」使用教程

    Vue項(xiàng)目引發(fā)的「過(guò)濾器」使用教程

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目引發(fā)的「過(guò)濾器」使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 一文詳解Vue?的雙端?diff?算法

    一文詳解Vue?的雙端?diff?算法

    這篇文章主要介紹了一文詳解Vue?的雙端?diff?算法,diff?算法是渲染器中最復(fù)雜的部分,也是面試的熱點(diǎn)問(wèn)題。今天我們就通過(guò)?Vue?的?diff?算法來(lái)探究下diff?算法吧
    2022-06-06
  • web前端vue之CSS過(guò)渡效果示例

    web前端vue之CSS過(guò)渡效果示例

    本篇文章主要介紹了web前端vue之CSS過(guò)渡效果示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • vue實(shí)現(xiàn)右鍵菜單欄

    vue實(shí)現(xiàn)右鍵菜單欄

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)右鍵菜單欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue3(三)網(wǎng)站首頁(yè)布局開(kāi)發(fā)

    Vue3(三)網(wǎng)站首頁(yè)布局開(kāi)發(fā)

    這篇文章主要介紹了Vue3網(wǎng)站首頁(yè)布局開(kāi)發(fā),上篇文章已經(jīng)提到集成Ant Design Vue后,和Element Ui一樣,還是組件的使用,接下倆我們就來(lái)看看Vue3網(wǎng)站首頁(yè)布局開(kāi)發(fā)的相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-10-10
  • vue2封裝input組件方式(輸入的雙向綁定)

    vue2封裝input組件方式(輸入的雙向綁定)

    這篇文章主要介紹了vue2封裝input組件方式(輸入的雙向綁定),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-04-04
  • vue中關(guān)于_ob_:observer的處理方式

    vue中關(guān)于_ob_:observer的處理方式

    這篇文章主要介紹了vue中關(guān)于_ob_:observer的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

东阳市| 延长县| 西昌市| 拜城县| 璧山县| 平湖市| 浪卡子县| 甘孜县| 河间市| 五常市| 弥勒县| 武清区| 彭泽县| 睢宁县| 长垣县| 南开区| 大安市| 东莞市| 清镇市| 德安县| 喜德县| 米易县| 清原| 肃南| 个旧市| 定西市| 广州市| 南雄市| 阿拉善盟| 深水埗区| 闻喜县| 延庆县| 长海县| 化州市| 巴彦县| 荣昌县| 喀什市| 临江市| 苏尼特右旗| 德庆县| 佛坪县|