一直想在服务器端使用一种语言,ruby、phthon和php也都学过,对于我来讲使用这三种语言须要必定的上下文切换成本。正在我纠结的时 候,NodeJs出现了,并且我自信对Javascript仍是比较熟悉的,所以就准备学习一下NodeJs。这样个人语言组合为:C#、 Javascript和NodeJs,全是C Style,几乎没有切换成本。php
网上关于NodeJs的论述不少,此处很少说。我的认为,NodeJs的编程思想和客户端Javascript保持了一种理念,没有什么变化,只是增长了“require()”函数,所以只要学好require函数,剩下的问题就是如何更好的使用API了。html
require(路径.扩展名):node
若是 路径.扩展名 存在编程
执行加载 并 返回json
不然api
抛出异常ruby
require(路径):服务器
若是 路径.js 存在函数
执行加载 并 返回post
若是 路径.node 存在
执行加载 并 返回
若是 路径/package.json 存在
执行加载(package.json 中 main属性对应的路径) 并 返回
若是 路径/index.js 存在
执行加载 并 返回
若是 路径/index.node 存在
执行加载 并 返回
抛出异常
require(模块名字):
若是 模块名字是系统模块
执行加载 并 返回
若是 require(./node_modules/模块名字) 能加载到模块 //参考require(路径)的介绍
执行加载 并 返回
若是 require(../node_modules/模块名字) 能加载到模块 //参考require(路径)的介绍
执行加载 并 返回
沿着目录向上逐级执行require(上级目录/node_modules/模块名字),若是能加载到模块 //参考require(路径)的介绍
执行加载 并 返回
抛出异常
文件结果
require_study.js中的代码
1 require('module_1_1.js'); 2 require('module_1_2'); 3 require('../node_modules/module_2_1.js'); 4 require('../node_modules/module_2_2'); 5 require('../package_2_1'); 6 require('package_3_1'); 7 require('./node_modules/package_3_2'); 8 require('module_3_1'); 9 require('/node_study/level1/level2/level3/node_modules/module_3_1'); 10 require('module_3_2'); 11 require('/node_study/level1/level2/level3/package_3_3'); 12 require('./package_3_4'); 13 require('./module_3_3'); 14 require('same_name_module'); 15 require('same_name_package'); 16 require('same_name_module_and_package');
输出结果
1 module_1_1.js 2 module_1_2.js 3 module_2_1.js 4 module_2_2.js 5 package_2_1 6 package_3_1 7 package_3_2 8 module_3_1.js 9 module_3_2.js 10 package_3_3 11 package_3_4 12 module_3_3.js 13 same_name_module.js in leaf 14 same_name_package in leaf 15 same_name_module_and_package.js in leaf module
代码下载:http://yunpan.cn/QWIiPxdZdW8RG
刚接触NodeJs,尚未深刻学习其API,包括我对require的理解,也不必定正确,欢迎批评和指正。关于require(模块名字),应该有一个全局查找路径,今晚我再查查资料。
这篇文章说的更详细,早知官方有文章,我就不写了,文章地址:http://nodejs.org/api/modules.html。