webpack 教程 那些事儿05-多页应用
本篇主要关于如何用webpack构建多页应用
为什么要构建多页应用呢?因为我的项目本来就是多页应用啊
至于为什么要用webpack?因为我要用vue啊,嫌gulp 每次打包慢 啊
文章目录
利用vue-cli的配置,扩展成多页应用
想法总是简单,实践总是多坑。
理论支持:spa为单页,那么我是不是输出多个页面就成了多页呢?好像很对的样子。
问题来了,如何才能输出多个页面,主意很容易打到 html处理插件 html-webpack-plugin上面。
单页面输出:
|
1
2
3
4
5
|
new HtmlWebpackPlugin({
filename: 'index.html',
template: path.resolve(__dirname, './app/views/index.html'),
inject: true
})
|
多页面只需要多new 几个HtmlWebpackPlugin就好了嘛
马上实践,果然可以,✌️。那就动动吧!
兴奋的修改配置如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# webpack.base.conf.js
entry: getEntry(),
//获取js下面的所有输出js,多页面嘛
function getEntry() {
var jsPath = fs.readdirSync('./js/');
var matchs = [],files = {};
jsPath.forEach(function(item) {
matchs = item.match(/(.+)\.js$/);
if (matchs) {
files[matchs[1]] = path.resolve('./js/', item);
}
});
return files;
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# webpack.dev.conf.js
var baseWebpackConfig = require('./webpack.base.conf');
var pages = function() {
var dir = fs.readdirSync(path.resolve(__dirname, '../views/'));
return dir.filter(function(name) {
return name.match(/\.html$/);
});
}();
for(var i = 0; i<pages.length; i++){
var chunkname = pages[i];
var conf = {
filename: chunkname,
template: path.resolve(__dirname, '../views/'+chunkname),
inject: false
}
baseWebpackConfig.plugins.push(new HtmlWebpackPlugin(conf));
}
|
想必聪明的你还记得我之前说过的 inject 这个参数吧
如果inject: true,那么每个页面会注入entry中所有的js,所以配置为false,js自己写入
相对的,webpack.prod.conf.js也需要做相应配置。
至于其他资源文件路径什么报错问题,请自行解决,毕竟项目架构不同,错误也不尽相同。
我也是吃了很多苦头,排尽万难,终于把之前用gulp搭建的项目转换成webpack之后,并没有兴奋。
因为结果并不令我满意,为什么呢?
gulp项目转化成webpack之后的痛
- 项目大概二十多个页面(就是.html文件),启动项目需要一分钟
啦啦啦
我在等一分钟
或许下一分钟
能够感觉你也心痛
…
我想哭 - 还没有引入babel,引入babel转码之后,es6语法不生效
明明引入了babel转码,为毛始终不生效,头痛许久,查找到问题根源,
修改: include: ‘./js’ —-> include: “/“
原因未明 es6语法解决之后,打包更慢了,何止一分钟。。。这次不仅仅想哭
虽说整个项目用webpack打包,但是还有一些task必须依赖gulp完成,定制需求。
抛弃webpack多页应用配置
因为坑太多,太慢,太痛,太捉急,等等。至此搁笔,果断抛弃此方案!
下篇基于webpack的多页应用新方案
webpack 教程 那些事儿05-多页应用的更多相关文章
- webpack 教程 那些事儿06-gulp+webpack多页
本篇主要讲述用gulp+webpack构建多页应用 折腾到现在,项目还必须要进行,.vue文件必须要加载,也就是webpack必须引入.时间不多了,抛弃上个方案之后,只能牺牲热加载性能,用gulp+w ...
- webpack 教程 那些事儿04-webpack项目实战分析
这节主要讲解真正项目用用到的 webpack配置问题,项目实战篇 就像我们不会完全做一个项目,不用别人的轮子一样.这个配置我们借用 vue-cli 搭建的配置来研究,因为它已经足够优秀. 有了前面的基 ...
- webpack 教程 那些事儿03-webpack两大精华插件,热加载
本节主要讲述 webpack的两大经典开发调试插件,热插拔内存缓存机制 文章目录 1. html-webpack-plugin插件的使用 2. webpack-dev-middleware 插件登场 ...
- webpack 教程 那些事儿02-从零开始
接着上篇我们有了最简单的安装了webpack的项目目录这节我们从零开始搭建一个简单的基于webpack的spa应用demo本节只说基础常用配置项,复杂后续讲解. 文章目录 1. 新建项目结构目录,如下 ...
- webpack 教程 那些事儿01-webpack是什么
文章目录 1. 为什么引入webpack? 2. webpack到底是什么? 3. webpack的工作流程理念 4. webpack的使用 4.1. install webpack 5. 分享源码d ...
- [js高手之路]深入浅出webpack教程系列6-插件使用之html-webpack-plugin配置(下)
上文我们对html-webpack-plugin的实例htmlWebpackPlugin进行了遍历分析,讲解了几个常用属性( inject, minify )以及自定义属性的添加,本文,我们继续深入他 ...
- Webpack教程
打开链接:Webpack教程
- Webpack教程二
Webpack教程一 开发技巧 启用source-map 现在的代码是合并以后的代码,不利于排错和定位,只需要在config中添加 ... devtool: 'eval-source-map', .. ...
- [js高手之路]深入浅出webpack教程系列5-插件使用之html-webpack-plugin配置(中)
上文我们讲到了options的配置和获取数据的方式,本文,我们继续深入options的配置 一.html-webpack-plugin插件中的options除了自己定义了一些基本配置外,我们是可以任意 ...
随机推荐
- 捉襟见肘之TableView的手势(删除、编辑等)与转场动画手势冲突
在使用PresentModel的方式进行转场动画时,出现UIPercentDrivenInteractiveTransition和 UITableView的自带手势冲突,问题需要总结,今天系统复习和总 ...
- JavaWeb---总结(三)Tomcat服务器学习和使用(一)
一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...
- RBAC权限设计
http://blog.csdn.net/ms_x0828/article/details/7035956 RBAC 模型作为目前最为广泛接受的权限模型 角色访问控制(RBAC)引入了Role的概念, ...
- 获取字符串中每个字符出现的次数(利用TreeMap)
案例:"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)分析1:定义一个字符串(可以改进为键盘录入)2:定义一个 ...
- MongoDb学习1
目标框架必须是 4.5以上,最新MongoDb.Driver 是 2.2.4(与MongoDb.Driver 的1.x版本差别较大) 官方文档 http://mongodb.github.io/mon ...
- DllMaps
http://www.mono-project.com/docs/advanced/pinvoke/dllmap/ http://www.mono-project.com/docs/advanced/ ...
- xenserver安装使用
1.下载参考:http://blog.sina.com.cn/s/blog_61c07ac50102vf55.html 2.安装(个人笔记本配置了12G的内存,所以在VM Workstation 11 ...
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别 以前一直没有注意过这个问题,前两天机缘巧合上网查了一下,然后自 ...
- JS之function的应用
1.最基本的作为一个本本分分的函数声明使用. 复制代码代码如下: function func(){} 或 var func=function(){}; 2.作为一个类构造器使用: 复制代码代码如下: ...
- 2.servlet的会话机制session
session的说明: 1.session是服务端技术,存放在服务器 2.一个用户浏览器对应一个session域对象,一对一的对应关系 3.session的默认生命周期是30min,可以通过web.x ...