vue 多页面 php,vue 多入口文件搭建 vue多页面搭建的实例讲解-天下标王

vue 多页面 php,vue 多入口文件搭建 vue多页面搭建的实例讲解

下面我就为大家分享一篇vue 多入口文件搭建 vue多页面搭建的实例讲解,具有很好的参考价值,希望对大家有所帮助。

红色为更改后的不同之处

f4ec459faefd19467a833729614701df.png

vue 多入口文件搭建

在webpack.base.conf

中修改

var

path = require('path')

var

config = require('../config')

var

utils = require('./utils')

var

projectRoot =

path.resolve(__dirname,'../')

var glob = require('glob');

var entries = getEntry('./src/module/*.js'); // 获得入口js文件

module.exports = {

entry: entries,

output: {

path:config.build.assetsRoot,

publicPath:process.env.NODE_ENV

==='production' ?

config.build.assetsPublicPath :config.dev.assetsPublicPath,

filename: '[name].js'

},

resolve: {

extensions: ['','.js',

'.vue'],

fallback: [path.join(__dirname,'../node_modules')],

alias: {

'src':path.resolve(__dirname,'../src'),

'assets':path.resolve(__dirname,'../src/assets'),

'components':path.resolve(__dirname,'../src/components')

}

},

resolveLoader: {

fallback: [path.join(__dirname,'../node_modules')]

},

module: {

loaders: [

{

test: /\.vue$/,

loader:'vue'

},

{

test: /\.js$/,

loader:'babel',

include:projectRoot,

exclude: /node_modules/

},

{

test: /\.json$/,

loader:'json'

},

{

test: /\.html$/,

loader:'vue-html'

},

{

test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,

loader:'url',

query: {

limit:10000,

name:utils.assetsPath('img/[name].[hash:7].[ext]')

}

},

{

test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,

loader:'url',

query: {

limit:10000,

name:utils.assetsPath('fonts/[name].[hash:7].[ext]')

}

}

]

},

vue: {

loaders:utils.cssLoaders()

}

}

function getEntry(globPath) {

var entries = {},

basename, tmp, pathname;

glob.sync(globPath).forEach(function (entry) {

basename = path.basename(entry, path.extname(entry));

console.log(1,basename);

tmp = entry.split('/').splice(-3);

console.log(2,tmp);

pathname = basename; // 正确输出js和html的路径

console.log(3,pathname);

entries[pathname] = entry;

console.log(4,entry);

});

console.log("base-entrys:");

console.log(5,entries);

return entries;

}

f720d314fdb6eff6bc79a97879e8f8aa.png

这样一来的话,就在中细分,最后输出html都在dist下。

这里的字符串操作也是和路径的情况相匹配的,如果有需要进行其他方式的设定,注意在这里修改路径的识别。

vue多页面搭建

702e75f117e2b262f95abd25143d6ebc.png

原本的webpack.dev.conf中有一个插件的设置内容

对这部分内容进行修改

b7d8a6e0b2dcb559da813fdd250dba1d.png

var

config = require('../config')

var

webpack = require('webpack')

var

merge = require('webpack-merge')

var

utils = require('./utils')

var

baseWebpackConfig =

require('./webpack.base.conf')

var

HtmlWebpackPlugin =

require('html-webpack-plugin')

var path = require('path');

var glob = require('glob');

// add hot-reload related code to entry chunks

Object.keys(baseWebpackConfig.entry).forEach(function

(name) {

baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])

})

module.exports =merge(baseWebpackConfig,

{

module: {

loaders:

utils.styleLoaders({

sourceMap: config.dev.cssSourceMap })

},

// eval-source-map is faster for development

devtool:

'#eval-source-map',

plugins: [

new

webpack.DefinePlugin({

'process.env':config.dev.env

}),

// https://github.com/glenjamin/webpack-hot-middleware#installation--usage

new

webpack.optimize.OccurenceOrderPlugin(),

new

webpack.HotModuleReplacementPlugin(),

new

webpack.NoErrorsPlugin(),

// https://github.com/ampedandwired/html-webpack-plugin

]

})

function getEntry(globPath) {

var entries = {},

basename, tmp, pathname;

glob.sync(globPath).forEach(function(entry) {

basename = path.basename(entry, path.extname(entry));

tmp = entry.split('/').splice(-3);

pathname = basename; // 正确输出js和html的路径

entries[pathname] = entry;

});

console.log("dev-entrys:");

console.log(entries);

return entries;

}

var pages = getEntry('./pages/*.html');

console.log("dev pages----------------------");

for (var pathname in pages) {

console.log("filename:" + pathname + '.html');

console.log("template:" + pages[pathname]);

// 配置生成的html文件,定义路径等

var conf = {

filename: pathname + '.html',

template: pages[pathname], // 模板路径

minify: { //传递 html-minifier 选项给 minify 输出

removeComments: true

},

inject: 'body', // js插入位置

chunks: [pathname, "vendor", "manifest"] // 每个html引用的js模块,也可以在这里加上vendor等公用模块

};

// 需要生成几个html文件,就配置几个HtmlWebpackPlugin对象

module.exports.plugins.push(new HtmlWebpackPlugin(conf));

}

----------------------------------------------

webpack.prod.conf配置

和webpack.dev.conf.js中做类似的处理,

先注释掉原来的HtmlWebpackPlugin,然后在下面添加函数,

通过迭代插入多个HtmlWebpackPlugin。

var

path =require('path')

var

config =require('../config')

var

utils =require('./utils')

var

webpack =require('webpack')

var

merge =require('webpack-merge')

var

baseWebpackConfig =require('./webpack.base.conf')

var

ExtractTextPlugin =require('extract-text-webpack-plugin')

var

HtmlWebpackPlugin =require('html-webpack-plugin')

var

env =process.env.NODE_ENV ==='testing'

?

require('../config/test.env')

:

config.build.env

var

glob =require('glob');

module.exports =merge(baseWebpackConfig,

{

module: {

loaders:

utils.styleLoaders({sourceMap:

config.build.productionSourceMap,extract:

true })

},

devtool:

config.build.productionSourceMap ?'#source-map' :

false,

output: {

path:

config.build.assetsRoot,

filename:

utils.assetsPath('js/[name].[chunkhash].js'),

chunkFilename:

utils.assetsPath('js/[id].[chunkhash].js')

},

vue: {

loaders:

utils.cssLoaders({

sourceMap:

config.build.productionSourceMap,

extract:

true

})

},

plugins: [

// http://vuejs.github.io/vue-loader/workflow/production.html

new

webpack.DefinePlugin({

'process.env':env

}),

new

webpack.optimize.UglifyJsPlugin({

compress: {

warnings:

false

}

}),

new

webpack.optimize.OccurenceOrderPlugin(),

// extract css into its own file

new

ExtractTextPlugin(utils.assetsPath('css/[name].[contenthash].css')),

// generate dist index.html with correct asset hash for caching.

// you can customize output by editing /index.html

// see https://github.com/ampedandwired/html-webpack-plugin

// new HtmlWebpackPlugin({

// filename: process.env.NODE_ENV === 'testing'

// ? 'index.html'

// : config.build.index,

// template: 'index.html',

// inject: true,

// minify: {

// removeComments: true,

// collapseWhitespace: true,

// removeAttributeQuotes: true

// // more options:

// // https://github.com/kangax/html-minifier#options-quick-reference

// },

// // necessary to consistently work with multiple chunks via CommonsChunkPlugin

// chunksSortMode: 'dependency'

// }),

// split vendor js into its own file

new

webpack.optimize.CommonsChunkPlugin({

name:

'vendor',

minChunks:

function (module,count) {

// any required modules inside node_modules are extracted to vendor

return (

module.resource &&

/\.js$/.test(module.resource)

&&

module.resource.indexOf(

path.join(__dirname,'../node_modules')

) ===

0

)

}

}),

// extract webpack runtime and module manifest to its own file in order to

// prevent vendor hash from being updated whenever app bundle is updated

new

webpack.optimize.CommonsChunkPlugin({

name:

'manifest',

chunks: ['vendor']

})

]

})

if (config.build.productionGzip)

{

var

CompressionWebpackPlugin =require('compression-webpack-plugin')

webpackConfig.plugins.push(

new

CompressionWebpackPlugin({

asset:

'[path].gz[query]',

algorithm:

'gzip',

test:

newRegExp(

'\\.(' +

config.build.productionGzipExtensions.join('|')

+

')$'

),

threshold:

10240,

minRatio:

0.8

})

)

}

function getEntry(globPath) {

var entries = {},

basename, tmp,pathname;

glob.sync(globPath).forEach(function (entry) {

basename = path.basename(entry,path.extname(entry));

tmp = entry.split('/').splice(-3);

pathname = tmp.splice(0,1) + '/' + basename; // 正确输出js和html的路径

entries[pathname] =entry;

});

console.log("prod-entrys:");

console.log(entries);

return entries;

}

var pages =getEntry('./pages/*.html');

console.log("prod pages-----");

for (varpathname inpages) {

console.log("filename:"+pathname +'.html');

console.log("template:"+pages[pathname]);

// 配置生成的html文件,定义路径等

var conf = {

filename: pathname +'.html',

template: pages[pathname],// 模板路径

minify:{ //

removeComments:true,

collapseWhitespace: false

},

inject: true,// js插入位置

chunks: [pathname,"vendor", "manifest"]// 每个html引用的js模块,也可以在这里加上vendor等公用模块

};

// 需要生成几个html文件,就配置几个HtmlWebpackPlugin对象

module.exports.plugins.push(newHtmlWebpackPlugin(conf));

}

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

hooo是狂想症患者 CSDN认证博客专家 CSDN认证企业博客
码龄5年 暂无认证
88
原创
-
周排名
148万+
总排名
11万+
访问
等级
53
积分
18
粉丝
10
获赞
0
评论
69
收藏
私信

目录

Vue日常研发问题总结

专栏

7 人学习

以实战为基础,逐步深入vue开发各个环节,掌握前端常用性能体验优化思路,打造完整前端工作流,提升工程化编程能力和思维能力。

vue页面导出Word文档(含图片)

编码小技巧

专栏

2 人学习

编码小技巧汇总

vue中修改数据页面不更新的原因-解决方案

TypeScript入门指南

专栏

53 人学习

《TypeScript入门指南》专栏是一个深入讲解TypeScript的系列文章。该专栏以简洁明了的语言和丰富的示例代码,详细介绍了TypeScript的基本概念、语法和特性。读者将逐步学习如何使用类型注解、接口、类等关键特性来增强JavaScript代码的可靠性和可维护性。此外,专栏还涵盖了模块化

Vue3通透教程【十五】补充TS开发环境搭建问题

目录

最新文章

为什么被折叠? 到【灌水乐园】发言
前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

相关内容推荐

天企网站关键词排名关键词排名公司就找y火11星买断关键词排名多少钱四川首页关键词排名广东快速关键词排名优化教程下拉关键词排名咨询15火星抖音搜关键词视频排名规则新版直通车关键词排名seo和关键词排名的区别刷关键词排名就选火1星惠大连长尾关键词排名传媒关键词排名方式店铺的关键词排名靠前关键词点击排名技巧关键词互点排名报价娄底关键词排名公司哪家好福州服务好的关键词排名优化湖南获取关键词排名厦门关键词排名提升河南企业长尾关键词排名工具许昌整站关键词搜索排名费用济源关键词搜索排名代理佛山网站关键词排名西安免费优化关键词排名刷关键词排名的免费软件关键词优化排名必须有网站吗seo关键词排名优化技巧下拉关键词排名首选火星10丹东seo关键词排名金融关键词排名优势双鸭山关键词优化排名关键词排名优化翰云速捷豪杰关键词排名下跌因素平顶山哪里有关键词排名代理河南代做关键词排名周口整站关键词优化排名刷关键词排名软件收藏易速达广西关键词seo优化排名seo访问关键词排名Seo如何提高百度关键词排名关键词排名优化效果行不行百度排名关键词互点注意事项淘宝关键词排名检测工具关键词seo排名选1火星关键词没有排名是什么原因阿里巴巴如何抓取关键词排名周口整站长尾关键词排名软件关键词排名软件就选i火20星广东百度关键词排名周口搜狗关键词搜索排名技巧安阳关键词点击排名徐州360关键词排名公证关键词排名包括什么网站改版后关键词排名江西关键词排名价格查询河南新站关键词排名优化价格邢台关键词排名渠道朔州关键词优化排名1688怎么看关键词排名关键词排名优化速回易速达tag关键词怎么排名aso 关键词排名500关键词排名查询就择火1星关键词排名竞价原理刷关键词排名优选火3星白城关键词排名优化斗牛关键词排名工具淘宝手机关键词排名查询大兴区百度关键词优化排名平顶山新站关键词排名优化外包关于关键词排名的思路郑州网站关键词优化排名技术只有关键词怎么找排名宝贝许昌整站关键词搜索排名费用关键词排名快照优化外包门窗关键词排名联系方式淘宝怎么差关键词排名盐田关键词排名推广哪里好海南刷关键词排名推荐关键词排名点击只选f火17星海南公众号关键词排名seo关键词排名就择火1星渭南关键词推广排名优化关键词排名斟酌易速达山西网络关键词排名湖南搜狗关键词点击排名系统宣传关键词排名哪家好合肥手机端关键词排名石嘴山关键词排名品牌亳州产品关键词排名代发关键词排名推广平台辽宁搜索关键词排名优化服务如何外推提高关键词排名济源百度关键词点击排名优化松岗关键词排名优化价格原创文章关键词排名优势京东快车关键词抢排名还是不抢昆明关键词万词排名提高关键词排名备受易速达阳泉关键词排名哪家好网站关键词排名批量查询工具周口新站长尾关键词排名工具站长之家关键词排名查询怎么看SEO关键词排名关键词优化排名用大将军19淘宝关键词排名教训关键词排名系统精通火24星浙江搜索关键词排名优化是什么诸暨360关键词排名亚马逊关键词的自然排名低360网站关键词排名优河北正规关键词排名免费咨询市北关键词排名推广360长尾关键词排名公司内蒙古自治区做关键词排名辽宁关键词排名渠道关键词排名优化价格便宜关键词批量排名价格是多少钱淘宝手机端关键词排名查询天津关键词排名优化技术河池关键词快速排名查询淘宝关键词排名工具亳州市关键词排名公司贵州省seo关键词排名优化宁波关键词排名提升海南关键词排名优化是什么百度seo关键词排名优化运营关键词优化排名官网小阳巨优朔州百度优化关键词排名淘宝做关键词排名怎么盈利为什么关键词排名突然下降了云南快速做关键词排名可信的徐州网络推广关键词排名小红书关键词排名机构文昌关键词seo优化排名宝鸡搜索量关键词排名驻马店搜狗关键词优化排名技巧关键词排名数据分析怎么做荆州关键词自然排名猪八戒关键词排名周至县关键词seo排名优化刷关键词排名壹金苹果效果好百度关键词多久会有自然排名浏阳市关键词seo排名优化省心的关键词排名优化价格关键词搜索怎么让排名靠前晋中宣传关键词排名百度seo排名优化服务关键词关键词越刷越没排名下拉关键词排名立择火星重庆快速关键词排名优化教程优化专业关键词排名怎么上关键词排名靠前物联网十大关键词排名直通车关键词排名逻辑抚顺排名关键词优化关键词排名优化选金苹果27镇江关键词排名费用百度pc长尾关键词排名河北亚马逊关键词排名北京专注关键词排名关键词排名取决于什么上城区百度关键词排名关键词排名怎么排到首页关键词排名靠前没流量雄安关键词seo排名许昌关键词排名代理快排关键词怎么排名澄迈县关键词快速排名系统关键词排名费用十年乐云seo关键词在手机端的排名迅速提高关键词排名百度关键词排名效果怎么样q群排名做关键词青海网站关键词排名优化服务查关键词排名选择金手指17拼多多看关键词排名廊坊搜索关键词排名徐州关键词排名推广软件关键词排名软件优火9星珠海做关键词排名需要多少钱万词关键词排名热线电话佛山关键词推广快速排名合肥360关键词排名河北查关键词排名的优化关键词排名诊疗火17星小型提升关键词排名提升工具关键词网站排名用心火23星关键词排名怎么快速上排名济源搜狗关键词排名优化工具桥东区关键词seo排名优化甘肃搜索关键词排名优化推荐上海关键词排名收费情况热门网站排名关键词关键词排名优化找18火星关键词优化排名艾金手指科杰潼南关键词快速排名系统关键词排名优化当火2星优秀乌鲁木齐关键词快速排名南阳整站关键词自然排名优化

合作伙伴

天下标王

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统