Node.js是如何处理模块的
来源:互联网 发布:如何获得淘宝优惠券 编辑:程序博客网 时间:2024/06/16 00:14
Node.js模块分为两类:原生模块和文件模块
1、原生模块:是指Node.js API提供的原生模块。原生模块在启动时就已经被加载;
2、文件模块:为动态加载模块,加载模块的工作主要是由原生模块module来实现和完成的。
原生模块在启动时已经被加载,而文件模块则需要通过调用Node.js的require方法来实现加载。
那node.js处理模块的机制是怎么样的呢 ?
node.js如何处理模块的?
上面说过了node.js模块分为原生模块和文件模块。而且它们加载和调用存在一定区别,所以 我们就分别来说说两者的调用。
1、原生模块的调用
通过使用Node.js API提供的require()直接加载相应的模块。require()加载成功后会返回一个Node.js模块对象,并且这个对象拥有该模块的所有的属性和方法。
var httpObject = require('http'); // 引入node.js原生的http模块
对于上面code, “http”是Node.js的原生模块,在这个模块里定义了createServer、request和get等多个方法和属性;而httpObject则是我们通过require方法加载原生HTTP模块后所返回的对象,通过这个对象我们就可以访问到HTTP模块所有的属性和方法。
例如:
// 通过httpObject对象调用Node.js原生HTTP模块的.createServer()方法和.listen()方法创建简单服务器var server = httpObject.createServer(function(req, res) { // here are code......}).listen( 8088 );
Node.js官方API文档:http://node.js.org/api/
2、文件模块的调用
文件模块调用与原生模块调用方式稍微有点区别,这里的区别是传入require()方法里的参数形式(加载方式)不同。调用文件模块传入的是模块路径,而原生模块不需要指定模块路径。
在调用文件模块时如果没有指明模块路径,又或者传入的路径不对都会出现下面的报错:
can not find **** module
下面是一个文件模块加载示例:
var test = require('/path/.../test.js');// 或者var test = require('/path/.../test');
注意:
1>、‘/path/…/test.js’是test模块的绝对路径,有绝对路径当然也有相对路径,两者你自己选择使用哪一个。对于上面的示例代码,如果换成相对路径是:require(‘./test’);2>、加载文件模块成功后返回的依然也是一个模块对象。
那现在可以用返回的模块对象test调用该文件模块的哪些属性和方法?
Node.js明确指出,在模块文件中,只有那些通过通过exports和module.exports对象暴露(如果感兴趣的话可以阅读我写细说exports和module.exports, 那片文章对export和module.exports做了详细的介绍,在这里就不多说了)给外部的属性和方法才能够通过require()方法返回的模块对象调用,而其他的方法和属性是无法获取的。例如:
/* * 这里是我们的文件模块代码 */ exports.name = " Pandora Galen "; // exports暴露name属性 exports.getName = function() { // exports暴露getName方法 console.log( this.name ); }; yourName = " reader "; function love() { console.log('Welcome!'); }
如果引用上述文件模块,则name属性和getName方法是你可以调用的,而yourName属性和love方法是你无法获得的。
- Node.js是如何处理模块的
- Node如何处理模块之间的关系
- Node.js 异步异常的处理与domain模块解析
- Node.js 异步异常的处理与domain模块解析
- Node.js 异步异常的处理与domain模块解析
- 最快的Node.js图片处理模块:sharp
- 如何封装Node.js和前端通用的模块
- 如何封装Node.js和前端通用的模块
- 使用readline模块如何实现Node.js的输入输出?
- Node.js如何处理健壮性
- node.js之基本http处理模块
- Node.js的模块机制
- node.js的模块管理
- Node.js 的 http 模块
- Node.js的模块机制
- Node.js 模块的应用
- Node.js的formidable模块
- Node.js的process模块
- 卸载应用程序
- TCP/IP 之传输层
- 数据拷贝过程中U盘异常拔出
- ubuntu小型web服务器:apache2+svn+php+tomcat+mysql+备份恢复
- 插入排序
- Node.js是如何处理模块的
- 观察者模式。简单demo
- Basic Theory of Physically-Based Rendering
- Oracle-18-select语句初步&SQL中用算术表达式&别名的使用&连接运算符%distinct&where子句
- sql SELECT 增加行号
- 学习笔记(一) mysql + kbengine-0.8.2+U3D_demo详细搭建过程个人记录
- JSTL标签详解
- shell--循环语句
- Activity 跳转 Fragment