NodeJs:“require” 函数详解,懂这个你就懂NodeJs了
2013-05-07 14:04
344 查看
背景
这篇文基本都是反对的,反对的很有道理,不是说我这篇文章的内容错误,因为这篇文章是我在健身房学习node的时候写的,这些知识都很粗糙,后来发现官方的稳定更详细:地址:http://nodejs.org/api/modules.html。
一直想在服务器端使用一种语言,ruby、phthon和php也都学过,对于我来说使用这三种语言需要一定的上下文切换成本。正在我纠结的时候,NodeJs出现了,而且我自信对Javascript还是比较熟悉的,因此就准备学习一下NodeJs。这样我的语言组合为:C#、Javascript和NodeJs,全是C Style,几乎没有切换成本。NodeJs
网上关于NodeJs的论述很多,此处不多说。个人认为,NodeJs的编程思想和客户端Javascript保持了一种理念,没有什么变化,只是增加了“require()”函数,因此只要学好require函数,剩下的问题就是如何更好的使用API了。require函数详解
路径
相对路径之当前目录:./xxx/xxx.js 或 ./xxx/xxx。相对路径之上级目录:../xxx/xxx.js 或 ../xxx/xxx。
绝对路径:F:/xxx/xxx.js 或 /xxx/xxx.js 或 /xxx/xxx。
require函数语法
require(路径.扩展名):如果 路径.扩展名 存在
执行加载 并 返回
否则
抛出异常
require(路径):
如果 路径.js 存在
执行加载 并 返回
如果 路径.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中的代码
require('module_1_1.js'); require('module_1_2'); require('../node_modules/module_2_1.js'); require('../node_modules/module_2_2'); require('../package_2_1'); require('package_3_1'); require('./node_modules/package_3_2'); require('module_3_1'); require('/node_study/level1/level2/level3/node_modules/module_3_1'); require('module_3_2'); require('/node_study/level1/level2/level3/package_3_3'); require('./package_3_4'); require('./module_3_3'); require('same_name_module'); require('same_name_package'); require('same_name_module_and_package');
输出结果
module_1_1.js module_1_2.js module_2_1.js module_2_2.js package_2_1 package_3_1 package_3_2 module_3_1.js module_3_2.js package_3_3 package_3_4 module_3_3.js same_name_module.js in leaf same_name_package in leaf same_name_module_and_package.js in leaf module
代码下载:http://yunpan.cn/QWIiPxdZdW8RG
备注
刚接触NodeJs,还没有深入学习其API,包括我对require的理解,也不一定正确,欢迎批评和指正。关于require(模块名字),应该有一个全局查找路径,今晚我再查查资料。这篇文章说的更详细,早知官方有文章,我就不写了,文章地址:http://nodejs.org/api/modules.html。
相关文章推荐
- NodeJs:“require” 函数详解
- ng 指令中的compile 和 link 函数解析 以及 自定义指令之间的通信详解 require
- require.js中的define函数详解
- 这个贴子的内容值得好好学习--实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
- jQuery.extend 函数详解 (要想真正看明白jquery插件开发,这个是必须先看的啊)
- nodejs中函数的调用实例详解
- jQuery.extend 函数详解 (要想真正看明白jquery插件开发,这个是必须先看的啊)
- Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解
- ecshop 函数参考和文件详解
- Linux系统调用--fcntl函数详解
- Linux中fork()函数详解
- C语言进阶【文件】常用文件操作函数详解(一) 推荐
- 详解spl_autoload_register()函数
- jQuery.extend 函数详解
- lua 函数调用 -- 闭包详解和C调用
- PHP 自定义错误处理函数的使用详解
- PHP ob_start() 函数详解
- c++中关键字static在普通变量及函数详解及实例运行答案
- 有一个string,写一个函数,要求输出这个string中每个单词出现的次数的列表
- Oracle 分析函数(11G)语法详解(转)