Coursera 笔记

Module 01 · Introduction to Server-Side JavaScript服务器端 JavaScript 入门

Import and Require模块与 import 和 require 的使用指南

Coursera ↗

欢迎来到《import 和 require》的课程!完成本视频后,您将能够:

  1. 解释什么是模块
  2. 定义模块规范
  3. 说明 import 和 require 语句的用途
  4. 区分 import 和 require 语句

模块与模块规范

什么是模块?

  • 模块是包含相关 JavaScript 代码的文件,具有明确的功能。
  • 模块可以是一个单独的文件,也可以是多个文件和文件夹的集合。
  • 模块优势:
    • 代码复用性:提高效率,减少冗余。
    • 代码可管理性:将复杂代码拆分成更易于管理的部分。

模块调用

  • 当一个外部应用需要使用模块中的代码时,需要通过 import() 或 require() 语句来调用模块。
  • 调用语句的选择取决于所使用的模块规范。

模块规范

  • 定义:模块规范是为 Node.js 应用中的 JavaScript 代码创建包时所使用的约定和标准。
  • 常见模块规范:
    • CommonJS:默认被 Node.js 支持。
    • ES 模块(ESM):通过将文件扩展名从 .js 更改为 .mjs 启用。


import** 和require的比较**

语法与用法

特性 require import
适用规范 CommonJS ES 模块
调用位置 可在文件中的任何位置调用 必须在文件的开头调用
绑定方式 动态绑定 静态绑定
错误识别时机 运行时(Run-time)识别 编译时(Compile-time)识别
加载方式 同步(Synchronous) 异步(Asynchronous)

同步与异步

  • 同步加载(require):
    • 模块按顺序线性加载。
    • 适用场景:小型应用程序或少量模块的加载。
  • 异步加载(import):
    • 模块可同时加载,提高速度。
    • 适用场景:大型应用程序中需要加载上百个模块时表现更优。

模块导入与导出示例

CommonJS 的导入与导出

导出模块

文件名:message.js

module.exports = "Hello programmers";

导入模块

文件名:main.js

const msg = require('./message.js');
console.log(msg); // 输出: Hello programmers

ES 模块的导入与导出

导出模块

文件名:module.mjs

const a = 1;
export { a as myValue }; // 使用 export 导出并重命名

导入模块

文件名:main.mjs

import { myValue } from './module.mjs';
console.log(myValue); // 输出: 1

总结

  1. 模块:包含相关 JavaScript 函数的文件,旨在实现特定功能。
  2. 模块规范:CommonJS 和 ES 模块是 Node.js 中的两种主要模块规范。
  3. require** 与 import 的区别**:
  • require:动态绑定,同步加载,适用于 CommonJS。
  • import:静态绑定,异步加载,适用于 ES 模块。
  1. 使用模块可以提升代码的可维护性和开发效率,特别是在大型应用程序中,选择正确的模块规范至关重要。

🎉 恭喜!您已了解 import 和 require 的核心概念与使用方法! 🚀