当前位置: 首页 > news >正文

CommonJS与ESModule标准

模块化的作用

  • 解决全局变量污染
  • 解决依赖混乱
  • 便于代码功能分类
  • 利于代码维护管理

规范内容

  • CommonJS规定:
  1. 每个独立的js文件中的全局变量是互不干扰的,不会污染其他js文件

  2. CommonJS是一个社区规范,node环境支持,每个js文件都是一个CMJ模块,使用node运行其中一个模块(入口模块)

  3. 当某模块需要使用其他模块的内容时,其他模块要【暴露】此内容,而此模块需要【导入】此内容

1.js
function a(a,b){return a+b;
};
// 导出,暴露
module.exports = {a
};2.js
// 导入,返回暴露的对象内容
const a = require('./1.js');

导入模块时,可以省略.js
必须以./../开头

  • ES Module规定:
  1. 这是随着ES6发布的官方模块化标准,目前浏览器和新版本node环境均支持
  2. 当某模块需要使用其他模块的内容时,其他模块要【暴露】此内容,而此模块需要【导入】此内容,一个模块可以同时存在两种导出方式,最终会合并为一个「对象」导出
// 默认导出(暴露),只能暴露一个内容
export default 3
// 具名导出
export const d = 3;
const d=3;
export {d}
// as 另取名
const k = 3;
export k as m;// 导入
// 仅运行一次该模块,不导入任何内容
import "模块路径"
// 导入属性 a、b,放到变量a、b中
import { a, b } from "模块路径"   
// 导入属性 default,放入变量c中
import c from "模块路径"  
// default->c,a->a, b->b
import c, { a, b } from "模块路径" 
// 将模块对象放入到变量obj中
import * as obj from "模块路径" // 以上均为静态导入
import("模块路径") // 动态导入,返回一个Promise,完成时的数据为模块对象

注意:静态导入的代码必须为在代码顶端,也不可放入代码块中
另外,静态导入的代码绑定的符号是常量,不可更改
导入模块时,不可以省略.js

两者最主要的区别就是导入与导出的区别
CommonJS只用于node环境
ES Module可用于node环境与浏览器环境

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • uni-app - - - - - 使用uview-plus详细步骤
  • 深度学习之 OpenCV 图像边缘检测算法解析及代码演示
  • 【mysql】mysql目录结构和源码和mysql基础练习
  • 008、架构_MDS
  • DNS解析:深入解析与实战应用
  • 【C语言】通讯录的实现(详解)
  • 网络技术基础
  • 基于VUE的校园二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程)
  • CTFhub通关攻略-SSRF篇【1-5关】
  • python网络爬虫(四)——实战练习
  • Qt22双缓冲机制
  • 网络模型及协议介绍
  • 使用 EasyExcel 高效读取大文件 Excel
  • Java内部类的应用分析
  • 【千帆AppBuilder】使用Python调用基于官方的API创建图片故事的应用,一起体验下全代码模式下是怎样的效果
  • 「面试题」如何实现一个圣杯布局?
  • CentOS6 编译安装 redis-3.2.3
  • ES6语法详解(一)
  • hadoop集群管理系统搭建规划说明
  • JS笔记四:作用域、变量(函数)提升
  • orm2 中文文档 3.1 模型属性
  • SAP云平台里Global Account和Sub Account的关系
  • 前端技术周刊 2019-02-11 Serverless
  • 让你的分享飞起来——极光推出社会化分享组件
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (1)常见O(n^2)排序算法解析
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (编译到47%失败)to be deleted
  • (二)构建dubbo分布式平台-平台功能导图
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转) RFS+AutoItLibrary测试web对话框
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET : 在VS2008中计算代码度量值
  • .net Signalr 使用笔记
  • .net 提取注释生成API文档 帮助文档
  • .NET 中创建支持集合初始化器的类型
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net的DataSet直接与SQL2005交互
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • [20171102]视图v$session中process字段含义
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [CF226E]Noble Knight's Path
  • [codevs 1515]跳 【解题报告】