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作为后台服务器的对比
> 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 判断点在凸多边形内)
Saint John Festival 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/J Description Porto's ...
- JQuery中对Select的option项的添加、删除、取值
jQuery获取Select选择的Text和Value: $("#select_id").change(function(){//code...}); //为Select添加事件, ...
- 转载 C#中静态类和非静态类比较
转载原地址: http://www.cnblogs.com/NothingIsImpossible/archive/2010/07/28/1786706.html C#静态方法与非静态方法的区别不仅仅 ...
- HDU 3308 LCIS (线段树区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题目很好懂,就是单点更新,然后求区间的最长上升子序列. 线段树区间合并问题,注意合并的条件是a[ ...
- 使用 DllImport 属性
本主题说明 DllImport 属性的常见用法.第一节讨论使用 DllImport 从托管应用程序调用本机代码的优点.第二节集中讨论封送处理和 DllImport 属性的各个方面. 从托管应用程序调用 ...
- Linux命令行访问网页
找到个好资料,备份行: http://hi.baidu.com/oyvfhp/blog/item/3aa5ced5b40563d351da4bb0.html CURL --- 命令行浏览器 这东西 ...
- GMT 绘制台站分布图
set ps=test.psset J=M4i set R=73/135.5/10/54rem gmt gmtset FONT_ANNOT_PRIMARY 8p FONT_TITLE 8p gmt ...
- java中的定时器
所有类型的 Java 应用程序一般都需要计划重复执行的任务.企业应用程序需要计划每日的日志或者晚间批处理过程.一个 J2SE或者 J2ME 日历应用程序需要根据用户的约定计划闹铃时间.不过,标准的调度 ...