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功能的组织和重用的更多相关文章

  1. 一起来学node.js吧 node school简介

    node.js这几年火爆的简直丧心病狂,去lagou.com查查node.js的职位,那叫一个多. 要说火爆到什么程度,竟然有一个网站专门去教大家学习node.js, Node School. 进去逛 ...

  2. .NET程序员也学Node.js——初识Node.js

    清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...

  3. node基础篇一:node介绍、node http、node event 课堂(持续)

    最近工作一直很忙,没时间更新,谅解,这次准备更新一次node教程,本课堂将持续更新,每周坚持更新一到两章,希望对大家有一些小帮助吧: 一.首先什么是node? 1/Node.js 是一个基于 Chro ...

  4. elasticsearch节点(角色)类型解释node.master和node.data

    在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储 ...

  5. elasticsearch负载均衡节点——客户端节点 node.master: false node.data: false 其他配置和master 数据节点一样

    elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: false node. ...

  6. 初识Node.js之Node与java作为后台服务器的对比

    > 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. ![file](https://img2018.cnblogs.com/blog/830272/20 ...

  7. k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...

  8. k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是ip # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集群 ...

  9. 极简 Node.js 入门 - Node.js 是什么、性能有优势?

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

随机推荐

  1. Tkinter教程之Event篇(3)

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1823550 '''Tkinter教程之Event篇(3)''''''11.两个事件同时绑定到一 ...

  2. Hbase Basic Prerequisites

    Table 2. Java HBase Version   JDK 6      JDK 7       JDK 8 1.0 Not     Supported yes Running with JD ...

  3. 如何使用git创建远程仓库(供局域网多人使用)

    用git init(默认创建的是私人的仓库)创建的仓库,推送是不会成功的. 因此在git server端,我们要用 git --bare init --shared=group 来创建一个bare库, ...

  4. 发现UC/OS-III源码有一处不明白!会不会是BUG.高手过来看看!

    http://www.amobbs.com/archiver/tid-4939669.html ———————————————————————————————————————————————————— ...

  5. Spring InitializingBean and DisposableBean example

    In Spring, InitializingBean and DisposableBean are two marker interfaces, a useful way for Spring to ...

  6. HDU1518 Square

    #include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #de ...

  7. 数据库防sql注入

  8. mybatis generator配置文件

    <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration ...

  9. 负载均衡session共享问题

    负载均衡+session共享(memcached-session-manager实现) http://www.cnblogs.com/youzhibing/p/5094460.html http:// ...

  10. ALT(预警)

    1. Alert简介 Alert是一种Oracle系统中的一种机制,它可以监视系统数据库,在规定的情况下给规定用户一个通知,通知可以是邮件或者其他形式,在标注的系统和客户化系统中都是可以定义使用的 2 ...