本篇主要关于如何用webpack构建多页应用

为什么要构建多页应用呢?因为我的项目本来就是多页应用啊
至于为什么要用webpack?因为我要用vue啊,嫌gulp 每次打包慢 啊

文章目录

  1. 1. 利用vue-cli的配置,扩展成多页应用
  2. 2. gulp项目转化成webpack之后的痛
  3. 3. 抛弃webpack多页应用配置
  4. 4. 下篇基于webpack的多页应用新方案

利用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-多页应用的更多相关文章

  1. webpack 教程 那些事儿06-gulp+webpack多页

    本篇主要讲述用gulp+webpack构建多页应用 折腾到现在,项目还必须要进行,.vue文件必须要加载,也就是webpack必须引入.时间不多了,抛弃上个方案之后,只能牺牲热加载性能,用gulp+w ...

  2. webpack 教程 那些事儿04-webpack项目实战分析

    这节主要讲解真正项目用用到的 webpack配置问题,项目实战篇 就像我们不会完全做一个项目,不用别人的轮子一样.这个配置我们借用 vue-cli 搭建的配置来研究,因为它已经足够优秀. 有了前面的基 ...

  3. webpack 教程 那些事儿03-webpack两大精华插件,热加载

    本节主要讲述 webpack的两大经典开发调试插件,热插拔内存缓存机制 文章目录 1. html-webpack-plugin插件的使用 2. webpack-dev-middleware 插件登场 ...

  4. webpack 教程 那些事儿02-从零开始

    接着上篇我们有了最简单的安装了webpack的项目目录这节我们从零开始搭建一个简单的基于webpack的spa应用demo本节只说基础常用配置项,复杂后续讲解. 文章目录 1. 新建项目结构目录,如下 ...

  5. webpack 教程 那些事儿01-webpack是什么

    文章目录 1. 为什么引入webpack? 2. webpack到底是什么? 3. webpack的工作流程理念 4. webpack的使用 4.1. install webpack 5. 分享源码d ...

  6. [js高手之路]深入浅出webpack教程系列6-插件使用之html-webpack-plugin配置(下)

    上文我们对html-webpack-plugin的实例htmlWebpackPlugin进行了遍历分析,讲解了几个常用属性( inject, minify )以及自定义属性的添加,本文,我们继续深入他 ...

  7. Webpack教程

    打开链接:Webpack教程

  8. Webpack教程二

    Webpack教程一 开发技巧 启用source-map 现在的代码是合并以后的代码,不利于排错和定位,只需要在config中添加 ... devtool: 'eval-source-map', .. ...

  9. [js高手之路]深入浅出webpack教程系列5-插件使用之html-webpack-plugin配置(中)

    上文我们讲到了options的配置和获取数据的方式,本文,我们继续深入options的配置 一.html-webpack-plugin插件中的options除了自己定义了一些基本配置外,我们是可以任意 ...

随机推荐

  1. 用面对对象方式定tab标签

    一些公共的底层的JS方法 var GLOBAL = {}; GLOBAL.namespace = function (str) { var arr = str.split('.'), o = GLOB ...

  2. iOS - Availability.h

    >for 'dispatch' application inner to begin note `#include <Availability.h>` These macros ar ...

  3. BZOJ3160: 万径人踪灭

    设a[i]=bool(s[i]=='a'),b[i]=bool(s[i]=='b'),考虑a和a.b和b的卷积,由于卷积是对称的,就可以统计出不连续回文子串个数了.可能说得比较简略.再用manache ...

  4. Cross-Site Scripting(XSS)简介

    最近才开始研究HTML以及安全问题.如果有什么说得不对的地方,望请指出. 在网络应用安全中,XSS可能是最常见,范围最大,所包含攻击方法最多,同时也是最难以理解的一种攻击.在OWASP所列出的十大网络 ...

  5. day4之函数

    很快就第4天了,原来人是有惰性的,博客现在就不想写了,真是悲催,坚持,憋住. 函数 def func(name): print(name) func("huihuang") 函数定 ...

  6. ecshop 默认图处理

    function get_banner_path($img) { $img = empty($img) ? C('no_picture') : $img; return $img;}

  7. thinkphp查询

    public function index(){ $result = M('content')->select() $this->assig('result',$result); $thi ...

  8. 免费api大全

    天气接口 气象局接口 完整数据:http://m.weather.com.cn/data/101010100.html 解析 用例 当天数据:http://www.weather.com.cn/dat ...

  9. msbuild FileSysExcludeFiles

    <?xml version="1.0" encoding="utf-8"?> <!-- This file is used by the pu ...

  10. osharp3使用经验:整合DbContextScope 文章 1

    osharp3的事务处理是跳过savechangeing方法来控制的,没有DbContextScope专业 DbContextScope管理dbcontext的优劣本文不讨论 整合过程: 1.在.Da ...