This article mainly introduces the simple getting started course of Nodejs (1): module mechanism. This article describes the basic knowledge of the module, module loading, and Package content, if you need it, you can refer to the JavaScript specification (ECMAScript) without defining a complete set of standard libraries that can be applied to most programs. CommonJS provides a set of JavaScript standard library specifications. Node implements the CommonJS specification.
Module Basics
In Node, modules and files correspond one by one. We define a module:
The Code is as follows:
// Circle. js
Var PI = Math. PI;
// Export the function area
Exports. area = function (r ){
Return PI * r;
}
// Export the function circumference
Exports. circumference = function (r ){
Return 2 * PI * r;
};
Add the function to be exported to the exports object. The local variables of the module cannot be accessed externally (for example, the PI variable in the previous example ). Call require to load the module circle. js:
The Code is as follows:
Var circle = require ('./circle. js ');
Console. log ('the area of a circle of radius 4 is'
+ Circle. area (4 ));
It is mentioned that a module object exists in the module, indicating the module itself, and exports indicates the module attribute.
Module Loading
Node caches loaded modules to avoid overhead of re-loading:
The Code is as follows:
// Test. js
Console. log ("I'm here ");
Multiple Loading modules test. js
The Code is as follows:
// Output "I'm here" only once"
Require ('./test ');
Require ('./test ');
When the file to be loaded has no suffix, Node will try to add the suffix and load it:
1.. js (JavaScript source file)
2. node (C/C ++ extension module)
3. json (JSON file)
There are several main modules:
1. core modules. The core modules have been compiled into Node. We can find these core modules in the lib directory of the source code. Common core modules: net, http, and fs
2. File module. The file module is loaded through a relative or absolute path, for example, the circle. js shown above
3. Custom module. The custom module is located in the node_modules directory. The modules we install through npm are placed in the node_modules directory.
The core module is always loaded first. If there is a custom module http, the core module http will still be loaded while loading, not the custom module http. When loading a custom module, first find the node_modules directory under the current directory, then find the node_modules directory under the parent directory, and so on until the root directory.
When a module loaded by require is not a file but a directory, such a directory is called a package ). The package contains a file named package. json (package Description file), for example:
The Code is as follows:
{"Name": "some-library ",
"Main": "./lib/some-library.js? 1.1.23 "}
Main indicates the module to be loaded. If the main module is not specified in the package. json or package. json, Node will try to load index. js, index. node, and index. json.
When loading the JavaScript module, the loaded module is wrapped in a function:
The Code is as follows:
Function (module, exports, _ filename, _ dirname ,...){
JavaScript module
}
The module, exports, _ filename, and _ dirname accessed by each JavaScript module are actually transmitted through function parameters. Because of this package, the module's local variables cannot be accessed externally. However, sometimes there are hard-to-understand problems, such:
Test1.js
The Code is as follows:
Exports = {
Name: 'name5566 ',
}
Test2.js
The Code is as follows:
Module. exports = {
Name: 'name5566 ',
}
Load these two modules:
The Code is as follows:
Var test1 = require ('./test1.js ');
Console. log (test1.name); // undefined
Var test2 = require ('./test2.js ');
Console. log (test2.name); // Name5566
The exports parameter is passed to the module through exports. x can naturally add properties (or methods) to the exports object, but assigning values directly to exports (for example, exports = x) only changes the values of the form parameter rather than the real parameter. Therefore:
1. When adding properties for exports, use exports
2. When assigning values to exports, use module. exports
Package
According to CommonJS specifications, a complete package should include:
1. package. json package description file
2. bin binary file directory
3. lib JavaScript code directory
4. doc document directory
5. test code directory
NPM is a Node package management tool. Common usage:
View the command documentation:
The Code is as follows:
Npm help install
View the install command documentation.
Install a package:
The Code is as follows:
Npm install redis
Install the redis package. The install command installs the package in the node_modules directory under the current directory.
Remove a package:
The Code is as follows:
Npm remove redis
Remove the redis package. The remove command removes the packages in the current directory.