webpack使用CMD、AMD、CommonJS、ES6区别以及运用

2023-11-12

之前在网上浏览器的webpack模块化很乱,而且也没有把CMD模块化使用讲清楚的,终于忍不下去,将几种模块化以一种清晰的方式写出来,这也是我一直想做的事,下面就来讲讲CMD、AMD、commonJs、es6模块化的运用。

CMD

CMD是seaJs在推广过程中生产的对模块定义的规范
属于同步模块定义,在哪里需要用就在哪里引入,
用define定义
定义方法: define(function(){require,exports, module})
require: 导入其他依赖的办法
exports、导出的方法 导出的方法
CMD有三种方式导出

第一种使用exports导出

//common.js
//使用define定义模块,require、exports、module是define自带的
define(function(require, exports, module){
	//定义导出的方法
	function minus(a, b) {
		return a - b
	}
	// 使用exports导出
	exports.minus = minus
})

第二种使用module导出

//common.js
//使用define定义模块,require、exports、module是define自带的
define(function(require, exports, module){
	//定义导出的方法
	function minus(a, b) {
		return a - b
	}
	// 使用module.exports导出
	module.exports = {
		minus
	}
})

第三种使用return 返回

//common.js
//使用define定义模块,require、exports、module是define自带的
define(function(require, exports, module){
	//定义导出的方法
	function minus(a, b) {
		return a - b
	}
	// 使用return导出
	return {
		minus
	}
})

都可以用同一种方法导入

let common= require('./common') // 文件相对路径
//调用减法的方法
console.log(common.minus(5,4))
//结果:1

AMD

AMD是requireJs在推广过程中生产的对模块定义的规范
属于异步模块定义,依赖前置,在最上面加载模块
使用define定义
define(依赖的模块,执行的回调函数)
定义如下如下:

//common.js
// define后使用[]的原因是没有依赖模块, 如果有使用,如:['jquery']
define([], function(){
	// 导出方法
	return function(a, b) {
		return a - b
	}
})

引用如下

//导入方法,require方法中有三个参数
//require(模块依赖,类型为数组[依赖的地址或模块名称], 会掉函数)
// 回调函数中会接收到模块作为参数,如下minus
require(['./common.js'], function(minus){
	console.log(minus(5,4)) //结果:1
})

commonJS

commonjs使用模块化,经常用于后台 导入导出方法如下:

//common.js
module.exports = function(a, b) {
	return a-b
}

引用如下

let minus = require('./common.js')  //文件相对路径
console.log(minus(5,4)) 
// 结果: 1

es6

es6模块化 通常有两种方式导出export(导出), export default(默认导出),通常采用import导入
下面分别使用两种方法导出

第一种导入导出方式 export

导出如下

// common.js
function minus(a,b) {
	return a-b
}
// 使用export,一定要使用{}导出,否则会报错
export {
	minus
}

导入如下

// import 后采用大括号导入,大括号中是变量名,变量名要跟导出的名称一致
// from 后跟文件文件路径 这里是相对路径
import {minus} from './common.js'
//调用方法
minus(5,4)  //结果:1
//另一种导入方式 意思就是全部导入 as为重命名为导入的变量重新取一个名字
import * as common from './common.js'
// 调用方式 
common.minus(5,4) //结果:1

第二种导出方式 export default

导出如下

// common.js
function minus(a,b) {
	return a-b
}
// 使用export default 后不用使用{}
export default minus

导入如下

// import 后不采用{}导入,后跟的变量名可以随意更改,想取什么取什么
// from 后跟文件文件路径 这里是相对路径
import minus from './common.js'
//调用方法
minus(5,4)  //结果:1
//我改为另一个名称
import common from './common.js'
// 调用方式 
common(5,4) //结果:1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack使用CMD、AMD、CommonJS、ES6区别以及运用 的相关文章

随机推荐

  • 一文简单了解RPMB

    不知道大家对于RPMB有所了解吗 最近在看这些存储介质的介绍的时候 在推荐里面看到了这个东西 又因为对安全本身就有所涉及学习 所以这里来看看这个东西 学习的内容都是来自前辈们的blog 会在文末附注 1 Flash是什么 关于存储的种类有很
  • 解决mysql忘记密码无法登陆问题

    当我们忘记mysql密码的时候我们不仅无法访问数据库 也无法修改密码 这是个很头疼的问题 下面是跳过用户验证登陆数据库的小技巧 第一步 打开我们安装mysql的目录 复制 D PhpStudy PHPTutorial MySQL bin 地
  • 同一端口有2个前端应用应该如何配置nginx.conf

    需求 业务系统中有2种完全不同角色 页面没有相同模块拆分成了2个应用A和B 但后端是同一个后端 部署的时候要求A和B在同一端口下 问 如何配置nginx 首先我们将A B前端包放到 opt app jhscf deploy html下 这样
  • 电脑如何打开虚拟化设置?

    当你开启Vmware中的虚拟机时 如果出现以上提示 说明你的虚拟化没有打开 在计算机中 虚拟化 英语 Virtualization 是一种资源管理技术 是将计算机的各种实体资源 如服务器 网络 内存及存储等 予以抽象 转换后呈现出来 打破实
  • R语言-随机前沿分析法--SFA

    3 1介绍 生产函数模型 lnqi x i b vi ui 随机生产前沿函数 qi 产出变量向量 x i 投入变量向量 b 变量参数估计 vi 统计噪声的对称随机误差 ui 无效效应 3 2度量技术效率的方法 SFA 参数 DEA 非参数
  • Fortran 90学习之旅(一)Visual Fortran 6.5 的安装与第一个例子

    转载请标明是引用于 http blog csdn net chenyujing1234 源码 http www rayfile com zh cn files e5f02f0a 8799 11e1 b6a2 0015c55db73d 高尔夫
  • Java 中封装JDBC连接到JDBCUtils工具类的详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 在JDBC操作中 获取连接和释放资源是经常使用到的 可以将其封装成到一个工具类JDBCUtils中 JDBCUtils中有两个方法
  • .numpy()、.item()、.cpu()、.clone()、.detach()及.data的使用 && tensor类型的转换

    文章目录 numpy item cpu clone detach 及 data的使用 item cpu numpy clone detach data data和 detach 不同点 Tensor类型的转换 numpy item cpu
  • STM32定时器中断

    目录 一 关于STM32定时器中断 1 定时器分类 2 通用定时器的功能特点 3 定时器中断的触发 4 定时时钟计算方法 二 CubeMX初始化配置 1 芯片选型 我们这里运用的STM32F103C8T6 编辑 2 时钟配置 3 TIM2中
  • 经纬恒润OTA仿真测试解决方案为汽车智能化发展保驾护航

    OTA技术是汽车实现完整网联化 智能化体验的基础 自被引用汽车以来 广受研发人员 市场用户的关注 近来 国家有关部门也陆续出台了相应政策 对汽车企业OTA技术的应用进行了约束和规范 因此 OTA技术在量产车型的应用落地 离不开完整的测试验证
  • SpringSecurity中授权时fastjson序列化问题

    最近在复习Spring Security 复习的鉴权的时候出现问题 26 封装权限信息 哔哩哔哩 bilibili 如果是从B站中看到 直接说问题可能出现的原因 可能是private List
  • XML建模(简单易学)

    目录 XML建模步骤 1 什么是建模 2 导入jar包 3 创建XML文件 4 根据XML文件中的元素创建模型类 ConfigModel类 ActionModel类 ForwardModel类 4 工厂类的编写 XML建模步骤 1 什么是建
  • rabbitTemplate 让setConfirmCallback执行完成后再去发送消息给消费者

    import org springframework amqp AmqpException import org springframework amqp rabbit connection CachingConnectionFactory
  • 【记录】安装zsh及报错处理

    1 安装zsh sudo apt get install y curl zsh zsh doc git 2 安装插件系统oh my zsh 打开oh my zsh官网 Oh My Zsh a delightful open source f
  • 车载通信——J1939 DM1

    诊断故障代码 DTC 由4 个独立域构成 a 可疑参数的编号 SPN 19位 b 故障模式标志 FMI 5位 c 发生次数 OC 7位 d 可疑参数编号的转化方式 CM 1 位 Byte1 Lamp Status Bits1 2 Prote
  • 【OV7670】基于FPGA的OV7670摄像头介绍和使用

    1 软件版本 quartusii12 1 2 本算法理论知识 OV7670摄像头模块 带384Kb FIFO 数字摄像头 手动变焦 OV7670总共有656 488个像素 其中640 480个有效 即有效像素为30W 支持RawRGB RG
  • [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

    最近在使用Python爬取网页内容时 总是遇到JS临时加载 动态获取网页信息的困难 例如爬取CSDN下载资源评论 搜狐图片中的 原图 等 此时尝试学习Phantomjs和CasperJS来解决这个问题 这第一篇文章当然就是安装过程及入门介绍
  • SQLite 的简单使用(以Navicat为例)

    一 简介 iOS中的数据存储方式 Plist NSArray NSDictionary Preference 偏好设置 NSUserDefaults NSCoding NSKeyedArchiver NSkeyedUnarchiver SQ
  • Java设计之道——通过UML理解23种设计模式

    文章目录 UML类图 泛化 generalize 与实现 realize 聚合 aggregation 与组合 composition 关联 association 与依赖 dependency 23种设计模式 创建型模式 结构型模式 行为
  • webpack使用CMD、AMD、CommonJS、ES6区别以及运用

    之前在网上浏览器的webpack模块化很乱 而且也没有把CMD模块化使用讲清楚的 终于忍不下去 将几种模块化以一种清晰的方式写出来 这也是我一直想做的事 下面就来讲讲CMD AMD commonJs es6模块化的运用 CMD CMD是se