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

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环境与浏览器环境


http://www.kler.cn/a/292786.html

相关文章:

  • React Hooks在现代前端开发中的应用
  • 执行flink sql连接clickhouse库
  • HP G10服务器ESXI6.7告警提示ramdisk tmp已满
  • 设计模式练习(一) 单例模式
  • 【数据结构与算法】第12课—数据结构之归并排序
  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • 企业在选择CRM系统时需要注意哪些问题呼叫系统外呼系统部署搭建
  • FPGA第 9 篇,Verilog 中的关键字和基数
  • kuka6轴机器人配置外部启动信号(学习记录,可能不对)
  • Spring框架中的循环依赖详解以及解决方案
  • html初体验之hello world
  • 【前端面试】标记、绘画视频的某一帧
  • 微信小程序webgl 显示图片
  • 121.rk3399 uboot(2017.09) 源码分析1(2024-09-05)
  • Xilinx高速接口文档简介
  • 【机器人工具箱Robotics Toolbox开发笔记(七)】 创建机器人连杆对象
  • Docker in Docker 实践 on mac
  • 苹果手机之间如何互传文件?简单又高效的选择
  • Redis(Remote Dictionary Server)
  • pod控制器:
  • 【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提
  • Java项目:128 基于Spring Boot的装饰工程管理系统
  • 机器学习——决策树模型
  • TensorFlow-keras介绍(一)
  • 如何在极狐GitLab中添加 SSH Key?
  • Ubuntu固定USB串口名(包括1拖N的USB串口)