Cet article vous donnera une compréhension détaillée des spécifications du module dans Nodejs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
La spécification du module est la base pour créer une application Node.js à grande échelle, elle est donc très importante ; la spécification du module Node.js est également la spécification du module CommonJS. jetez-y un bref coup d’œil ci-dessous. [Apprentissage recommandé : "Tutoriel nodejs"]
Dans le passé, le seul moyen de charger des fichiers JS était via le <script></script>
tag , quel est le problème avec ça ?
html
? Cet exemple est Node.js. Node.js possède donc la spécification du module CommonJS, et Webpack est également compatible avec la méthode d'écriture CommonJS, nous permettant d'utiliser la spécification CommonJS pour écrire du code front-end.
La spécification du module CommonJS a été initiée par la communauté JavaScript. Elle a été appliquée et promue sur Node.js, et a ensuite affecté le JavaScript côté navigateur.
require
est l'API de la spécification du module CommonJS, qui sert à introduire les fichiers à utiliser. Par exemple, introduire lib.js
:
require('./lib');
require
renvoie un objet vide par défaut ; créez deux nouveaux fichiers avec le contenu suivant :
// lib.js console.log('this is lib'); // index.js console.log('start require') var lib = require('./lib'); // 默认返回一个空对象 console.log('end require', lib);
Exécutons-le : node index.js
Il peut également monter certains attributs via exports
: chaînes, fonctions, objets et autres types de données.
Ajoutez du code dans lib.js
console.log('this is lib') exports.hello = "world" exports.add = function (a, b) { return a + b; } exports.obj = { hello: "Node" }
Il semble que selon la spécification du module CommonJS, il a un objet vide comme exports
par défaut .
Donc puisque require
renvoie un tel objet, que se passe-t-il si vous modifiez et ajoutez ses propriétés ?
// index.js // 既然 require 返回一个对象,那么修改和添加属性会怎么样呢? lib.hello = 'node'; lib.update = '1234';
Comme vous pouvez le voir, le contenu imprimé change après l'ajout d'un lib.js
à 500ms
. Ainsi, lors de la sortie via exports
, vous devez faire attention à ce problème de copie. Certains étudiants ont peut-être vu ce paragraphe : Le module CommonJS génère une copie superficielle d'une valeur et le module ES6 génère une référence à la valeur. Alors que se passe-t-il ?
Il s'avère que require
peut également renvoyer des données via module.exports
, et le type de données n'est pas limité. Par exemple, renvoyer une fonction :
// lib.js setTimeout(function() { console.log(exports) }, 500)
Vous pouvez voir : lib
renvoie la sortie de la fonction minus
.
signifie que lorsque est dans un module require
, module.exports
a une priorité plus élevée que exports
Si module.exports
est spécifié, alors celui spécifié par module.exports
. sera utilisé. Objet Si module.exports
n'est pas spécifié, l'objet exports
sera utilisé.
npm
Je pense que tout le monde le connaît, voici donc juste une brève introduction.
npm
est l'outil de gestion de packages de Node.js Lors de l'installation de Node.js, il sera livré avec npm
. Les packages sont des modules Node.js écrits par d'autres. Dans notre développement quotidien, nous utilisons souvent des packages développés par d'autres et placés sur le serveur Node.js.
npm
Initialisation : npm init
, appuyez simplement sur Entrée lors de l'initialisation, puis un fichier package.json
sera généré ; ou exécutez la commande npm init -y
, qui générera un fichier package.json
par défaut, les propriétés à l'intérieur sont les mêmes que si vous exécutiez npm init
et appuyez sur Entrée.
package.json
Le contenu du fichier est le suivant :
{ "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>
;如果想要全局安装则添加 -g
:npm install <packageName> -g
。如安装 glob
包:npm install glob
npm uninstall <packageName>
。比如安装 express
包,安装成功会生成一个 node-modules
文件夹,我们下载的包就放在这个文件里面:
如果使用 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 使用遇到问题可以登录 官网 寻找解决办法:
require()
加载模块,默认返回一个对象,可以通过设置 exports
或 module.exports
设置模块返回的数据。更多编程相关知识,请访问:编程视频!!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!