目次
1. モジュール化とは
プログラミング分野でのモジュール化とは、
一定の規則に従い、
大きなファイルを複数の独立した相互依存する小さなモジュールに
分割することです
。システム全体にとって、モジュールとは、結合、分解、および交換が可能なユニットです。
直感的な理解: ページは html、css、および js で構成されており、1 つのページに記述できますが、後で変更して再利用するのに役立ちません。そのため、通常は別々に書かれ、ページ内で結合されます
2.モジュラー仕様
モジュラー仕様とは、 コードをモジュール化して組み合わせるときに守らなければならないルールです。
- モジュールを参照するために使用する構文形式
- メンバーを外の世界に公開するために、モジュールでどのような文法形式が使用されているか
3. Node.js のモジュール性
デフォルトでは、サーバー側に適した CommonJS モジュラー仕様のみがサポートされています。
Node.js では、モジュールはモジュールのさまざまなソースに応じて 3 つのカテゴリに分類されます。
- 組み込みモジュール(組み込みモジュールは、fs、path、http など、Node.js によって公式に提供されています)
- カスタム モジュール(ユーザーが作成したすべての .js ファイルはカスタム モジュールです)
- サードパーティ モジュール(サードパーティによって開発されたモジュールは、公式の組み込みモジュールまたはユーザーが作成したカスタム モジュールではなく、使用前にダウンロードする必要があります)
//导入内置模块
const fs = require('fs')
//导入自定义模块,后缀会自动补全
const clock= require('./clock.js')
const clock= require('./clock')
//导入第三方模块,但需要先通过npm下载
const moment = require('moment')
カスタム モジュールをインポートする前に、まずカスタム モジュールのコンテンツをエクスポートする必要があります。モジュールスコープのため。モジュールのすべての属性またはメソッドがデフォルトでインポートされる場合、グローバル変数汚染が発生します。モジュールは model.exportsオブジェクトとともに存在します。外の世界がrequire() メソッドを使用してカスタム モジュールをインポートすると、モジュール module.exports が指すオブジェクトが取得されます。デフォルトは空です。コンテンツへの外部アクセスは、モジュールが最初に module.exports を使用してオブジェクトのプロパティまたはメソッドを渡す場合にのみ可能です。注: require() メソッドを使用してモジュールをインポートする場合、インポートの結果は 常に module.exports が指すオブジェクトに従います 。
// 在一个自定义模块中,默认情况下, module.exports = {}
const age = 20
// 向 module.exports 对象上挂载 username 属性
module.exports.username = 'zs'
// 向 module.exports 对象上挂载 sayHello 方法
module.exports.sayHello = function() {
console.log('Hello!')
}
module.exports.age = age
// 让 module.exports 指向一个全新的对象
module.exports = {
nickname: '小黑',
sayHi() {
console.log('Hi!')
}
}
メンバーを外部に共有するためのコードを簡素化するために、Node はexportsオブジェクトを提供します。デフォルトでは、exports と module.exports は同じオブジェクトを指します。最終的な共有結果は、依然として module.exports が指すオブジェクトに基づいています。混乱を避けるために、同じモジュールで exports と module.exports の両方を使用しないでください。
4. ES6 のモジュール性
ES6 モジュラー仕様は、ブラウザーとサーバーの両方に共通のモジュラー開発仕様です。
ES6 のモジュール化には、主に次の 3 つの用途があります。
- デフォルトのエクスポートとデフォルトのインポート
デフォルト エクスポートの構文: export default { デフォルトでエクスポートされるメンバー}
デフォルトのインポートの構文:インポートは「モジュール識別子」から名前を受け取ります
- オンデマンド エクスポートとオンデマンド インポート
オンデマンド エクスポートの構文: export let s1 = 'aaaa'
オンデマンド インポートの構文: import { s1 } from 'module identifier'注:オンデマンドで インポートされるメンバーの名前は、 オンデマンドでエクスポートされる名前と一致している 必要があります
- モジュール内のコードを直接インポートして実行する
import './name.js'
モジュール内のコードを実行するだけでは、モジュールの共有メンバーを取得する必要はありません。
5. node.js で ES6 のモジュール性を体験する
- v14.15.1以降の node.js がインストールされていることを確認してください
- "type": "module"ノードをpackage.json のルート ノードに追加します。