关于 AMD 以及 CommonJS

JS & Node 模块化解释:AMD、UMD、CommonJS、 ESM AMD就是为了解决命名污染而研发的,同时还支持按需加载,是第一个引入模块化开发的规范插件,要想使用AMD语法得借助一款插件RequireJS。注意,AMD 只适用于浏览器,虽然也支持 Node,但不如 Node 自家的 CJS,后面会讲。CommonJS也常被称为CJS,与ADMI一样属于模块化语法,不过它是用来兼容后端Nodejs语言,庆幸的是,CJS在 Node.js 中已内置,开箱即用,无需引入插件。UMD是AMDCommonJS。 阅读详情

Module 的语法

概述

es6之前

AMD规范:全称”Asynchronous Module Definition”,称为 异步模块加载规范 。一般应用在浏览器端。流行的浏览器端异步加载库RequireJS实现的就是AMD规范。

  • 依赖前置,提前执行!

CommonJS: 称为同步模块加载规范,也就是说,只有加载完成,才能执行后面的操作。用于服务器端。

  • CommonJS 模块就是对象,输入时必须查找对象属性。代码运行时加载,输出的值是值得拷贝
let { stat, exists, readFile } = require('fs'); //只有先全部加载`fs`这个方法才能在这个对象上读取这个三个方法
es6中的module

ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。输入的是指的引用

  • 这种加载称为“编译时加载”或者静态加载,效率更高
// ES6模块
import { stat, exists, readFile } from 'fs';  //从`fs`模块加载3个方法不用全部加载
export

每个module都是一个独立的文件,该文件类的所有内容外部都无法获取export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

  1. 写法

    export const name='haha'
    
    //也可以
    name='haha'
    sex='male'
    export {name,sex} //可以接受多个属性
    
    //输出变量和类
    
    export function fn(){}
    
    
  2. export 输出的变量是有名字的,可以使用as替换

    function fn1(){}
    
    export {fn1 as fn2}
    
    
import

import ‘fs’ 这样会加载所有

import {xx,xxx} form ‘xxxxx’

import 导入的时候需要知道要导入的方法名称

如果使用了export default 的默认输出,我们import的时候可以用任意的名字

export.js

export default function fn(){} //一个模块只能有一个默认输出,还是可以通过export 正常导出其它函数,import {xx}通过指定名称正常导入


import.js 

import foo from 'export.js' //import时候不能使用大括号

Node 加载


node将两者分开,ES6 模块和 CommonJS 采用各自的加载方案。

CommonJS 模块的输出都定义在module.exports这个属性上面。Node 的import命令加载 CommonJS 模块,Node 会自动将module.exports属性,当作模块的默认输出,即等同于export default xxx

  • commonJS
    // a.js
    module.exports = {
        foo: 'hello',
        bar: 'world'
    };
    
    // 等同于
    export default {
        foo: 'hello',
        bar: 'world'
    };
    
amd规范转commonjs规范 目的是在项目框架中安装外部组件时,组件的规范能够统一。由于早期开发未整体文档,细节已记不太清,先把代码地址贴上来:https://github.com/tianmiyingzi/feather2-command-install需要了解的知识点:AMD规范,CMD规范,Comonjs规范,UMD规范等。以下是调研知识点笔记:Javascript模块化编程问:为什么要模块化?答:提高代码重复利用率。问... 阅读详情

相关推荐

Computer Networks 和 Computer & Security投稿经验

论文投稿

qq_50604294的博客 9231

js模块化 Common.js / AMD / CMD / es6

js模块化

qq_43631129的博客 1155

炸金花游戏(3)--基于EV(期望收益)的简单AI模型

前言:   炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章:  德州扑克AI--Programming Poker AI(译).  系列文章说来惭愧, 之前一直叫嚷着写德州AI, 不过可惜懒癌晚期, 一直没去实践, T_T. 相比而言,***简单很多, 也更偏重于运...

weixin_30377461的博客 2341

全面理解JS模块的标准(AMD、CMD、COMMON.JS 、 UMD、ESM)

require.js是AMD模块规范的一个具体实现核心是通过define方法对无序的代码进行有序的模块化定义,通过require方法实现代码的模块化加载});control.js/*** 登录状态检测*/};/*** 模块调用及配置*/{// 登录页});};// 注册页});};};{// 详情页});};};};});sea.js是CMD模块规范的一个具体实现在定义模块方面, CMD和AMD一样通过define函数来定义模块;

qq_30436011的博客 4837

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真

液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研

weixin_29159441的博客 289

别再只看K线了!聊聊“板块联动”和“热点轮动”的跟踪方法与工具(实战派分享)

本文深入解析了如何通过板块联动和热点轮动构建高效交易系统。从三维验证框架到主流工具配置,再到持续性热点的五大特征,实战派交易员分享了识别市场主线和预判轮动方向的高阶技巧,帮助投资者摆脱单纯依赖K线的局限,提升交易决策效率。

weixin_29281941的博客 759

JS模块化总结(commonJs规范、AMD规范、CMD规范、ES6)

define(function(){let name = 'module1'function getName () {return name}// 暴露模块return {getName}})})})})})最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。有需要的小伙伴,可以点击下方卡片领取,无偿分享。

小陈的博客 1091

大数据审计常用的算法模型

数据预处理:用聚类算法(K-Means)对数据分组,缩小分析范围;异常初筛:用孤立森林/DBSCAN快速标记疑似异常样本;风险分级:用随机森林/XGBoost对疑似异常打分,确定核查优先级;关联深挖:用FP-Growth挖掘异常样本背后的人员/流程关联;文本佐证:用BERT分析相关合同/审批文本,获取舞弊证据。例如,某审计项目通过“K-Means分组→孤立森林标异常→FP-Growth找关联→BERT审合同”的流程,仅用1周就完成了过去3个月需10人团队的工作量,且挖出2起隐藏的串标舞弊案。

Yulay专栏 1068

前端模块化——彻底搞懂AMD、CMD、UMD、ESM和CommonJS

UMD是AMD和CommonJS的一个糅合。AMD是浏览器优先,异步加载;CommonJS是服务器优先,同步加载。既然要通用,怎么办呢?那就先判断是否支持node.js的模块,存在就使用node.js;再判断是否支持AMD(define是否存在),存在则使用AMD的方式加载。这就是所谓的UMD。

zzy7075的专栏 5398

双馈风机并网系统宽频振荡机理与抑制方法研究

双馈风机并网系统宽频振荡分析与抑制 摘要:本文研究了双馈风机(DFIG)接入弱电网引发的宽频振荡问题。通过建立DFIG并网系统阻抗模型,分析了锁相环带宽、电流环带宽等参数对阻抗特性的影响。研究揭示了DFIG与电网阻抗交互导致交截频率处相位差超过180°的振荡机理。提出基于锁相环优化的阻抗重塑抑制策略,采用电压补偿和陷波器改善系统稳定性。仿真结果表明,该方法能有效降低相位差约10°-168°,显著抑制宽频振荡。代码实现了阻抗建模、稳定性分析和抑制策略验证,为工程应用提供了理论依据。

huanghm88的专栏 319

【ODX介绍】-4.2-UDS诊断$27服务在ODX-D诊断描述文件中如何描述

共25页精讲:附ODX-D XML:UDS $27 Security服务0x61和0x62 Sub-Function,其它Sub-Function可参照其格式。 目录 1 ODX-D描述一个UDS $27 Security服务Sub-Function的结构 2 标签DIAG-SERVICE描述的内容 2.1 举例:DIAG-SERVICE的XML描述 3 标签REQUEST描述的内容 3.1 举例:REQUEST的XML描述 4 标签POS-RESPONSE描述的内容 4.1 举例:PO..

「汽车电子助手」的博客 1121

AMD、CMD和CommonJS规范

AMD 与 CMD

vuturn的专栏 1万+

【法如faro】三维激光软件Scene2023数据处理(自动配准并转换坐标)流程

法如faro Scene2023数据处理(自动配准并转换坐标)的主要流程为:新建项目、导入数据、处理、自动注册、坐标系转换、模型导出立和面模型导出等。

智慧空间实验室 2383

CommonJS, AMD, CMD的区别

CommonJS, AMD, CMD的区别 CommonJS, AMD, CMD都是JS模块化的规范。 CommonJS是服务器端js模块化的规范,NodeJS是这种规范的实现。 AMD(异步模块定义)和CMD(通用模块定义)都是浏览器端js模块化的规范。RequireJS 遵循的是 AMD,SeaJS 遵循的是 CMD。 一 、CommonJS 根据CommonJS规范,一个单独的文件就是一个模...

关注最新技术问题并持续维护更新 5187

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

什么是 CommonJs 、UMD、CMD、AMD

什么是 CommonJs 、UMD、CMD、AMD?CommonJs是一种 JavaScript 语言的模块化规范,它通常会在服务端的 Nodejs 上使用。项目是由多个模块组成的,模块和模块之间的调用,需要各个模块有相同规范的 API,这样一来在使用的过程中不会有那么多的学习成本,并且对于单个模块来说是类聚的....

共同学习,共同成长 1267

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

CommonJS,AMD,CMD区别

CommonJS,AMD,CMD区别 commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如requirejs和seajs 其中,amd先提出,cmd是根据commonjs和amd基础上提出的。 CommonJS CommonJS是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中,Node.JS遵循CommonJS的规范CommonJS规范是为了解决JavaScript的作用域问题而定义的模块形式,可

高先生的猫 625

CommonJS,AMD,RequireJS的区别

RequireJS实现了AMD的API. CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容。简单地实现一个CommonJS的定义就像下面这样: // someModule.js exports.doSomething = function() { return "foo"; }; //otherModule.js var someModule = requ

866

AMD规范、CMD规范、CommonJS

一、AMD规范 AMD规范,全称是Asynchronous Module Definition,即异步模块加载机制。完整描述了模块的定义,依赖关系,引用关系以及加载机制。 AMD的核心是预加载,先对依赖的全部文件进行加载,加载完了再进行处理。 实际上AMD 是 RequireJS 在推广过程中对模块定义的规范化的产出 优点: 适合在浏览器环境中异步加载模块。可以并行加载多个模块。 缺点: 提高了开发成本,并且不能按需加载,而是必须提前加载所有的依赖。 RequireJS主要解决了两...

zyz00000000的博客 2585

CommonJS、AMD、CMD、ES6模块化区别详细总结

一、CommonJS、AMD、CMD、ES6知识点简单概述 (1)CommonJS NodeJS是CommonJS规范服务器端的实现,webpack也是CommonJS的形式书写。同步加载,服务器端从磁盘中读取速度快,运行在服务器端没有问题。 (2)AMD AMD是Asynchronous Module Definition异步模块定义。 基于CommonJS规范的node.JS是服务端模块化的实现。实现浏览器端的模块化就是AMD,且能与服务器端兼容最好。同一个模块在服务器端和浏览器端都可以维护运行,简单方

weixin_45709829的博客 7779

【AMD、CMD和CommonJS】

对于基本数据类型,属于复制。即会被模块缓存。同时,在另一个模块可以对该模块输出的变量重新赋值。 对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。 当使用require命令加载某个模块时,就会运行整个模块的代码。 当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。 循环加载时,属于

zz130428的博客 1028

JS中的CommonJS和AMD

参考:https://www.cnblogs.com/moxiaowohuwei/p/8692359.html js中function立即执行函数两种写法: (function (p1, p2) { console.log("p1 ", p1, ", p2 ", p2); })(38, 292); (function (p3, p4) { console.log("p3 ", p3, ", p4 ", p4); }(83, 22)); 结果: $ node MyEntry.js

wulong710的专栏 543

CommonJS,AMD,CMD

CommonJS、AMD、CMD三种规范理解 前言 这三个规范都是为Js模块化加载而生的,使模块能够按需加载,使系统同庞杂的代码得到组织和管理。 一、CommonJS 是一种为JS的表现指定的规范,它希望js可以运行在任何地方,更多的说的是服务端模块规范,Node.js采用了这个规范。 核心思想 一个单独文件就是一个模块,通过require方法来同步加载要依赖的模块,然后通过extports或则module.exports来导出需要暴露的接口。 require("module"); require("../

ajnkajnsc的博客 161

CommonJS,AMD,RequireJS的差别

RequireJS实现了AMD的API. CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容。简单地实现一个CommonJS的定义就像以下这样: // someModule.js exports.doSomething = function() { return "foo"; }; //otherModule.js var some...

aodiyi6351的博客 201

浅谈AMD跟CommonJS的区别

很多刚入门的web前端工程师,都接触过所为的Javascript的模块化,对AMD跟CommonJS都有一定的认知。但却不知道两者的本质区别!在这里简单的解释一下两者的区别跟共同点。 共同点:两者都是为了实现模块化编程而出现的,对于大型项目,参与人数多,代码逻辑复杂,是最适合使用模块化的思想来完成整个项目的。同时采用这种思想也很便于对整个项目进行管控。 区别:CommonJS是适用于服务器端的

ap0905211的博客 6008

Commonjs,AMD,CMD和UMD的差异

刚开始接触前端语言JavaScript和TypeScript,对其中的模块加载很晕,就研究了一下现有的模块加载方式。分别介绍CommonJS、AMD、CMD、UMD

老白在学习 3103

commonjs与amd

1. 什么是CommonJS?     CommonJS 是javascript模块化编程的一种规范,主要是在服务器端模块化的规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性。      commonJS规范是同步的,主要是用在nodejs的服务器端的,因为同在一个硬盘所以加载起

somanygenius的博客 694
上一篇: 谷歌浏览器 Unchecked runtime.lastError: The message port closed before a response was received.
下一篇: React-^16.4 componentWillMount、componentWillReceivePorps替代方案
composurext
博客等级 码龄10年 15粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值