webpack简介

webpack是 前端资源模块化管理工具和打包工具;
webpack本身只能识别模块引入,打包模块的功能;webpack能识别ES Moudule、common JS等模块规范

一、现有模块系统
1、CommonJS
关键词:module.exports    exports    require
特点:
(1)node.js遵循CommonJs,npm中有近20万个可以使用的模块
(2)同步加载所依赖的模块资源,阻塞加载,不能并行加载模块
(3)当前浏览器暂不支持同步加载模块
使用方法:
require('module');
require('../file.js);
exports.doStuff = function(){}
module.exports = someValue;
 
2、AMD  Asynchronous Module Definition (异步模块定义)
主要是一个接口 define(id?,dependencies?,factory),在声明模块时指定所有依赖,并且要当做形参传入到factory(工厂)中,对于依赖的模块提前执行,依赖前置;
关键词:define   require
特点:
(1)适合浏览器环境异步加载模块
使用方法:
define('module',['dep1','dep2'],function(d1,d2){return someExportedValue;
})
require(['module','../file'],function(module,file){})
3、CMD  Common Module Definition
与AMD相似,并与CommonJs和Node.js的Modules规范保持了很大的兼容性;
特点:
(1)依赖就近,延迟执行
(2)能在Node.js中运行
使用方法:
define(function(require,exports,module){var $ = require('jquery');var Spinning = require('./spinning');exports.doSomething = ...module.exports = ...
})
4、ES6模块 ES Moudule
关键词:import  export default
ECMAScript6标准增加了js语言层面的模块概念。
特点:
(1)面向未来的ECMAScript标准,原生浏览器端没有兼容
(2)属于全新的命令字,新版的Node.js才支持
/*header.js*/
function header(){var appEl = document.getElementById('app');var header = document.createElement('div')header.innerHTML = 'header';appEl.appendChild(header)
}//ES Module
// export default header;
//   export {header,header2}//commonJS
// module.exports = header; //第一种写法
// exports.header = header;  //第二种写法//AMD
// define('header',function(){
//     return header;
// });/*index.js*/
//ES module
// import header from './header';
// import {header,header2} from './header';//commonJS
// var header = require('./header');//module.exports = header; 对应
// var header = require('./header').header; //exports.header = header; 对应//AMD
// var header = require('./header.js');new header();
webpack特点:
(1)代码拆分,实现前端模块按需加载,分块传输,避免了传统模块系统极端的加载传输方式;(传统模块系统极端的两个加载传输方式:a、每个模块文件都单独请求,造成请求次数过多,导致应用启动速度慢;b、把所有模块打包成一个文件然后只请求一次,导致一次请求加载所有模块导致流量浪费、初始化过程慢;)
(2)通过loader转换器可以将各类资源转换为javascript模块,如:样式,图片,字体,html,less、sass、模板库多语言系统等等;
(3) Webpack 有一个智能解析器,几乎可以处理任何第三方库,无论它们的模块形式是 CommonJS、 AMD 还是普通的 JS 文件。
(4) Webpack 还有一个功能丰富的插件系统。

转载于:https://www.cnblogs.com/zuozuo-blog/p/6560428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python + Selenium】之JS定位总结

1、滚动条 driver.set_window_size(500,500) js "window.scrollTo(0,200)" #左:距左边横滚、右:距上边竖滚 driver.execute_script(js) 2、获取元素的值 button driver.find_element_by_css_selector("#su") #定位按钮 input…

BigDecimal类整除报错的解决方案

例如: BigDecimal num1 new BigDecimal("10"); BigDecimal num2 new BigDecimal("3"); BigDecimal num3 num1.divide(num2); 其实devide的函数定义如下 BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;…

NodeJS中的require和import

ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。…

【selenium】selenium和requests登陆的区别

requests登陆 import requests import time t int(time.time()*1000) # 创建一个会话 s requests.Session() post_url http://account.chinaunix.net/login/login data {username: xxxxxxxxx,password: xxxxxxxxx,_token: nmSXhgHib8dTIC9DrATSkTzBBo4zz9eqDEPeG5i1,_t: t…

【spider】多线程爬虫

多线程工作原理 多线程示意图 Queue(队列对象) queue是python中的标准库,可以直接from queue import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 对于资源,加锁是个重要的环节。Queue,是线…

css设置文字上下居中,一行文字居中,两行或多行文字同样居中。

HTML: <div class"book-detail-store-item align-center-vertical">居中文字</div> CSS: .book-detail-store-item {width: 50px&#xff1b;height&#xff1a;50px&#xff1b;line-height: 25px;font-size: 12px;}/*flex垂直居中对齐*/ .align-center…

MySQL/sqlserver查询in操作 查询结果按in集合顺序显示

2019独角兽企业重金招聘Python工程师标准>>> MySQL/sqlserver查询in操作 查询结果按in集合顺序显示 MySQL用下面的语句 select * from ibs6_terminal_adv_inf where id in (16,14,15) order by field(id,16,14,15) select * from ibs6_terminal_adv_inf where id in…

【机器学习】opencv-人脸识别

一 . opencv是什么及其作用&#xff1f; OpenCV是一个基于BSD许可&#xff08;开源&#xff09;发行的跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python…

关于java中的集合如何删除一个元素。

我们有三种方法可以删除集合中的元素&#xff0c;下面介绍两种方法&#xff0c; 一种是传统的for循环&#xff0c;另一种是使用Iterator迭代器(推荐使用)&#xff0c;简单的介绍如下&#xff1a; for循环删除元素: public class ForRemove<T>{ public void forDelete(…

她说程序员不懂浪漫,生日宴上惨变单身狗,其实,程序员的浪漫你不懂!

css蛋糕谁说程序员不懂得浪漫&#xff0c;只是程序员的浪漫你不懂&#xff01;PS&#xff1a;人家都不懂&#xff0c;你再浪漫有啥用&#xff0c;最后还不是单身狗&#xff1f;说实在的&#xff0c;以前也分享过一个程序员用纯CSS画的一个MAC&#xff0c;代码就三千多行&#x…

H.264 picture parameter sets成员值含义学习笔记

-picture parameter sets1. pic_parameter_set_idpic_parameter_set_id指明了在切片头中对应的某个psp.pic_parameter_set_id的值应该在0到255,包括0和2552. seq_parameter_set_idset_parameter_set_id表示激活的sps.seq_parameter_set_id应该取值在0到31之间,包括边界值.3. en…

【机器学习】opencv-数据预处理

想要将收集好的数据s进行统一命名 数量整理 就需要提前进行预处理 import numpy as npimport osimport randomimport cv2 # wuao文件名修改&#xff0c;1~10文件名 filename os.listdir(./faces/wuao/) for i,name in enumerate(filename):os.rename(./faces/wuao/%s%(name)…

WIN7如何替换开机登录画面

1 把你的图片保存为backgroundDefault.jpg,并确保和你的屏幕分辨率相同 2 把下面的代码另存为开启自定义登录界面.reg&#xff08;注意格式为ASCII格式&#xff09; Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\A…

Resharper 安装以及破解

首先进行软件安装 安装后 解压下载好的 文件 会得到如下&#xff1a; 打开序列号 会看到 然后 复制 %LocalAppData%\\JetBrains 路径 会得到进入当前JetBrains 文件夹 然后搜索 JetBrains.Platform.Shell.dll 会得到这个文件 点击属性 查看到后半段的地址 \AppData\Local\JetB…

【机器学习】图片中的人脸识别

通过opencv三方库进行图片人脸识别 face_zones中的参数可以自行调试,这三个data都可以用于人脸识别 haarcascade_frontalface_default.xmlhaarcascade_frontalface_alt.xmlhaarcascade_frontalface_alt2.xml import numpy as npimport cv2img cv2.imread(./2ren.jpg) img.s…

Android Fragment

Fragment在3.0后增加&#xff1a;android.app.Fragment。在v4的兼容包里也有。 一般为了兼容性还是可能会用&#xff1a;android.support.v4.app.Fragment 生命周期&#xff1a; onAttach,onCreate,onCreateView,onActivityCreated,onStart,onResume, onPause,onStop,onDestroy…

1020. 月饼 (25)

1020. 月饼 (25) 月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给出的情形…

【机器学习】opencv-视频中的人脸检测

本次在图片识别的程度上增添了视频识别 原理就是在图片的基础上进行操作 每毫秒进行下一帧的人脸解析识别&#xff0c;时间可自行设置 import numpy as np import cv2win cv2.namedWindow(dzd,cv2.WINDOW_NORMAL) cv2.resizeWindow(dzd,640,200) rose cv2.imread(./rose.jp…

scan8[16+2*4]的内容

scan8确实不好理解&#xff0c;解答如下&#xff1a; static const int x264_scan8[162*4] { /* Luma */ 41*8, 51*8, 42*8, 52*8, 61*8, 71*8, 62*8, 72*8, 43*8, 53*8, 44*8, 54*8, 63*8, 73*8, 64*8, 74*8, /* Cb */ 11*8, 21*8, 12*8, 22*8, /…

React 产品实现 -任务管理工具“氢”

原文地址&#xff1a;https://zhuanlan.zhihu.com/p/...&#xff0c;欢迎转载 &#xff1a;-&#xff09;? 关于 其实对于这个专栏的订阅用户感到非常抱歉&#xff0c;已经停更很久了&#xff0c;也没啥特别的理由就是懒 orz&#xff01;不对&#xff0c;画风不能这样开头&…