nodejs中的模块
2016-06-12 12:00
274 查看
核心模块#
显示原文其他翻译
纠错
Node中有一些模块是编译成二进制的。这些模块在本文档的其他地方有更详细的描述。
显示原文
其他翻译
纠错
核心模块定义在node源代码的
lib/目录下。
显示原文
其他翻译
纠错
require()总是会优先加载核心模块。例如,
require('http')总是返回编译好的HTTP模块,而不管是否有这个名字的文件。
显示原文
其他翻译
纠错
文件模块#
显示原文其他翻译
纠错
如果按文件名没有查找到,那么node会添加
.js和
.json后缀名,再尝试加载,如果还是没有找到,最后会加上
.node的后缀名再次尝试加载。
显示原文
其他翻译
纠错
.js会被解析为Javascript纯文本文件,
.json会被解析为JSON格式的纯文本文件.
.node则会被解析为编译后的插件模块,由
dlopen进行加载。
显示原文
其他翻译
纠错
模块以
'/'为前缀,则表示绝对路径。例如,
require('/home/marco/foo.js'),加载的是
/home/marco/foo.js这个文件。
显示原文
其他翻译
纠错
模块以
'./'为前缀,则路径是相对于调用
require()的文件。
也就是说,
circle.js必须和
foo.js在同一目录下,
require('./circle')才能找到。
显示原文
其他翻译
纠错
当没有以'/'或者'./'来指向一个文件时,这个模块要么是"核心模块",要么就是从
node_modules文件夹加载的。
显示原文
其他翻译
纠错
如果指定的路径不存在,
require()会抛出一个
code属性为
'MODULE_NOT_FOUND'的错误。
显示原文
其他翻译
纠错
从node_modules
文件夹中加载#
显示原文其他翻译
纠错
如果
require()中的模块名不是一个本地模块,也没有以
'/',
'../',
或是
'./'开头,那么node会从当前模块的父目录开始,尝试在它的
/node_modules文件夹里加载相应模块。
显示原文
其他翻译
纠错
如果没有找到,那么就再向上移动到父目录,直到到达顶层目录位置。
显示原文
其他翻译
纠错
例如,如果位于
'/home/ry/projects/foo.js'的文件调用了
require('bar.js'),那么node查找的位置依次为:
显示原文
其他翻译
纠错
/home/ry/projects/node_modules/bar.js
/home/ry/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js
显示原文
其他翻译
纠错
这就要求程序员应尽量把依赖放在就近的位置,以防崩溃。
显示原文
其他翻译
纠错
Folders as Modules#
显示原文其他翻译
纠错
可以把程序和库放到一个单独的文件夹里,并提供单一入口来指向它。有三种方法,使一个文件夹可以作为
require()的参数来加载。
显示原文
其他翻译
纠错
首先是在文件夹的根目录创建一个叫做
package.json的文件,它需要指定一个
main模块。下面是一个package.json文件的示例。
显示原文
其他翻译
纠错
{ "name" : "some-library", "main" : "./lib/some-library.js" }
显示原文
其他翻译
纠错
示例中这个文件,如果是放在
./some-library目录下面,那么
require('./some-library')就将会去加载
./some-library/lib/some-library.js。
显示原文
其他翻译
纠错
This is the extent of Node's awareness of package.json files.
显示原文
其他翻译
纠错
如果目录里没有package.json这个文件,那么node就会尝试去加载这个路径下的
index.js或者
index.node。例如,若上面例子中,没有package.json,那么
require('./some-library')就将尝试加载下面的文件:
显示原文
其他翻译
纠错
./some-library/index.js
./some-library/index.node
显示原文
其他翻译
纠错
Caching
相关文章推荐
- leetcode之Intersection of two arrays,delete node in a list, same tree
- Node.js Addons翻译(C/C++扩展)
- Node.js Addons翻译(C/C++扩展)
- Delete a node, only give access to that node.
- Node.js之Express三
- bug:配置secondarynamenode && 斯塔尼亚聊天记录
- bug:datanode启动后立刻死掉:java.io.IOException: Incompatible clusterIDs in....
- Node.js(插件包)、Sublime text3安装与配置
- Node.js服务器端编程实践(一):服务器创建与hello world应答
- Openstack组建部署 — Environment of Controller Node
- Node.js and the new web front-end
- Range——插入对象insertNode
- node安装相关
- leetcode 117 Populating Next Right Pointers in Each Node II
- leetcode 116 Populating Next Right Pointers in Each Node
- nodemcu的gpio相关操作
- 使用淘宝镜像访问node包
- 将单链表中相邻两节点对换
- Datanode JPS
- Node.js基本语法简介