Node.js中的异步/等待打开了一系列强大的设计模式。现在可以使用基本语句和循环来完成过去采用复杂库或复杂承诺链接的任务。我已经用co编写了这些设计模式,但异步/等待使得这些模式可以在vanilla Node.js中访问,不需要外部库。iffor
上一节讲解了迭代器的使用,如果对迭代器还不够了解的可以在回顾下《从理解到实现轻松掌握 ES6 中的迭代器》,目前在 JavaScript 中还没有被默认设定 [Symbol.asyncIterator] 属性的内建对象,但是在 Node.js 中已有部分核心模块(Stream、Events)和一些第三方 NPM 模块(mongodb)已支持 Symbol.asyncIterator 属性。本文也是探索异步迭代器在 Node.js 中的都有哪些使用场景,欢迎留言探讨。
这是一个系列文章,你可以关注公众号「五月君」订阅话题《JavaScript 异步编程指南》获取最新信息。
Node.js的API主要有两种风格,同步和异步,如何区分呢,大部分异步API一般都有一个回调函数 callback 作为其参数,而大部分同步API则不会,例如:
在所有的这些情况下,我们作为程序员都会产生错误,或者让编程引擎为我们创建一些错误。
本文最初发布于 valentinog.com 网站,经原作者授权由 InfoQ 中文站翻译并分享。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它是一个开源和跨平台的服务端应用程序。任何人都可以编写 JavaScript 代码来开发 Node.js 应用程序。它可以运行于 Microsoft Windows、Linux、 或 OS 系统。
随着 ES6 标准的出现,给我们带来了一个新的异步解决方案 Promise。目前绝大多数 JavaScript 新增的异步 API 无论是在浏览器端还是 Node.js 服务端都是基于 Promise 构建的,以前基于 Callback 形式的也有解决方案将其转为 Promise。
由于Node和Deno的一些差异,一个库要想同时支持Node和Deno是需要一些改造的
本文使用的编程语言是 Node.js,连接 MongoDB 的模块用的是mongoose。但是,本文介绍的方法适用于其他编程语言及其对应的 MongoDB 模块。
许多人都有这样一种映像,NodeJS比较快; 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务; 它比较适合对并发要求比较高,而且简单的业务场景。 在Express的作者的TJ Holowaychuk的 告别Node.js一文中列举了以下罪状: Farewell NodeJS (TJ Holowaychuk) • you may get duplicate callbacks • you may not get a callback at all (lost in li
Node.js 10已经进入LTS时代!其应用场景已经从脚手架、辅助前端开发(如SSR、PWA等)扩展到API中间层、代理层及专业的后端开发。Node.js在企业Web开发领域也日渐成熟,无论是在API中间层,还是在微服务中都得到了非常好的落地。本书将通过Web开发框架Koa2,引领你进入Node.js的主战场! 本书系统讲解了在实战项目中使用Koa框架开发Web应用的流程和步骤。第1章介绍Node.js的安装、开发工具及调试。第2章和第3章介绍搭建Koa实战项目的雏形。第4章详细介绍HTTP基础知识及其实战应用。第5章介绍MVC、模板引擎和文件上传等实用功能。第6~8章介绍数据库、单元测试及项目的优化与部署。第9~13章介绍从零开始搭建时下火爆的微信小程序前端及后台管理应用的全部过程,以及最终的服务器部署,包括HTTPS、Nginx。 本书示例丰富、侧重实战,以完整的实战项目贯穿全部章节,并提供书中涉及的所有源码及部分章节的配套视频教程,将是前端开发人员立足新领域和后端开发人员了解Node.js并使用Koa2开发Web应用的得力助手。
相对简单抛出异常,我们可以使用 Promise.reject 和Promise.resolve:
Node.js 是一个 JS 的服务端运行环境,简单的来说,它是在 JS 语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。
本教程手把手带领大家搭建一套通过 React + Node.js + Mongodb 上传文件的后台系统,只要你跟随本教程一步步走,一定能很好的理解整个前后端上传文件的代码逻辑。前端我们使用 Reactjs + Axios 来搭建前端上传文件应用,后端我们使用 Node.js + Express + Multer + Mongodb 来搭建后端上传文件处理应用。
NodeJs事件驱动和非阻塞机制详解 NodeJs强调错误优先 因为事件的操作大多数都是异步的方式,无法通过try catch捕获异常 采用错误优先的回调函数 ---- NodeJs基本介绍(菜鸟教程) Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。 Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个while(tr
临阵磨枪,不快也光。对于成功的编程面试来说,准备和知识面一样重要。准备使你有信心参加面试,而不用担心莫名的紧张情绪。如果第一次参加编程面试,这一点尤其重要。
以点菜吃饭为例子:去饭堂点菜吃饭需要排队等待,在这个过程中,阿姨每次只能接待一个人,“点菜-阿姨抖勺装菜-把饭菜给到你”这个过程中阿姨并不能接收其他人的点菜,这个就是阻塞 I/O;而去餐馆点菜吃饭,去到餐馆就可以跟服务员你要吃番茄炒蛋,服务员记下来之后交给后厨,这时候来了另一桌人就把服务员招呼过去说想吃小龙虾,也就是说,在把菜给你上上来之前服务员接收了其他人的点菜,那这个就是非阻塞型 I/O。
在极客教育出版了一个视频是关于《Node.js 异常处理-健壮性》,本文章主要是从内容上介绍如何来处理Node.js异常问题。如果希望学习可前往极客学院:http://www.jikexueyuan.com/course/2373.html 本文章的关键词 - 进程退出 - 内存泄漏 - domain安全保护 ---- Node.js 异常的危害 很多初学的同学很少会关注Node.js的服务安全问题,而当服务器在生成环境遇到此类问题时,又会显得速手无策,因此在学习Node.js的初期了解其
在几年前,回调是 JavaScript 中实现执行异步代码的唯一方法。回调本身几乎没有什么问题,最值得注意的是“回调地狱”。
单线程意味着,JavaScript 在执行代码的任何时候,都只有一个主线程来处理所有的任务。非阻塞则是当代码需要进行一项异步任务时,主线程会挂起这个任务,然后在异步任务返回结果时再根据一定规则去执行相应回调。
在 Node.js 中,Async hooks 是一个非常有意思且强大的模块(虽然性能上存在一些问题),在 APM 中,我们可以借助这个模块做很多事情。本文介绍两个有趣的用法。
事件循环时典型的生产者/消费者模型,异步io,网络请求是生产者,源源不断等为node提供不同的事件,这次事件被传递导对应的观察者那里,事件循环则从观察者那里取出事件并处理
process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块:
本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员。遵循本文提供的这些建议,能够让你更好的进行日常的开发工作。 Statement 原文地址:https://blog.risingstack.com/how-to-become-a-better-node-js-developer-in-2016/ 译者:景庄,Web开发者,主要关注JavaScript、Node.js、React、Docker等。 使用ES2015 在201
最近用团队的账号发了一篇文章专有钉钉前端面试指南[1],初衷是希望给大家传递一些可能没有接触过的知识,其中某些知识可能也超出了前端的范畴,本质是希望给大家提供一些扫盲的思路。但是文章的评论使我意识到大家对于这个文章的抵触心情非常大。我有很认真的看大家的每一条评论,然后可能过多的解释也没有什么用。我自己也反思可能文章就不应该以面试为标题进行传播,因为面试的话它就意味着跟职位以及工作息息相关,更何况我还是以团队的名义去发这个文章。在这里,先跟这些读完文章体验不是很好的同学道个歉。
自 Node.js 面世以来,它获得了大量的赞美和批判。这种争论会一直持续,短时间内都不会结束。而在这些争论中,我们常常会忽略掉所有语言和平台都是基于一些核心问题来批判的,就是我们怎么去使用这些平台。无论使用 Node.js 编写可靠的代码有多难,而编写高并发代码又是多么的简单,这个平台终究是有那么一段时间了,而且被用来创建了大量的健壮而又复杂的 web 服务。这些 web 服务不仅拥有良好的扩展性,而且通过在互联网上持续的时间证明了它们的健壮性。
Node.js 是一个免费的跨平台 JavaScript 运行时环境,尽管它本质上是单线程的,但是可以在后台使用多个线程来执行异步代码。
在JavaScript中调试异步代码有时感觉就像在雷区中导航。 你不知道console.logs会在何时何地打印出来,你也不知道你的代码是如何执行的。
Node.js 自发布以来,已成为业界重要破局者之一。Uber、Medium、PayPal 和沃尔玛等大型企业,纷纷将技术栈转向 Node.js。Node.js 支持开发功能强大的应用,例如实时追踪 App、视频 / 文本聊天引擎、社交媒体 App 等,当前已成为开发人员热衷的一项技能。本文作者基于自身实施经历,给出一张 Node.js 学习路线图。建议开发人员考虑深入掌握 Node.js 之前,必须明确自己构建的目标,否则容易半途而废。目标导向有助于在学习中聚焦关键技能,而非纠结于是否值得去学习。
作者 | Mohit 译者 | 盖磊 策划 | 田晓旭 Node.js 自发布以来,已成为业界重要破局者之一。Uber、Medium、PayPal 和沃尔玛等大型企业,纷纷将技术栈转向 Node.js。Node.js 支持开发功能强大的应用,例如实时追踪 App、视频 / 文本聊天引擎、社交媒体 App 等,当前已成为开发人员热衷的一项技能。本文作者基于自身实施经历,给出一张 Node.js 学习路线图。建议开发人员考虑深入掌握 Node.js 之前,必须明确自己构建的目标,否则容易半途而废。目标导向有助于
Redis是一个高性能的内存数据库,用作数据结构存储。Redis支持hash,string,lists和其他复杂的数据结构,并且能保持很高的性能。
在网页开发领域,Node.js 被视为理想的运行环境。Node.js 是专为运行 JavaScript 编写的代码而设计的,而 JavaScript 是世界上最流行的编程语言之一。Node.js 使广大开发者社区能够构建服务器端应用程序。
Node.js 是一种后起的优秀服务器编程语言,它用来构建和运行 Web 应用,这和 ASP.NET,Ruby on Rails 或 Spring框架做的工作是类似的。它使用 JavaScript 作为主要的开发语言,有一个自带的轻量级 Web 服务器,还有 Node包管理(NPM)的大量插件,你就可以按照你自己的需求来塑造 Web 应用,像添加 MVC 特性,加入 Restful 服务,OAuth 或 SSL安全性等等。但是,是什么原因让 Node.js 突然间如此流行呢?听起来像是有了一种新的 Web 开发技术,是这样吗?我们来汇总一下原因:
简单来说,async函数是 promise 的 "语法糖"。它们允许我们使用更熟悉的语法来模拟同步执行,从而代替 promise 链式写法。
前言:本文根据最近做的一次分享整理而成,希望能帮忙大家深入理解Node.js的一些原理和实现。
大家都遵守同样的模块化规范写代码,降低了沟通程表,极大方便了各个模块之间的相互调用,利人利己。
今天为大家输出Node.js相关面试题和相关答案,温故而知新可以为师矣,一起加油加油加油!
本文内容主要分为两大部分,第一部分是 Node.js 的基础和架构,第二部分是 Node.js 核心模块的实现。
原文地址:All you need to know to really understand the Node.js Event Loop and its Metrics 原文作者:Daniel Khan Node.js 是一个基于事件的平台。这意味着在 Node 中发生的一切都是基于对事件的反应。通过 Node 的事件处理机制遍历一系列回调。 事件的回调,这一切都由一个名为 libuv 的库来处理,它提供了一种称为事件循环的机制。 这个事件循环可能是平台中最被误解的概念。当我们提及事件循环监测的主题时,我
Node.js是一项服务器技术,它用来构建和运行Web应用,这和ASP.NET,Ruby on Rails或Spring框架做的工作是类似的。它 使用JavaScript作为主要的开发语言,有一个自带的轻量级Web服务器,还有Node包管理(NPM)的大量插件,你就可以按照你自己的需求来塑 造Web应用,像添加MVC特性,加入Restful服务,OAuth或SSL安全性等等。 但是,是什么原因让Node.js突然间如此流行呢?听起来像是有了一种新的Web开发技术,是这样吗?我们来汇总一下原
在设计上,Node.js是单线程的。为了能让一个单线程处理许多并发的请求,你可以永远不要让线程等待阻塞,同步或长时间运行的操作。Node.js的一个显著特征是:它从上到下的设计和实现都是为了实现异步。这让它非常适合用于事件型程序。
虽然js是单线程的,但是事件循环会尽可能地将异步操作(offloading operations)托付给系统内核,让node能够执行非阻塞的I/O操作
开发中,有些开发者会积极寻求处理错误,力求减少开发时间,但也有些人完全忽略了错误的存在。正确处理错误不仅意味着能够轻松发现和纠正错误,而且还意味着能够为大型应用程序开发出稳健的代码库。
领取专属 10元无门槛券
手把手带您无忧上云