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. 分布式应用框架Akka快速入门

    转自:http://blog.csdn.net/jmppok/article/details/17264495 本文结合网上一些资料,对他们进行整理,摘选和翻译而成,对Akka进行简要的说明.引用资料 ...

  2. PyBayes的安装和使用

    PyBayes 主页 文档 PyBayes is an object-oriented Python library for recursive Bayesian estimation (Bayesi ...

  3. SSH与SSL

    1. SSL SSH 即Secure Shell,它主要由三部分组成: 第一部分:连接协议 [SSH-CONNECT] 将多个加密隧道分成逻辑通道.它运行在用户认证协议上.它提供了交互式登录话路.远程 ...

  4. unix 时间

    from_unixtime()是MySQL里的时间函数 mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' ) ->20071120 mysq ...

  5. homework-08-作业2

    1. 了解Lambda的用法 计算“Hello World!”中 a.字母‘e’的个数 b. 字母‘l’的个数 代码: void calcEL() { char s[100] = "Hell ...

  6. svn备份与恢复

    公司把SVN服务器从windows迁移到linux,其主要步骤记录如下. windows上备份 "C:\Program Files\VisualSVN Server\bin\svnadmin ...

  7. AutoCAD.NET二次开发:创建自定义菜单(AcCui)

    从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引 ...

  8. [iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储

    A.需求 1.搭建一个"私人通讯录"Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改)   这个代码 ...

  9. UVA 11134 - Fabled Rooks(贪心+优先队列)

    We would like to place  n  rooks, 1 ≤  n  ≤ 5000, on a  n×n  board subject to the following restrict ...

  10. Check Box 用法

    void CMyDlg::OnInitDialog() //Check1 初始化为选中状态 void CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); ...