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

快速了解ES6Module模块化

ES6 Module

模块,是能够单独命名并独立完成一定功能程序语句的集合

定义听上去高大上,其实在日常项目中几乎每个文件都会用到,甚至很不起眼,

react组件的引用:

// router.js
import { createHashRouter } from 'react-router-dom';
import Contact from './pages/Contact';

const router = createHashRouter([
  {
    path: '/',
    element: <Contact />, 
]);

export { router };
// contact.jsx
export default function Contact() {
  return (
    <div>
      Contact
    </div>
  )
}

以上的exportimport正对应ES6module的两个特征

  • export: 规定模块对外接口
  • import:用于输入其他模块提供的功能

为什么模块化?

  • 代码抽象
  • 代码封装
  • 代码复用
  • 依赖管理

模块化机制

AMD/commonJs两种机制都只能在运行时确定:

AMD

代表库require.js

/** main.js / **/
require.config({
	baseUrl: "js/lib",
	paths: {
	 "jquery": "jquery.min", 
	}
});
require(["jquery"],function($,_){
	//code
});

commonJs

一般用于node之类的服务端。

  • 模块同步加载,只有加载完成才能执行后面的操作
  • 首次加载缓存,再次加载只返回缓存结果
const { read, write } = require('db')

// 等价于
let _db = require('db');
let read= _db.read;
let write  = _db.write ;

ES6module

但ES6静态化,编译时就能确定模块的依赖关系和输入输出

  • 不缓存,只加载需要的方法
  • 编译时,import提升到整个模块的头部(但建议手动放头部)
  • 多次相同导入,只执行一次
foo()

import { foo } from 'my_module';
import { foo } from 'my_module';

相关文章:

  • CLion的坑:CMake File API : no reply dir found clion
  • 【强化学习】DAPO 论文解读
  • 什么是索引下推和索引覆盖?
  • 06-SpringBoot3入门-常见注解(简介)
  • 《破局摩尔定律:AI驱动、异构集成与工具革新重构芯片效能新范式》
  • Redis数据迁移同步
  • 乳腺超声图像结节分割
  • LeetCode算法题(Go语言实现)_15
  • 煤矿油田光伏管理新突破:安科瑞分布式监控系统如何破解高耗能行业转型难题
  • 深度学习框架PyTorch——从入门到精通(9)PyTorch简介
  • 机试题——村落基站建设
  • Java 集合中ArrayList与LinkedList的性能比较
  • Visual Studio 2022中打开其他项目的步骤
  • 虚拟货币和 Token
  • 剑指Offer26 -- 树
  • ‘无法定位程序输入点kernel32.dll’详细的修复方法,一键快速修复kernel32.dll
  • 瑞芯微RK356X主板复用接口配置方法,触觉智能嵌入式方案商
  • 使用ModbusRTU读取松下测高仪的高度
  • CORDIC算法:三角函数的硬件加速革命——从数学原理到FPGA实现的超高效计算方案
  • d2025328
  • “十五五”时期长三角需创新机制,形成高水平一体化合作路径
  • 马上评|中药液涉嫌添加安眠药?药品安全儿戏不得
  • “南昌航空一号”成功发射,赣江鄱阳湖有了专属卫星守护
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 一旅客因上错车阻挡车门关闭 ,株洲西高铁站发布通报
  • 当智慧农场遇见绿色工厂:百事如何用科技留住春天的味道?