Nodejs学习——模块系统和函数

 

创建模块

       实例

var say = require('./test2');
say.nodejs();

 

       运行结果:

 

  “./”表示当前的目录,引入当前目录的test2.js文件

 

       test2.js文件中的内容:

       exports.nodejs= function () {
      console.log('this is node.js');
};

       exports是模块公开的接口,require用于从外部获取一个模块的接口,即获取的模块的exports对象。

 

       把对象封装到模块中:

       实例:

var say = require('./test2');
say = new say();
say.sayhello();

 

test2.js文件

function say() {
    var word = 'hello world';
    this.sayhello = function () {
        console.log(word);
    }
}

module.exports = say;

 

用module.exports = say 替换了原来的 exports.name = function(){}

同时使用的方式也稍有不同,第一个直接可以引用模块中的方法,而第二种则需要通过new方法以后才能引用。

 

 

Require方法的查找优先级

1、文件模块缓存区

2、原生模块

3、文件模块

 

在路径 Y 下执行 require(X) 语句执行顺序:(节选自菜鸟教程:https://www.runoob.com/nodejs/nodejs-module-system.html)

1. 如果 X 是内置模块

   a. 返回内置模块

   b. 停止执行

2. 如果 X '/' 开头

   a. 设置 Y 为文件根路径

3. 如果 X './' '/' or '../' 开头

   a. LOAD_AS_FILE(Y + X)

   b. LOAD_AS_DIRECTORY(Y + X)

4. LOAD_NODE_MODULES(X, dirname(Y))

5. 抛出异常 "not found"

 

LOAD_AS_FILE(X)

1. 如果 X 是一个文件, X 作为 JavaScript 文本载入并停止执行。

2. 如果 X.js 是一个文件, X.js 作为 JavaScript 文本载入并停止执行。

3. 如果 X.json 是一个文件, 解析 X.json JavaScript 对象并停止执行。

4. 如果 X.node 是一个文件, X.node 作为二进制插件载入并停止执行。

 

LOAD_INDEX(X)

1. 如果 X/index.js 是一个文件,  X/index.js 作为 JavaScript 文本载入并停止执行。

2. 如果 X/index.json 是一个文件, 解析 X/index.json JavaScript 对象并停止执行。

3. 如果 X/index.node 是一个文件,  X/index.node 作为二进制插件载入并停止执行。

 

LOAD_AS_DIRECTORY(X)

1. 如果 X/package.json 是一个文件,

   a. 解析 X/package.json, 并查找 "main" 字段。

   b. let M = X + (json main 字段)

   c. LOAD_AS_FILE(M)

   d. LOAD_INDEX(M)

2. LOAD_INDEX(X)

 

LOAD_NODE_MODULES(X, START)

1. let DIRS=NODE_MODULES_PATHS(START)

2. for each DIR in DIRS:

   a. LOAD_AS_FILE(DIR/X)

   b. LOAD_AS_DIRECTORY(DIR/X)

 

NODE_MODULES_PATHS(START)

1. let PARTS = path split(START)

2. let I = count of PARTS - 1

3. let DIRS = []

4. while I >= 0,

   a. if PARTS[I] = "node_modules" CONTINUE

   b. DIR = path join(PARTS[0 .. I] + "node_modules")

   c. DIRS = DIRS + DIR

   d. let I = I - 1

5. return DIRS

 

函数

Node.js函数的使用与javascript类似

函数可以作为参数使用

实例

 

function miss() {
    console.log("我慢慢地、慢慢地了解到,所谓父女母子一场,只不过意味着"+
        ",你和他的缘分就是今生今世不断地在目送他的背影渐行渐远。你站在小"+
        "路的这一端,看着他逐渐消失在小路转弯的地方,而且,他用背影默默告"+
        "诉你:不必追。")
}

function say(funName){
    funName();
}

var say = say(miss);

 

运行结果:

 

 

匿名函数

 

实例

 

function say(funName){
    funName();
}

var say = say(function () {
    console.log("我慢慢地、慢慢地了解到,所谓父女母子一场,只不过意味着"+
        ",你和他的缘分就是今生今世不断地在目送他的背影渐行渐远。你站在小"+
        "路的这一端,看着他逐渐消失在小路转弯的地方,而且,他用背影默默告"+
        "诉你:不必追。")
});

运行结果:

 

 

猜你喜欢

转载自blog.csdn.net/xxtnt/article/details/83148663