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()模块分离 低版本浏览器想使 ...
随机推荐
- CentOS系统Nginx安装配置,随时更新
./configure --prefix=/etc/nginx \ #指定安装目录 --sbin-path=/usr/sbin/nginx \ #指定执行路径--conf-path=/etc/ngin ...
- 北大poj- 1007
DNA排序 逆序数可以用来描述一个序列混乱程度的量.例如,“DAABEC”的逆序数为5,其中D大于他右边的4个数,E大于他右边的1个数,4+1=5:又如,“ZWQM”的逆序数为3+2+1+0=6. 现 ...
- maven 常用备忘录
1.maven 国内的常用中央仓库地址配置: <mirror> <id>alimaven</id> <name>aliyun maven</nam ...
- 使用VMware Workstation 14 Player或者Oracle VM VirtualBox安装Fedora-Workstation-netinst-x86_64-27-1.6操作系统的相关记录
无论是在使用哪个(VMware或者Oracle VM)都遇到了一个问题:即使在安装完Fedoras操作系统之后,进行Reboot还是会进入之前一摸一样的安装界面,相当于再次安装.然而最最有效的解决办法 ...
- Power BI 关注博客更新
原本当你访问你常用的数据库时候,该库的新增,修改,删除,通过PowerBI都很容易发现,但是在Web上面,通过PowerBI来发现Web修改就没那么容易了. 现在,我想通过PowerBI的报告来显示某 ...
- 常用的CMD & Linux命令
[CMD命令] 1.分行输入环境变量 使用echo %PATH%输出环境变量的时候没有分行输出,看起来十分麻烦: 通过xargs命令可以实现分行输出,命令如下: echo %PATH% | xargs ...
- CSS学习笔记_day3
一.浮动的清除 1.给祖先元素加高度 <style> * { padding: 0; margin: 0; } .box1 { height: 100px; /**/ } ul { /*去 ...
- Java程序第一次作业
public class yjj { public static void main(String[] args) { System.out.println("Hello Java" ...
- Qt学习3---子窗口与父窗口
创建子窗口后,主窗口的头文件需要 #include "子窗口头文件" 子窗口和父窗口之间相互切换 子窗口没有办法处理父窗口,子窗口此时就需要一个信号: * 信号必须有signal ...
- nexus 随笔
离线更新中央仓库索引的方式,速度快并且可靠. 访问http://repo.maven.apache.org/maven2/.index/下载中心仓库最新版本的索引文件,我们需要下载如下两个文件nexu ...