资讯专栏INFORMATION COLUMN

node js模块机制与异步处理

curlyCheng / 1467人阅读

摘要:异步编程高介函数高介函数是将函数作为参数,或者作为返回值的函数。异步编程解决方案事件发布订阅模式事件监听器模式是广泛应用于异步编程,是回调函数的时间化,又称发布订阅模式。

1.模块机制

commonJS模块机制出现的目的是为了构建js在web服务器,桌面程序,浏览器等方面形成生态系统。而node js就是这种规范的一种实现,用requird来引入其他文件,同样,npm也遵循了commonJS定义的包规范,从而形成了一套完整的生态系统。

模块定义并导出
例如有如下一个名为circle.js的文件

exports.getName = function(name) {
    return name
}

模块载入

var circle = require("/circle.js")
console.log(circle.getName("WPY"))

模块加载策略
node模块主要可以分为两类:

原生模块和自定义模块,所谓原生模块就是node自己定义的模块,例如HTTP,fs模块,此类模块加载速度最快。
还有一类是自定义模块,包括包模块,和我们自己定义的文件。无论是原生模块还是自定义模块在第一次加载后都会被node缓存,所以第二次请求时是不会有开销的。
原生模块加载:
require()方法在解析文件名之后,最优先在模块缓存中查找,然后在node的原生模块中查找
从文件加载
module.path 对于每一个被加载的文件模块,在创建这个模块对象的时候都会有一个paths属性。其路径指向引入模块的路径。
在请求绝对路径模块时,不会去遍历node_module加载速度最快。

异步编程

高介函数
高介函数是将函数作为参数,或者作为返回值的函数。

function foo(X) {
    return function() {
        return x
    }
}

NODE带来的最大特性莫过于机遇事件驱动的非阻塞IO。

异步编程解决方案

1.事件发布/订阅模式

事件监听器模式是广泛应用于异步编程,是回调函数的时间化,又称发布/订阅模式。
//订阅

emitter.on("event1", function(message){
    console.log(message)
})

//发布

emitter.emit("event1", "I am message")
2.Promise模式

promise对象具有三种状态,未完成态,完成态,失败态。
promise对象要具有then方法,对于then 方法有以下几点要求
1.接受完成态,错误态的回调方法。
2.只接受function,其余对象将被忽略
3.继续返回promise对象,以实现链式调用

3.流程控制库

next()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78879.html

相关文章

  • Node.js设计模式》Node.js基本模式

    摘要:回调函数是在异步操作完成后传播其操作结果的函数,总是用来替代同步操作的返回指令。下面的图片显示了中事件循环过程当异步操作完成时,执行权就会交给这个异步操作开始的地方,即回调函数。 本系列文章为《Node.js Design Patterns Second Edition》的原文翻译和读书笔记,在GitHub连载更新,同步翻译版链接。 欢迎关注我的专栏,之后的博文将在专栏同步: Enc...

    Seay 评论0 收藏0
  • Node_深入浅出Node

    摘要:简介项目命名为就是一个服务器单纯开发一个服务器的想法,变成构建网络应用的一个基本框架发展为一个强制不共享任何资源的单线程,单进程系统。单线程弱点无法利用多核错误会引起整个应用退出,应用的健壮性大量计算占用导致无法继续调用异步。 NodeJs简介 Ryan Dahl项目命名为:web.js 就是一个Web服务器.单纯开发一个Web服务器的想法,变成构建网络应用的一个基本框架.Node发展...

    shinezejian 评论0 收藏0
  • Node_模块

    摘要:当某个执行完毕时,将以时间的形式通知执行操作的线程,线程执行了这个事件的回调函数。为了处理异步,线程必须有事件循环,不断的检查是否有未处理的时间。这种处理机制,称为事件环机制。方面使用第三方模块。 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是Ryan Dahl,把V8搬到服务器,用于做服务器的软件。Node是一个专注于实现高性能Web服务器优化的专家,在遇到V8而诞...

    zero 评论0 收藏0
  • node核心特性理解

    摘要:概述本文主要介绍了我对的一些核心特性的理解,包括架构特点机制核心模块与简单应用。在此期间,主线程继续执行其他任务。延续了浏览器端单线程,只用一个主线程执行,不断循环遍历事件队列,执行事件。 原文地址在我的博客,转载请注明来源,谢谢! node是在前端领域经常看到的词。node对于前端的重要性已经不言而喻,掌握node也是作为合格的前端工程师一项基本功了。知道node、知道后端的一些东西...

    huangjinnan 评论0 收藏0
  • Node.js设计模式》高级异步准则

    摘要:这使我们的知道什么时候原始模块被初始化,在初始化后执行预初始化队列的操作,之后清空预初始化队列,再调用作为参数的回调函数,以下为具体步骤把赋值给,表示预初始化已经完成了。 本系列文章为《Node.js Design Patterns Second Edition》的原文翻译和读书笔记,在GitHub连载更新,同步翻译版链接。 欢迎关注我的专栏,之后的博文将在专栏同步: Encount...

    wfc_666 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<