nodejs目前很火。我也来了解一下吧。今天看了modules的功能。
先看一下一段官方的例子吧。
circle.js一个封装了计划圆面积和周长计算的文件。
var PI = Math.PI; exports.area = function (r) { return PI * r * r; }; exports.circumference = function (r) { return 2 * PI * r; };
其中exports用于对外输出的方法。
调用的js如下
var circle = require('./circle.js'); console.log( 'The area of a circle of radius 4 is ' + circle.area(4));
这个就是一个modules的定义和调用。接下一起来学习一下执行执行顺序吧。当文件被require的时候,它会执行默认的顺序。
还是引用官方的例子
a.js:
console.log('a starting'); exports.done = false; var b = require('./b.js'); console.log('in a, b.done = %j', b.done); exports.done = true; console.log('a done');
b.js:
console.log('b starting'); exports.done = false; var a = require('./a.js'); console.log('in b, a.done = %j', a.done); exports.done = true; console.log('b done');
main.js:
console.log('main starting'); var a = require('./a.js'); var b = require('./b.js'); console.log('in main, a.done=%j, b.done=%j', a.done, b.done);
例子出现了循环调用。为了防止循环调用。它们是顺序执行,当执行到requer("./b.js"),b.js会完成执行,然后exports提供给a.js。
nodejs中也自带了一些core modules。它在nodejs的源代码里的目录:lib/下。
有关requre的一些细节:
如果filename.js没有找到,那么将会去寻找.js .json .node的文件。
如果不是以/ ./开头,那么,将会去寻找“node_modules”的内容。
那么会以当前module的父目录下查找/node_modules。如果没有找到,那么再往上查找一级。
如果/home/ry/projects/foo.js,的代码里有requre('bar.js');顺序应该是如下
/home/ry/projects/node_modules/bar.js // 当前目录的node_modules
/home/ry/node_modules/bar.js//上一级
/home/node_modules/bar.js//再上线
/node_modules/bar.js//
文件夹作为modules
在当前目录下创建package.json。
{ "name" : "some-library", "main" : "./lib/some-library.js" }
如果没有pageage.json,他会去寻找index.js 或者index.node.
判断当前的执行是否是从当前文件开始的。可以使用
require.main = module判断。
刚开始学习,就留下一些笔记吧。