如何实现代码分块

默认情况webpack会将资源文件打包成一个js文件,比如app.bundle.js

实际情况我们需要按需加载

方法如下:

require.ensure(dependencies, callback)

require.ensure(["module-a", "module-b"], function(require) {
var a = require("module-a");
// ...
});

这种方式只加载组件,不会执行,除非你在callback里require了该组件。

require(dependencies, callback)

require(["module-a", "module-b"], function(a, b) {
// ...
});

会加载组件并立即执行

例子

创建三个文件

main.js,firstScript.js和secondScript.js

main.js的内容

require.ensure(["./firstScript.js"], function(require) {
}); require(["./secondScript.js"], function(require) {
});

firstScript.js的内容

window.a = 1;

secondScript.js

window.b = 1;

运行webpack

webpack -w

打开开发者工具在network中会看到代码分为了三个块加载。并且在console中可以直接运行b,但无法运行a。

如何配置分块

在webpack.config.js中设置chunkFilename可以配置命名规则

    output: {
path: './bin',
filename: 'app.bundle.js',
publicPath: "/finley/JS/WebPack/bin/",
// chunkFilename: '[id].[chunkhash].js',
// chunkFilename: '[name].[chunkhash].js',
},

如何在模版中全部引入分块文件?

在webpack配置文件中添加

  plugins: [
new webpack.optimize.CommonsChunkPlugin(/* chunkName= */"vendor", /* filename= */"vendor.bundle.js")
]

这样会将所有的依赖文件放到vendor.bundle.js中

在模版中

<script src="vendor.bundle.js"></script>
<script src="bundle.js"></script>

参考:http://webpack.github.io/docs/code-splitting.html

Webpack之Code Splitting 代码分块的更多相关文章

  1. webpack 和 code splitting

    Code Splitting指的是代码分割,那么什么是代码分割,webpack和code splitting又有什么样的联系呢? 使用npm run dev:"webpack-dev-ser ...

  2. webpack 利用Code Splitting 分批打包、按需下载

    webpack中的解决方案——Code Splitting,简单来说就是按需加载(下载),如果是requireJS对应的AMD的方案中这本是在正常不过了.但是在webpack中All in one的思 ...

  3. webpack Code Splitting浅析

    Code Splitting是webpack的一个重要特性,他允许你将代码打包生成多个bundle.对多页应用来说,它是必须的,因为必须要配置多个入口生成多个bundle:对于单页应用来说,如果只打包 ...

  4. webpack优化之code splitting

    作为当前风头正盛的打包工具,webpack风靡前端界.确实作为引领了一个时代的打包工具,很多方面都带来了颠覆性的改进,让我们更加的感受到自动化的快感.不过最为大家诟病的一点就是用起来太难了. 要想愉快 ...

  5. [转] react-router4 + webpack Code Splitting

    项目升级为react-router4后,就尝试着根据官方文档进行代码分割.https://reacttraining.com/react-router/web/guides/code-splittin ...

  6. react-router4 + webpack Code Splitting

    项目升级为react-router4后,就尝试着根据官方文档进行代码分割.https://reacttraining.com/react-router/web/guides/code-splittin ...

  7. [Webpack 2] Maintain sane file sizes with webpack code splitting

    As a Single Page Application grows in size, the size of the payload can become a real problem for pe ...

  8. webpack 学习笔记 03 Code Splitting

    Introduction 对于较大的web 应用来说,将所有的代码文件压缩成一个文件是不合适的,在部分代码文件只有特殊情况下才被需要的情况下,这无疑是一种浪费.webpack 提供了讲代码文件分块的能 ...

  9. webpack async load modules & dynamic code splitting

    webpack async load modules & dynamic code splitting webpack 按需/异步加载/Code Splitting webpack loade ...

随机推荐

  1. 转:C#中的多态

    封装.继承.多态,面向对象的三大特性,前两项理解相对容易,但要理解多态,特别是深入的了解,对于初学者而言可能就会有一定困难了.我一直认为学习OO的最好方法就是结合实践,封装.继承在实际工作中的应用随处 ...

  2. 解决UITableView在iOS7中UINavigationController里的顶部留白问题

    解决UITableView在iOS7中UINavigationController里的顶部留白问题 出现问题时候的截图: 源码: 用到的类: UIViewController+TitleTextAtt ...

  3. Loadrunner11代理录制&各个常见功能介绍

    1.代理录制: Lr代理工具:C:\Program Files (x86)\HP\LoadRunner\bin\wplus_init_wsock.exe 1) 设置代理 配置代理信息: 2)设置浏览器 ...

  4. n=n+1 放在print(s)的上面的影响 (2) n=n=+1在前面,则不满足前面<100条件时候,才跳出while的循环,这时候while循环结束, 到了外面的下一步-->print()

    1+2+3+....+100=     ? n=1 s = 0 while n < =100: s = s+n n= n+1 # n=n+1    在print(s)上面的情况 print(s)

  5. Spring 容器介绍

    Spring 框架的实现依赖 IoC (反向控制) 原则,更为形象的称呼是 DI (依赖注入).相对于 Bean 直接构造依赖的对象,Spring 框架则根据 Bean之间的依赖关系创建对象,并注入到 ...

  6. Linux新建用户没有设置密码

    只要你能登陆root账户就行 登陆root账户 输入  echo "密码“ | passwd --stdin 用户名

  7. ORACLE数据库入门再在屋里坐会

    一.数据库简介 数据库概述 数据库(database)是按照数据结构来组织,存储和管理数据的仓库,它产生与距今五十年前. 简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数 ...

  8. 安装mysql中遇到的问题1

    我的debian7之前安装了mysql-server,是通过apt安装的,后来我卸载掉, 然后用whereis mysql查找, 把所有关于mysql的目录删除掉,包括带mysqld的目录及文件. 重 ...

  9. python第十四课--排序及自定义函数之案例二:冒泡排序

    案例二:冒泡排序 lt1=[45,12,56,-32,-3,44,75,-22,100] print('排序前:'+str(lt1)) 自定义函数:实现冒泡排序(升序)原则:1).有没有形参?有,接受 ...

  10. 1927. [SDOI2010]星际竞速【费用流】

    Description 10年一度的银河系赛车大赛又要开始了.作为全银河最盛大的活动之一,夺得这个项目的冠军无疑是很多人的 梦想,来自杰森座α星的悠悠也是其中之一.赛车大赛的赛场由N颗行星和M条双向星 ...