如何实现代码分块

默认情况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. MySQL 5.7 Reference Manual】15.4.2 Change Buffer(变更缓冲)

    15.4.2 Change Buffer(变更缓冲)   The change buffer is a special data structure that caches changes to se ...

  2. 转:C# WinForm窗体及其控件的自适应

    一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率>  ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...

  3. November 15th 2016 Week 47th Tuesday

    Success is finding satisfaction in giving a little more than you take. 成功就是付出比得到多,仍然心满意足. Can I find ...

  4. ZT C语言实现字符串倒序

    http://blog.chinaunix.net/uid-20788517-id-34777.html 分类: C/C++ 1 #include <stdio.h>  2 #includ ...

  5. 【Alpha】Daily Scrum Meeting——blog3

    团队成员 吴吉键 201421122007(组长) 魏修祺 201421122008 孙劲林 201421122022 1. 会议当天照片 2. 每个人的工作 姓名 已完成工作 计划完成工作 遇到的困 ...

  6. JS传递函数并且调用

    封装的函数: function getDataByJsonP(methName, inData, fn) { // 这里fn可以直接传入函数名字 $.ajax({ url: '', //请求的url地 ...

  7. galera mariadb集群恢复策略

    1 galera mariadb首先MariaDB是一个数据库,可以看成是MySQL的一个分支,由于MySQL被SUN收购,所以MySQL面临着闭源的风险,当时MySQL之父Widenius并没有加入 ...

  8. singleton和prototype的区别

    singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的 请求,只要id与该Bean定义相匹配,则 ...

  9. UVa 1642 - Magical GCD(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. Linux - 常用归档、压缩命令

    1. ncompress compress命令是一个相当古老的 unix 档案压缩指令,压缩后的文件会加上一个 .Z 的后缀名,默认不会保留源文件.compress只能对文件进行压缩,若要压缩目录,先 ...