Node学习入门篇(三):Node编程基础

标签: 异步编程 node
1人阅读 评论(0) 收藏 举报
分类:

Node的异步编程

  • 如何响应一次性事件
  • 如何处理重复性事件
  • 如何让异步逻辑顺序执行

Node功能的组织和重用

  • Node模块
    这里写图片描述

1. require

require加载模块时是同步的。

exports只是对module.exports的一个全局引用,最初被定义为一个可以添加属性的空对象,所以exports.myFunc只是module.exports.myFunc的简写,最终导出的是后者。

注意Node不允许重写exports,也即不能直接把变量赋值给exportsmodule.exports可以对外提供单个变量、函数或者对象。如果你创建了一个既有exports又有module.exports的模块,那它会返回module.exports,而exports会被忽略。

2. node_modules

要求模块在文件系统中使用相对路径存放,对于组织程序特定的代码很有帮助,但对于想要在程序间共享或跟其他人共享代码却用处不大。Node中有一个独特的模块引入机制,可以不必知道模块在文件系统中的具体位置。这个机制就是使用node_modules目录。

  • 模块查找
    这里写图片描述

用环境变量NODE_PATH可以改变Node模块的默认路径。如果用了它,NODE_PATH在Windows中应该设置为用分号分隔的目录列表,在其他操作系统中用冒号分隔

3. 模块是目录

如果模块是目录,在模块目录中定义模块的文件必须被命名为index.js,除非你在这个目录下一个叫package.json的文件里特别指明。要指定一个取代index.js的文件,package.json文件里必须有一个用JavaScript对象表示法(JSON)数据定义的对象,其中有一个名为main的键,指明模块目录内主文件的路径。

这里写图片描述

异步编程技术

  • 回调:回调通常用来定义一次性响应的逻辑

    • 回调是一个函数,它被当做参数传给异步函数,它描述了异步操作完成之后要做什么
    • 最好限制一下回调的嵌套层级
    • 减少由if/else引起的嵌套:尽早从函数中返回
    • Node中的大多数内置模块在使用回调时都会带两个参数:第一个是用来放可能会发生的错误的,第二个是放结果的。错误参数经常被缩写为er或err
  • 事件发射器:事件监听本质上也是一个回调,不同的是,它跟一个概念实体(事件)相关联。

    • 事件发射器会触发事件,并且在那些事件被触发时能处理它们
    • 事件发射器通常用来定义重复派发的异步逻辑
  • 闭包:用闭包控制程序的状态

    • Node的事件轮询会跟踪还没有完成的异步逻辑。只要有未完成的异步逻辑,Node进程就不会退出
    • 程序的变量可能会出现意想不到的变化
    • 用JavaScript闭包可以“冻结”外部变量到函数内部的本地变量

异步逻辑的顺序化

  • 流程控制:让一组异步任务顺序执行的概念被Node社区称为流程控制
    • 串行:需要一个接着一个做的任务叫做串行任务
    • 并行:任务彼此之间开始和结束的时间并不重要,但在后续逻辑执行之前它们应该全部做完
      这里写图片描述

1. 使用和实现串行化流程控制

  • 用回调让任务顺序执行
  • 用setTimeout模拟
    这里写图片描述
  • Nimble流程控制工具
    • require('nimble')

4. 使用和实现并行化流程控制

为了让异步任务并行执行,仍然是要把任务放到数组中,但任务的存放顺序无关紧要。每个任务都应该调用处理器函数增加已完成任务的计数值。当所有任务都完成后,处理器函数应该执行后续的逻辑。

查看评论

学习nodejs部分基础内容入门小结

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 n...
  • pukuimin1226
  • pukuimin1226
  • 2017-05-04 19:11:49
  • 1222

node学习笔记<入门级>

1.1. Node简介   1.2. 下载安装 https://nodejs.org/zh-cn/download/releases/   1.3. 模块机制   1...
  • itsoftchenfei
  • itsoftchenfei
  • 2017-09-12 10:22:26
  • 248

ASP.NET Spring.Net 入门1 简单入门示例

Spring.Net 简介 从http://www.springframework.net/download.html 下载spring.NET,解压后得到源码和编译好的dll 新建项目...
  • xundh
  • xundh
  • 2017-04-21 21:57:32
  • 533

windows下《七天学会NodeJS》学习笔记之一--NodeJS基础

什么是NodeJS。浏览器可以解析JS,NodeJS也可以解析JS,它就是一个JS的解析器。浏览器利用JS操作DOM,而NodeJS利用JS操作磁盘文件或搭建HTTP服务器。NodeJS的作者创造No...
  • fm2005
  • fm2005
  • 2014-11-21 14:44:17
  • 8013

Node.js开发指南.zip

  • 2012年12月24日 00:29
  • 5.73MB
  • 下载

[6]_先从前端说起 - Nodejs学习之基础(1)

[6]_先从前端说起 - Nodejs学习之基础(1)随着移动开发的火热,Nodejs的技术应用也特别的热门,先从前端开始了解,一则,容易从“表面现象”去懂应用是个什么样,同时也是了解一门新技术应用的...
  • hunkxia
  • hunkxia
  • 2015-06-12 00:29:38
  • 1481

Nodejs入门视频教程(共12课)

课程目录: 第一讲:nodejs基础配置基本信息 第二讲:实现注册 第三讲:实现登录 第四讲:重新设计用户模型(相当于表的概念) 第五讲:使用session保存登录状态 第六讲:查询用户信...
  • u013948187
  • u013948187
  • 2016-10-23 16:56:24
  • 1641

node.js学习一(node入门)

目录 关于 状态读者对象本书结构 JavaScript与Node.js JavaScript与你简短申明服务器端JavaScript“Hello World” ...
  • jingshui1234
  • jingshui1234
  • 2015-10-23 11:38:40
  • 3767

C链表之学生成绩管理系统

  • 2011年12月29日 22:19
  • 13KB
  • 下载

Node学习入门篇(五):Node数据存储

关系型数据库存储 NoSQL数据库存储 MySQL 1) 安装node-mysql模块 npm install mysql 2) 创建程序逻辑 ...
  • w_bu_neng_ku
  • w_bu_neng_ku
  • 2018-04-15 14:26:02
  • 0