UDN-企业互联网技术人气社区

板块导航

浏览  : 780
回复  : 12

[Nodejs] [Node.js]模块

[复制链接]
htmlman的头像 楼主
发表于 2017-2-10 11:01:46 | 显示全部楼层 |阅读模式
  模块可以让Node.js的文件之间相互调用,模块是Node.js应用程序的基本组成部分,文件和模块是一一对应的,换言之,一个Node.js文件就是一个模块,这个文件可能是js代码,json或者编译过的c/C++扩展。

  创建模块

  在node.js中,创建一个模块是非常简单的。

  一个例子

  创建一个名为main.js的文件,代码如下:
  1. var hello=require("./hello");
  2. hello.world();
复制代码

  代码require("./hello")引入当前目录下的hello.js文件(./为当前目录,node.js默认后缀为js)。Node.js提供了exports和require两个对象,其中exports是模块公开的接口,require用于从外部获取一个模块的接口,即所获取模块的exports对象。

  创建hello.js文件,代码如下:
  1. exports.world=function(){
  2.     console.log("Hello module world");
  3. };
复制代码

  hello.js通过exports对象把world作为模块的访问接口,在main.js中通过require("./hello")加载这个模块,然后就可以访问hello.js中exports对象的成员函数了。

  把一个对象封装到模块中,格式如下:
  1. module.exports=function(){
  2.     ...
  3. };
复制代码

  例如:
  1. function Hello(){
  2.     var name;
  3. this.setName=function(thyName){
  4.         name=thyName;
  5.     };
  6. this.sayHello=function(){
  7.     console.log("Hello "+name);
  8.     };
  9. };
  10. module.exports=Hello;
复制代码

  这样我们可以通过下面的代码使用这个对象了:
  1. var Hello=require("./hello");
  2. var hello=new Hello();
  3. hello.setName("wolfy");
  4. hello.sayHello();
复制代码

2.png

  模块接口的唯一变化是使用了module.exports=Hello代替了exports.world=function(){}。在外部引用该模块时,其接口对象就是要输出的Hello对象本身,而不是原先的exports。

  服务端的模块

  在node.js内置了一些常用的模块,例如http,fs等。

  Node.js的require方法的文件查找策略如下:

  由于Node.js中存在4类模块(原生模块和3中文件模块),尽管require方法极其简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同,如图所示:
1.png

  从文件模块缓存中加载

  尽管原生模块与文件模块优先级不同,但是都不会优先于从文件模块的缓存中加载已经存在的模块。

  从原生模块加载

  原生模块的有限急仅次于文件模块缓存的优先级,require方法在解析文件名之后,优先检查模块是否在原生模块列表中。以http模块为例,尽管在目录下存在一个http/http.js/http.node/http.json文件,require("http")都不会从这些文件中加载,而是从原生模块中加载。原生模块也有一个缓存区,同样也是优先从缓存区中加载。如果缓存区没有被加载过,则调用原生模块的加载方式进行加载和执行。

  从文件加载

  当文件模块缓存中不存在,而且不是原生模块的时候,Node.js会解析require方法传入的参数,并从文件系统中加载实际的文件。

  require方法接收一下几种参数的传递:

  • http,fs,path等,原生模块。
  • ./mod或../mod,相对路径的文件模块
  • /pathtomodule/mod,绝对路径的文件模块。
  • mod,非原生模块的文件模块。

相关帖子

发表于 2017-2-10 11:02:18 来自手机 | 显示全部楼层
无论是不是沙发都得回复下
使用道具 举报

回复

发表于 2017-2-10 11:02:19 | 显示全部楼层
JavaScript依赖于浏览器本身,与操作环境无关,只要计算机能运行浏览器,并支持JavaScript的浏览器,就可正确执行,从而实现了“编写一次,走遍天下”的梦想。
点评 ( 1 ) 收起 / 展开点评

心如善水 2017年02月13日 18:20 详情 回复

学习一下

使用道具 举报

回复

发表于 2017-2-13 18:20:04 | 显示全部楼层
学习一下
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部