NodeJs——(4)和模块
来源:互联网 发布:java 短链接生成器 编辑:程序博客网 时间:2024/04/29 11:20
(15)模块
当我们制作一个模块时(具体制作方法见前面),我们可能会写一个构造函数(因为在浏览器写构造函数时我们经常会这么做)。
如代码:
function sayHello() { this.say = function () { console.log('hello'); }}exports.Hello = sayHello;
在这里,我们有一个构造函数sayHello,函数里有一个方法say,输出hello。
然后导出的是sayHello这个构造函数。我们在另外一个文件中调用它。
代码这么写:
var hello = require('./test').Hello; //调用刚才写的那个模块var m = new hello();m.say();
第一行表示我们调用刚才写的那个模块。
注意,这个时候和之前不同(之前是直接require模块即可),这里需要添加一个Hello。原因在于require表示导入的是一个整体(即有多个exports导出的方法),这里我们只需要其中的Hello方法(即对应原模块中的sayHello这个构造函数);
当然,也可以写为require('./test'),在下面的代码,把hello改为hello.Hello即可。
第二行代码表示生成一个这个构造函数的实例(还记得js里如何调用构造函数么?构造函数是不能直接调用其方法的);
第三行代码表示调用这个实例的say方法(即模块中的this.say=的那个函数);
这个流程是:
请求模块——》生成函数的实例——》调用函数的方法
我们也可以在导出的时候,用另一种方法:
module.exports = sayHello;
然后调用这个模块
var hello = require('./test'); //调用刚才导入的那个文件m = new hello();m.say();
这个时候hello就是这个函数,然后生成一个实例,调用其方法。
但我觉得有个潜在问题,这个模块里只能有这一个函数(不是很确定)。我验证结果如下:
修改之前的模块:
function sayHello() { this.say = function () { console.log('hello'); }}function say() { console.log("say");}module.exports = sayHello;exports.say = say;
调用其的模块:
var hello = require('./test'); //调用刚才导入的那个文件console.log(hello.say)
显示是undefined,而正常情况下(删除module.exports = sayHello;这一行)应该显示:
经过查询,这种用法的作用在于,假如我们只想将一个对象封装到模块中,就这么用。
另外,不可以直接对exports进行赋值以替代(module.exports这种用法)。
按照说明,这个变量会在模块执行结束后被释放,但module.exports不会。
- NodeJs——(4)和模块
- Nodejs笔记(2)——模块
- NodeJs——(5)与 events 事件模块
- NodeJS基础(二)——fs文件模块
- 初窥nodejs(三) ——自定义模块
- nodeJS入门例子一—模块(Modules)
- nodeJS入门例子一—模块(Modules)
- nodejs之supervisor模块——提高nodejs调试效率
- 深入浅出NodeJS——模块机制
- 【学习】nodeJS工具模块——util
- nodejs——网络编程模块
- nodejs开发——http模块
- nodejs开发——fs模块
- 学习NodeJs一讲——模块
- nodeJS基础——JavaScript模块开发
- nodeJS入门——node介绍&模块
- (4)nodejs学习---自定义模块
- nodejs模块(1)
- Qt中利用定时器QTimer准实时显示当前日期和时间
- Android 自定义View引用xml布局
- android ,广播接受者。调用服务内部方法
- python的with...as...用法
- CTEX - 在线文档 - TeX/LaTeX 常用宏包
- NodeJs——(4)和模块
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- flask-web开发扩展
- 重大人生启示录
- vim 同时打开多个文件(复制内容)
- URL编码以及GET和POST提交乱码解决方案
- 矩阵求导公式总结
- 结合Apache和Tomcat实现集群和负载均衡
- 树链剖分 模板+HDU 3966 + SPOJ 375 【树剖入门】