Webpack 模块处理
webpack模块处理
1. ES6 静态Import
ES6的import会被转化为commonjs格式或者是AMD格式,babel默认会把ES6的模块转化为commonjs规范的。
import list from './list';
//等价于
var list = require('./list');
两种写法只需选一种,避免在代码中同时使用造成混淆。
2. ES6 动态Import
语法:Import.then Promise回调
动态的加载模块,import调用点会被解析为模块分割入口点,生成单独chunk。
import('lodash').then(_ => {
// Do something with lodash (a.k.a '_')...
});
3. CommonJS同步
var $ = require('jquery');
var myModule = require('my-module');
var a = require('./a');
//此时webpack会将a.js打包进引用它的文件中,这是最普遍的情形。
- require.resolve
同步模块抽取,编译器会保证依赖被打包到输出bundle。
4. CommonJS异步
语法:require.ensure
注:require.ensure() 被webpack包装为import() Promise.
webpack 在编译时,会静态地解析代码中的 require.ensure(),同时将模块添加到一个分开的 chunk 当中。这个新的 chunk 会被 webpack 通过 jsonp 来按需加载。
require.ensure([], function(require){
var list = require('./list');
list.show();
});
//打包输出:1.XXXX.js
//
require.ensure([], function(require){
var list = require('./list');
list.show();
}, 'list');
//打包输出: list.XXX.js
require.ensure([], function(require){
var list = require('./list');
list.show();
var edit = require('./edit');
edit.display();
}, 'list_and_edit');
//打包输出: list_and_edit.XXX.js
4. AMD
webpack既支持commonjs规范也支持AMD规范,这就意味着AMD的经典语法是可以正常使用的,如:
require(['./list'], function(list){
list.show();
});
//打包输出:1.XXX.js
require(['./list', './edit'], function(list, edit){
list.show();
edit.display();
});
//不支持自定义文件名
//同require.ensure, 给定的依赖b会被打包为单独bundlle并在需要时可进行异步加载.
require(['b'], function(b) {
var c = require('c');
});
refs:
https://webpack.js.org/api/module-methods/#import
https://blog.csdn.net/huang100qi/article/details/78060086
Webpack 模块处理的更多相关文章
- webpack模块解析
前面的话 在web存在多种支持JavaScript模块化的工具(如requirejs和r.js),这些工具各有优势和限制.webpack基于从这些系统获得的经验教训,并将模块的概念应用于项目中的任何文 ...
- webpack模块机制浅析【一】
webpack模块机制浅析[一] 今天看了看webpack打包后的代码,所以就去分析了下代码的运行机制. 下面这段代码是webpack打包后的最基本的形式,可以说是[骨架] (function(roo ...
- 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发
每天记录一点:NetCore获得配置文件 appsettings.json 用NetCore做项目如果用EF ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...
- 浅谈Webpack模块打包工具一
为什么要使用模块打包工具 1.模块化开发ES Modules存在兼容性问题 打包之后成产阶段编译为ES5 解决兼容性问题 2.模块文件过多 网络请求频繁 开发阶段把散的模块打包成一个模块 解决网络请 ...
- webpack模块加载css文件及图片地址
webpack支持css文件加载并打包,只需安装相应加载器并在配置文件中配置 . 加载的css文件内容会与该模块里的js内容混合封装,这样做的好处是一个js文件包含了所有的css与js内容,有效减少了 ...
- webpack模块依赖管理介绍
http://webpack.github.io/docs/ webpack is a module bundler. 是一个模块管理器 webpack可以管理模块的依赖关系,并产生可以替代这些模块的 ...
- Webpack模块加载器
一.介绍 Webpack是德国开发者 Tobias Koppers 开发的模块加载器,它能把所有的资源文件(JS.JSX.CSS.CoffeeScript.Less.Sass.Image等)都作为模块 ...
- Webpack模块的导出以及之间的依赖引用
一. 模块化开发模块化开发说白了就不必在html页面,引用所有的js文件.所有的js文件都进行模块化设置,模块之间可以相互引用.Webpack模块化开发是使用module.exports进行相关方法和 ...
- webpack 模块方法
1. webpack的import和export不需要引入babel 其他ES6语法需要引入babel 2. import引入export导出的模块 3. import()模块分离 低版本浏览器想使 ...
随机推荐
- 免费的DDos网络测试工具集合
今天晚上看YT上的hulk VS monster Dogs 然后想看电影资源,给我推送了hulk这款工具了解下,发现了一些东西,收藏下 1.卢瓦(LOIC) (Low Orbit Ion Canon) ...
- pypi镜像源加速第三方库在线安装
使用pypi镜像源加速第三方库在线安装 用easy_install和pip来安装第三方库很方便 它们的原理其实就是从Python的官方源pypi.python.org/pypi 下载到本地,然后解包安 ...
- 基于vue的图片查看插件vue-photo-preview
1. 安装 在任务管理器中输入命令 2. 在项目main.js中引入 3.在所需要的项目中直接使用 还有两个属性,可以看需求添加 preview-title-enable="false&qu ...
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- Golang微服务:micro实践
micro 使用 工具安装 使用protoc生成代码,依赖两个插件:protoc-gen-go.protoc-gen-micro micro 工具 go get -u github.com/micro ...
- Jmeter 非 GUI 命令行执行脚本文件
https://www.cnblogs.com/yebaofang/p/9803273.html
- mysql数据库查询和聚合函数
1.模糊查询 like % 表示多个任意字符 _ 表示任意一个字符 例如:查询黄姓同学 select * from student where name '黄%' select * from stud ...
- final、finally、以及finalize的区别
final ---修饰类.变量和方法,修饰的类不能被继承 .修饰的方法不能被重写 .修饰的成员变量不可更改 另外,修饰成员变量必须立即赋值,修饰局部变量使用之前被赋值就可以. finally通常和tr ...
- C# 中String.Join()方法
今天在工作中看到了组里一个大佬写的代码,感触颇多,同样实现一个需求,我写循环费了老大劲,代码又臭又长,大佬的代码简洁明了,三行搞定...不得不说,今天赚大了 简单总结一下今天赚到的知识 string里 ...
- 20164322韩玉婷 -----Exp1 PC平台逆向破解
Exp1 PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一 ...