NODE编程(一)--Node功能的组织和重用
Node开发面对的两个问题:
1、如何组织代码
2、如何进行异步编程。
一、Node功能的组织和重用
Node模块允许你从被引入文件中选择要暴露给程序的函数和变量。如果模块返回的函数或变量不止一个,那它可以通过设定exports对象的属性来指明他们。但如果模块只返回一个函数或变量,则可以设定module.exports属性。
1、创建模块
模块即可能是一个文件,也可能是包含一个或多个文件的目录。如果模块是个目录,Node通常会在这个目录下找一个叫index.js的文件作为模块的入口。
典型的模块是包含exports对象属性定义的文件,这些属性可以是热议类型的数据。比如字符串、对象和函数。
例:定义一个Node.
var canadianDollar = 0.91;
function roundTwoDecimals(amount){
return Math.round(amount *100) / 100;
}
exports.canadianToUs = function(cannadian){ //canaduanToUs函数设置在exports模块中,所以引入这个模块的代码可以使用它
return roundTwoDecimals(canadian * canadianDollar);
};
exports.USToCanadian = function(us){ //USToCanadian也设定在exports中
return roundTwoDecimals(us / canadianDollar);
};
使用这个模块要用到Node的require函数,该函数以你要使用的模块路径为参数,Node以同步的方式寻找他,定位到这个模块并加载文件中的内容。
2、引入一个模块
var currency = require('./currency'); //路径./表示模块跟程序脚本放在同一个目录下
console.log('50 Canadian dollars equals this amount of Us dollars:');
console.log(currency.canadianToUs(50)); //使用currency模块中canadianToUS函数 console.log('30 US dollars equals this amount of Canadian dollars :');
console.log(currency.USToCanadian(50)); //使用currency模块中USToCanadian函数
3、用node_modules重用模块
Node中有一个独特的模块引入机制,使用node_modules目录,可以不必只奥模块在文件系统中的具体位置。
4、尽管Node模块系统的本质简单直接,但是还要有两点注意。
第一、如果模块是目录,在模块目录中定义模块的文件必须被命令index.js。除非你在这个目录下一个叫package.json的文件里特别指明。
第二、Node能把模块作为对象缓存起来,如果程序重的两个文件引入了相同的模块,第一个文件会吧模块返回的数据存到程序的内存中,这样第二个文件就不用再去访问和计算模块的源文件了。实际上第二引入有机会修改缓存的数据。
NODE编程(一)--Node功能的组织和重用的更多相关文章
- 一起来学node.js吧 node school简介
node.js这几年火爆的简直丧心病狂,去lagou.com查查node.js的职位,那叫一个多. 要说火爆到什么程度,竟然有一个网站专门去教大家学习node.js, Node School. 进去逛 ...
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- node基础篇一:node介绍、node http、node event 课堂(持续)
最近工作一直很忙,没时间更新,谅解,这次准备更新一次node教程,本课堂将持续更新,每周坚持更新一到两章,希望对大家有一些小帮助吧: 一.首先什么是node? 1/Node.js 是一个基于 Chro ...
- elasticsearch节点(角色)类型解释node.master和node.data
在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储 ...
- elasticsearch负载均衡节点——客户端节点 node.master: false node.data: false 其他配置和master 数据节点一样
elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: false node. ...
- 初识Node.js之Node与java作为后台服务器的对比
> 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 
作者(Alex Rodriguez, Alessandro Laio)提出了一种很简洁优美的聚类算法, 可以识别各种形状的类簇, 并且其超参数很容易确定. 算法思想 该算法的假设是类簇的中心由一些局部 ...
- javascript --学习闭包,自由变量
闭包 下面是百度百科的解释: 闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量). 也就是说一个代码块 ...
- assert函数(python)
assert语句: 用以检查某一条件是否为True,若该条件为False则会给出一个AssertionError. 用法: assert type(x)=int and x>=0 如果不满足后面 ...