webpack 多入口打包分析

摘要:
[文章最后都是老夫精挑细选的干货哦~]1为什么需要多入口打包?(或者说什么时候需要多入口打包?比如我们网站分为地球菜和火星菜地球菜,有美国菜中国菜,中国菜才是东北菜湖南菜。。因为多个异步组件意味着多次请求2对于一些公共组件如loading,toast等很多页面都可能引用的到的组件最后被打包了哪里?是否会重复打包进每个组件的jsbundle?

[文章最后都是老夫精挑细选的干货哦~]

1 为什么需要多入口打包?(或者说什么时候需要多入口打包?)

先从但入口打包说起,单入口也就是常见的单页面应用,就是任何用户想访问我这个网站 必须且通过这一个唯一的入口

比如我们开发了一个 外卖网站,http://www.waimai.com => 10.79.64.4:8080/index.html, 主页
有很多吃的种类,比如

东北菜 10.79.64.4:8080/dongbei/
湖南菜 10.79.64.4:8080/fulan/
广东菜 10.79.64.4:8080/guangdong/

比如你就爱吃东北菜,那么你访问网站的方式有两种

第一种直接访问 主页,然后在点击链接跳转到东北菜页面
第二种你记住了东北菜页的网站 直接访问,

此时这两种方式其实对于单页应用是没差的,服务器都是先加载主页,(也就是主页面下载到你的电脑)然后在去用ajax方式去获取东北菜(如果你 是用了异步组件的话),

此处说一下单页面打包后生成的文件正常是三个js文件( 这是在你没有使用异步组件加载的情况,也就是没有使用require.ensure)

main.js //此时三个菜系页面是一起到打包到这里的
vendor.js
commontrunk.js

(此时主页index.html script 加载的是main.js,vendor,commontrunk这三个文件)

如果你使用了异步组件,打包出来的是,比如你将三个菜系页面用异步加载
main.js
vendor.js
commontrunk.js
dongbeicai.js //东北菜
hunancai.js//湖南菜
guangdongcai.js//广东菜

(此时主页index.html script 加载的是main.js,vendor,commontrunk这三个文件)

以上是正常的单页网站的情况,东北菜湖南菜广东菜,是我们网站的三个子系统
那么如果我们的子系统过于复杂呢?
比如我们网站 分为 地球菜 和 火星菜
地球菜,有 美国菜 中国 菜,
中国菜才是东北菜 湖南菜。。

当然我想你仍然是可以把这些写成一个单页,所有子系统都用异步组件加载,这样的危害就是当每个子系统都足够复杂适合,还混合在一起写 就会更复杂和混乱

那么多页应用来了 我们的网站编程了

地球菜 10.79.64.4:8080/diqiu/index.html
火星菜 10.79.64.4:8080/huoxing/index.html

看出区别来了吗 区别就是 我们每个子系统都有了自己的入口,可以直接作为根节点存在,而不是要一直依赖于上层父页面,

好下面说一下 前端如何实现

1 修改webpack config 的 entry,改成多个,
2 修改webpack config 的 插件HtmlWebpackPlugin,有几个入口就要生成几个index.html页面

3 打包原则可以参考
webpack 多入口打包分析第1张

4自己的疑惑

1看到别人的项目 页面所有的通过路由去访问的组件 都用的异步组件,是否有必要?是否需要区分一下 组件大小?因为多个异步组件意味着多次请求
2对于一些公共组件 如 loading ,toast 等很多页面都可能引用的到的组件最后被打包了哪里?是否会重复打包进每个组件的js bundle?还是打包进app.js bundle业务主组件,还是抽取到了公共common.js bundle

这两个疑问需要再调研一下

公共代码抽取之manifest.js 相关

参考 http://www.cnblogs.com/myqianlan/p/5626505.html
参考 http://www.jb51.net/article/110281.htm
参考 http://www.cnblogs.com/xiaojingyuan/p/6840629.html

多入口打包实践

参考 http://www.cnblogs.com/lvdabao/p/5944420.html

多入口打包用到的【node】glob模块用法

参考 http://blog.csdn.net/tangxiaolang101/article/details/53931145

总体分析

参考 http://www.cnblogs.com/libin-1/p/6938581.html
参考 https://zhuanlan.zhihu.com/p/25954788

免责声明:文章转载自《webpack 多入口打包分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis一主二从三哨兵配置(模拟3台服务器)Mac Webstorm 快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue组件别名及Ctrl跳转组件问题

Vue + webstorm Vue项目中,嫌弃导入组件的路径太长,因此为路径配置了别名,也是因此,导致 Ctrl + 鼠标左键 点击进入不了组件,为此还吐槽了一段时间配置这个别名的 “副作用” 今天突然感觉这个操作不太对劲,肯定有解决办法,后面搜索后发现果然有解决办法 File -> Settings -> Languuages &...

如何解决webpack中css背景图片的绝对地址

 在项目开发中,一般写相对路径是没有问题的,但是在项目比较大的情况下,我的scss文件可能为了方便管理,会放在不同的文件夹下,有的可能又不需要放在文件夹下,比如我的scss文件结构如下:  module    common.scss    test.scss about    about.scss    login.scss index.scss 比如目录...

112.前端css优先级

本章用来探讨并且尝试一些 css 那些选择符号。 时光飞逝,毕业已经两年。在前端这个领域,也断断续续地学了四年,感觉自己还不如一个踏踏实实地学了一年的前端。 在此,也提出一些这些年的感想。 1、不要因为觉得学了就会忘记,就不去学习。 有基础、无基础的重新学习,总是不一样的。有轮廓的时候,对一件事物有大概的轮廓,是很重要的。 2、犹豫是很浪费时间的。...

1.AngularJS初探

1.需要什么前端开发环境 1)代码编辑工具 webstorm 2)断点调试工具 chrome插件Batarang 3)版本管理 tortoiseGit 4)代码合并和混淆工具   grunt-contrib-uglify     grunt-contrib-jshint     grunt-contrib-qunit     grunt-contrib...

client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法

【本文源址:http://blog.csdn.net/q1056843325/article/details/54729657 转载请加入该地址】 明天就是除夕了 预祝大家新春快乐 [ ]~( ̄▽ ̄)~* 天天饭局搞得我是身心疲惫= = 所以更新比較慢 今天想跟大家分享的就是这个大名鼎鼎的React框架 简单介绍 React是近两年非常流行的框架...

我想写一个前端开发工具(一):在npm发布模块

有必要说说我为什么要开始写这个,正文从下面的第一条开始 我最近忙于公司的项目,一直没有抽出时间来写文章。本来想每个月写一片文章,保质保量,无奈上个月没有坚持。 这段时间有点忙,主要是由于公司业务调整,我从原来的广告项目中调整到新业务线的前台页面开发了,和以前一样,还是带着3、4个兄弟姐妹。不同的是以前的项目周期普遍偏长,可以让每个同学有时间从头到尾的把项目...