a.js:

module.exports = function(x){
console.log(x);
}

一,commonjs同步:

var b = require('./a');
b('你好')
//你好

二,commonjs异步加载:

根据 require.ensure([预加载模块项],fn,文件名称) 语法,webpack实现了它,作用是可以在打包的时候进行代码分片,并异步加载分片后的代码:

require.ensure(['./a'],function(require){
  var a = require('./a');
  a('hello')
},'b')

dist打包下js中的文件名称就是b.js

三,webpack自带的require.include

它可以实现上面是预加载功能,而不用把模块写在数组中;

require.include还有一个作用是能把子模块中的公共部分,提取到父模块中;

require.ensure([],function(require){
require.include('./a') ;//此处只加载,不执行;
let b = require('./a'); //执行
b('你好');
},'b');

四,AMD异步加载

webpack既支持commonjs规范也支持AMD规范,这就意味着AMD的经典语法是可以正常使用的,如:

require(['./a'],function(a){
a('你好');
});

当然,这样写的话list.js也是被单独打包成一个文件的。与上面类似,如果你在这里写了多个模块,那么这些模块都会被打包成一个文件,如:

require(['./a','./b'],function(a,b){
a.show();
b.hide();
})

a.js和b.js会被打包在一起。不同的是,AMD的方式无法传入第三个参数当文件名,所以得不到很好看的文件

五,ES6 import

import会被转化为commonjs格式或者是AMD格式,所以不要把它认为是一种新的模块引用方式。babel默认会把ES6的模块转化为commonjs规范的,你也不用费劲再把它转成AMD了。

import a from './a';
//等价于
var list = require('./list');

不过这两种写法只需选一种,避免在代码中同时使用两种,否则会造成混淆。

总结:

//可打包在一起的同步代码,使用import语法
import list from './a'; //需要独立打包、异步加载的代码,使用require.ensure
require.ensure(['./a'], function(require){
var a = require('./a');
});

参考地址:

http://www.cnblogs.com/laneyfu/p/6262321.html

最新文章

  1. spring 另开线程时的注入问题
  2. Java Web之Filter
  3. 通过反射将变量值转为变量名本身ZZ
  4. 多张图片,限制大小,格式.md
  5. JS实现自动倒计时
  6. php获取一年中某一周的开始和结束时间
  7. RocketMQ术语[转]
  8. 转: Lua 语言 15 分钟快速入门
  9. 主题: 为kindsoft编辑器替换SyntaxHighlighter代码高亮,整合DEDECMS
  10. Dictionary Size
  11. UIScrollView 滚动停止的时候一次调用此方法
  12. 深入理解学习Git工作流(转)
  13. JS 工具 构建工具
  14. 【转】Nginx配置详解
  15. OpenCV__elemSize
  16. MyBatis 的 XML 映射文件使用说明
  17. Java并发编程(十四)Java内存模型
  18. linux 乌班图 安装pycharm
  19. 18.纯 CSS 创作 404 文字变形为 NON 文字的交互特效
  20. Asp.net webapi Owin Get request form data

热门文章

  1. Linux下安装rpm出现error: Failed dependencies
  2. _STORAGE_WRITE_ERROR_
  3. DateTime获取一个月的第一天和最后一天
  4. js学习系列之-----apply和call
  5. oracle权限详解
  6. 第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型
  7. Zookeeper CLI
  8. 多媒体开发之rtcp详解---rtcp数据包
  9. linux gzip 命令详解
  10. 转载:mysql如果数据不存在,则插入新数据,否则更新的实现方法