Nodejs のモジュール仕様に関する簡単な説明

青灯夜游
リリース: 2021-06-09 10:47:50
転載
2010 人が閲覧しました

この記事では、Nodejs のモジュール仕様について詳しく説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Nodejs のモジュール仕様に関する簡単な説明

モジュール仕様は大規模な Node.js アプリケーションを構築するための基礎となるため、非常に重要です。Node.js モジュール仕様は CommonJS モジュール仕様でもあります。以下で簡単に見てみましょう。 [推奨学習: 「nodejs チュートリアル 」]

CommonJS モジュール仕様

以前は、JS ファイルをロードする唯一の方法は<script></script> タグが導入されていますが、これには何が問題があるのでしょうか?

  • スクリプトの数が増えると、読み込み順序を手動で管理する必要があります。スクリプトの数が増えるほど、管理は難しくなります。
  • 異なるスクリプト間の論理呼び出しは、グローバル変数を通じて行う必要があります。
  • htmlがない場合にJSファイルを参照するにはどうすればよいですか?この例は Node.js です。

つまり、Node.js には CommonJS モジュール仕様があり、Webpack も CommonJS の記述方法と互換性があるため、CommonJS 仕様を使用してフロントエンド コードを記述することができます。

CommonJS モジュール仕様は JavaScript コミュニティによって開始され、Node.js に適用および推進され、その後ブラウザ側 JavaScript に影響を与えました。

require

require は CommonJS モジュール仕様の API で、使用するファイルを導入するために使用されます。たとえば、import lib.js:

require(&#39;./lib&#39;);
ログイン後にコピー

require はデフォルトで空のオブジェクトを返します。次の内容の新しいファイルを 2 つ作成します:

// lib.js
console.log('this is lib');

// index.js
console.log('start require')
var lib = require(&#39;./lib&#39;); // 默认返回一个空对象
console.log('end require', lib);
ログイン後にコピー

実行する 見てください: nodeindex.js

Nodejs のモジュール仕様に関する簡単な説明

exports を通じていくつかの属性をマウントすることもできます: 文字列、関数、オブジェクト、およびその他のタイプのデータ。

lib.js

console.log(&#39;this is lib&#39;)

exports.hello = "world"
exports.add = function (a, b) {
  return a + b;
}
exports.obj = { hello: "Node" }
ログイン後にコピー

Nodejs のモジュール仕様に関する簡単な説明

にコードを追加します。CommonJS モジュール仕様では、## by があるようです。デフォルト #exports このような空のオブジェクト。

では、

require はそのようなオブジェクトを返すので、その属性を変更して追加するとどうなるでしょうか?

// index.js
// 既然 require 返回一个对象,那么修改和添加属性会怎么样呢?
lib.hello = &#39;node&#39;;
lib.update = &#39;1234&#39;;
ログイン後にコピー
// lib.js
setTimeout(function() {
  console.log(exports)
}, 500)
ログイン後にコピー

Nodejs のモジュール仕様に関する簡単な説明

500mslib.js に追加すると、印刷内容が変更されたことがわかります。したがって、exports を通じてエクスポートする場合は、このコピーの問題に注意する必要があります。一部の学生はこの段落を見たことがあるかもしれません: CommonJS モジュールは値の浅いコピーを出力し、ES6 モジュールは値への参照を出力します。どうしたの?

requiremodule.exports を通じてデータを返すこともできることがわかり、データ型は制限されていません。たとえば、関数を返す場合:

// lib.js
console.log(&#39;this is lib&#39;)

exports.hello = "world"
exports.add = function (a, b) {
  return a + b;
}
exports.obj = { hello: "Node" }
// setTimeout(function() {
//   console.log(exports)
// }, 500)
module.exports = function minus(a, b) {
  return a - b;
}
ログイン後にコピー

Nodejs のモジュール仕様に関する簡単な説明

ご覧のとおり、

lib は出力 minus 関数を返します。

つまり、

モジュールが require の場合、module.exports が指定されている場合、exports よりも優先されます。 module.exports が指定されている場合は、module.exports で指定されているオブジェクトが使用されます。module.exports が指定されていない場合は、exports オブジェクト。

npm

npm 皆さんもご存知かと思いますので、簡単に紹介します。

npm は Node.js のパッケージ管理ツールです。Node.js をインストールすると、npm が付属します。パッケージは他人によって書かれた Node.js モジュールであり、日常の開発では他人によって開発され Node.js サーバー上に配置されたパッケージを使用することがよくあります。

npm 初期化: npm init、初期化中に Enter キーを押すだけで、package.json ファイルが生成されます。または、コマンドを実行します。 npm init -y、これによりデフォルトの package.json ファイルが生成されます。内部のプロパティは、npm init を実行して Enter キーを押した場合と同じです。

Nodejs のモジュール仕様に関する簡単な説明

package.json ファイルの内容は次のとおりです。

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
ログイン後にコピー
  • 下载安装依赖包 <packageName>npm install <packageName>;如果想要全局安装则添加 -gnpm install <packageName> -g。如安装 glob 包:npm install glob
  • 卸载依赖包的命令是 npm uninstall <packageName>

比如安装 express 包,安装成功会生成一个 node-modules 文件夹,我们下载的包就放在这个文件里面:

Nodejs のモジュール仕様に関する簡単な説明

如果使用 npm 安装依赖包的速度很慢,可以使用淘宝镜像 cnpm 来安装,镜像是指它把国外 npm 的包做一层复制然后映射到国内的服务器上面,这样不用山长水远去国外拉包,速度会快很多。

安装 cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org
ログイン後にコピー

cnpm 的使用和 npm 类似:cnpm install <packageName>

那如果你觉得 cnpm 不够正宗,不想长期使用,但有些包下载又确实慢了,可以临时使用镜像,比如安装 express

npm install express --registry=https://registry.npm.taobao.org
ログイン後にコピー

--registry= 是指定下载地址的意思,例如一些公司可能有自己的依赖包服务器,那么可以通过将这个地址指向公司的服务器地址来更快的下载依赖包。

cnpm 本身其实是 npm 的一个别名,使用 cnpm 的时候会自动帮我们加上后面的参数 --registry=https://registry.npm.taobao.org,然后通过镜像地址来下载依赖包。

另外,npm 使用遇到问题可以登录 官网 寻找解决办法:

Nodejs のモジュール仕様に関する簡単な説明

总结

  • Node.js 的模块规范就是 CommonJS 模块规范。
  • CommonJS 模块规范通过 require() 加载模块,默认返回一个对象,可以通过设置 exportsmodule.exports 设置模块返回的数据。
  • Node.js 的包管理工具是 npm,可通过使用镜像 cnpm 来提高下载速度。

更多编程相关知识,请访问:编程视频!!

以上がNodejs のモジュール仕様に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート