位置: 编程技术 - 正文

Node.js开发者必须了解的4个JS要点(node.js开发指南)

编辑:rootadmin

推荐整理分享Node.js开发者必须了解的4个JS要点(node.js开发指南),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js 开发,node.js开发实战详解,node.js开发语言,node.js 开发工具,nodejs开发gui,node.js 开发,node.js 开发工具,node.js 开发工具,内容如对您有帮助,希望把文章链接给更多的朋友!

本文为开发者总结了4个Node.js要点。

1. 非阻塞(Non-blocking)或异步I/O

由于Node.js一个服务器端框架,所以它主要工作之一是处理浏览器请求。在传统的I/O系统中,每个请求的发出都是在上一请求到达之后才发出的。所以这被称为阻塞(blocking)I/O。服务器会阻挡其它的请求以处理当前请求,从而导致浏览器等待。

Node.js不以这种方式来进行I/O处理。如果一个请求需要长时间处理,Node.js会把该请求发送给一个事件循环(event loop),然后继续处理在调用堆栈(call stack)中的下一请求。当延后请求处理完毕时,它会告知Node.js同时浏览器会做出响应反馈。

以下使用一个事例来说明。

Blocking I/O

在这个餐馆例子中,服务员接收了菜单指令,等待饭菜处理,然后在饭菜处理完成后把饭菜端到桌子上。在服务员等候饭菜处理期间,他会拒绝其它客人的菜单指令。

Non-blocking I/O

而在非阻塞模式下,服务员会告知厨师他接受到的菜单指令,然后去接收下一桌的指令。当第一桌饭菜处理完毕时,他会为那桌客人上菜,然后继续接收其它客人的指令。这样一来服务员不会由于阻塞指令而造成时间浪费。

2. 原型(Prototype)

原型在JS中是一个复杂的概念。在典型继承机制语言如Java或C++中,为了实现代码复用,你必须先创建一个类然后透过它来生成对象或透过类扩展来生成对象。但是在JS中没有类似的类概念。在JS中创建一个对象后,你需要透过它来扩展对象或创建新对象。这就叫做原型继承(prototypal inheritence)。

每个JS对象都连接着一个原型对象并对并继承该对象的属性。每个对象与预定义JS的Object.prototype相联系。如果你透过obj.propName或obj[‘propName'>方式来查找对象属性但查找失败时,这时可尝试通过obj.hasOwnProperty(‘propName')的方式进行查找,JS运行时会在在原型对象中查找属性。如果属性不存在于原型链中,那么将返回undefined值。

让我们用以下例子来进行说明:

Node.js开发者必须了解的4个JS要点(node.js开发指南)

当你创建了一个新对象,你必须选定一个以原型为基础的对象。在这里,我们为对象函数添加了一个create方法。create方法创建了一个以其它对象为原型的对象,并作为参数传入。

当我们变更新的对象时,它的原型是保持不变的。但是,当我们改动了原型对象,该变更会影响所有基于该原型的对象。

3. 组件(Modules)

如果你曾在Java中使用过包,那么Node.js的组件与之类似。如果没有,也不用担心;组件其实是简单的JS文件,用于实现特定的功能。组件模式的意义是让你工作得更加轻松。要使用组件,你必须像在JAVA中导入包一样进行JS文件导入。Node.js中有两种组件

核心组件(Core Modules)- 核心组件是结合Node.js库被预编译的。其目的是把程序员经常使用的功能开放出来,避免重复劳动。常见的核心组件有HTTP, URL, EVENTS, FILE SYSTEM等等。

用户自定义组件(UserDefined Modules)- 用户自定义组件是提供给用户使用以实现具体功能的组件。当核心组件不足以满足程序员需要的时候,自定义组件就可派上用场了。

组件是通过require函数被抽取的。如果这是一个核心组件,那么参数就是组件名。如果这是一个用户自定义组件,那么参数就是其在文件系统中的组件路径。例如:

4. 回调(Callbacks)

在JS中,函数是第一类对象。也就是说你可以像对常规对象那样对函数进行所有操作。例如指派函数到一个变量,把这些作为参数传给方法,把它们声明为对象的属性,甚至是把它们从函数里返回。

回调在JS中是异步函数,可以作为参数传递给其它函数或从其它函数里执行或返回而后再执行。这是回调的基本概念。

当我们把一个回调函数作为参数传递给另外的函数时,我们传递的仅仅是函数的定义;换言之,我们不会知道回调函数的执行时间。这完全依赖于回调函数机制。它会在稍后某个时间点进行回调调用。这是Node.js的非阻塞或异步行为的基本概念,可用下例进行说明:

这是一个最简单的调用。我们把一个匿名函数作为参数进行传递,作用是为setTimeout函数进行控制台的输出记录登记。因为这仅仅是个函数定义,我们不知道函数何时会被执行。这取决于setTimeout函数的second参数,即2S后。

首先,second记录语句记录了对控制台的输出,2S后,在回调函数中的记录语句记录了输出的内容。

写在最后

以上4点对Node.js开发者来说是要彻底理解和掌握的,建议多动手来好好体会这4个要点的含义。

nodejs 中模拟实现 emmiter 自定义事件 nodejs中模拟实现emmiter自定义事件!DOCTYPEhtmlhtmlheadmetacharset="UTF-8"title/titlescriptfunctionEmitter(){this.events={};//存放事件的地方}Emitter.prototype.on=function(type,cb){varev

你所未知的3种Node.js代码优化方式 Node.js程序的运行可能会受CPU或输入输出操作的限制而十分缓慢。从CPU角度看,程序运行缓慢的典型原因之一就是未经优化的「热点路径」(一段经常被

Node.js编写组件的三种实现方式 首先介绍使用v8API跟使用swig框架的不同:(1)v8API方式为官方提供的原生方法,功能强大而完善,缺点是需要熟悉v8API,编写起来比较麻烦,是js强相关

标签: node.js开发指南

本文链接地址:https://www.jiuchutong.com/biancheng/370676.html 转载请保留说明!

上一篇:nodejs修复ipa处理过的png图片(nodejs不再维护)

下一篇:nodejs 中模拟实现 emmiter 自定义事件(nodejs模拟点击)

  • 接受固定资产投资的增值税计入哪里
  • 所得税结转本年利润
  • 普票税率错了要收回作废吗
  • 税控盘减免税款月末如何结转
  • 小饭店税务登记证办理流程
  • 买车要交哪些税收
  • 税务制服的肩章是什么
  • 其他应付款不用付了会计分录
  • 一般纳税人有免征增值税吗
  • 核定征收小规模跟法人有往来账
  • 支票盖财务章盖在哪里
  • 企业所得税申报表A类
  • 以前年度成本多入了怎样调整
  • 金税盘维护费申报
  • 固定资产在现金流量表中的体现
  • 交车辆购置税需要开车去吗
  • 房产契税发票丢了可以补开吗
  • 固定资产处置净损益计入什么科目
  • 支票取现的用途
  • 网吧卖出那些零食怎么卖
  • 购买股票如果公司亏损
  • 三栏式明细账适用于哪些账簿
  • 小汽车残值率多少合适
  • 哪些搬迁情形属于“政策性搬迁”?所得税怎么处理?
  • 商标是按年交费的吗
  • 限制性股票股利会计处理
  • 生产成本属于什么会计要素
  • 领用库存商品的消费税
  • 货物劳务和应税收入区别
  • 公司解散实收资本退还怎么写
  • 电子汇款收入是什么意思
  • 补领以前月份的工资如何计算个人所得税?
  • 酒店兼营行为的税务处理?
  • 超市收代金券如何处理
  • 我开了一个物流公司,有人要开发票怎么办
  • unc方式
  • cannot read properties null
  • 离职补贴个税计算公式
  • 怎么安装vue环境
  • 企业所得税季度申报表A类
  • WINDOWS10系统怎样给电脑分区
  • 让我用用你的计算机
  • php文件上传操作流程图
  • 发票去税务局认证了就可以直接抵扣了吗
  • 高新企业研发项目是否需要立项审批?
  • 小规模纳税人利润超过300万
  • python 邮件服务
  • 企业低值易耗品的摊销方法有
  • 坏账准备抵消期初未分配利润
  • 月度合并报表与年度合并区别
  • 为什么费用报销先由主管部门审批在由财务审核
  • 大公司要求小规模公司交税
  • 职工薪酬属于收益性支出
  • 用PostgreSQL数据库做地理位置app应用
  • 固定资产处置的净收入计入
  • 其他应付款是什么类账户
  • 不征税收入怎么申报增值税
  • 发票可否盖财务章
  • 保险收入如何做账
  • 政府补贴的装修费是免税的吗
  • 业务招待费的进项能抵扣吗
  • 小微企业记账必须有会计证吗
  • 发票隔年还能做账吗
  • win7提示oxcooooo98
  • CentOS6 32/64位安装Adobe Flash Player组件的方法
  • ghoststarttrayapp.exe是什么进程 有什么作用 ghoststarttrayapp进程查询
  • centos挂载lvm硬盘
  • win10预览体验三个选项
  • Tree、Unformat、Vsafe命令的区别与使用说明
  • php autoload
  • 用持久的喷剂有副作用吗
  • 四川增值税发票真伪查询
  • 河南新农合缴费记录可以在哪里查?
  • 成都税务局网上办事大厅
  • 税务干部转正工作总结
  • 陕西国家电子税务局2.0
  • 武汉 税务局
  • 沈阳车辆税务管理局电话
  • 广东政务平台网上办事大厅
  • 2016年小微企业所得税优惠政策文号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设