作为开发人员,我们都致力于打造高效、健壮且易于理解、修改和扩展的代码库。通过采用最佳实践和探索先进技术,我们可以释放 NodeJS 的真正潜力并显着提高应用程序的质量。在这篇文章中,我们将重点介绍 NodeJS 的五种高级技术。所以,系好安全带,我们要开车了,准备好探索它们吧。
不要将中间件添加到每个路由,而是使用 use 方法将其添加到路由列表的顶部。这样,中间件下面定义的任何路由都会在到达各自的路由处理程序之前自动通过中间件。
作为开发人员,我们都致力于打造高效、健壮且易于理解、修改和扩展的代码库。 通过采用最佳实践和探索先进技术,我们可以释放 NodeJS 的真正潜力并显着提高应用程序的质量。 在这篇文章中,我们将重点介绍 NodeJS 的五种高级技术。 所以,系好安全带,我们要开车了,准备好探索它们吧。
你需要安装一些东西来创建、使用和测试 Express 中间件。首先需要 Node 和 NPM。为确保已经安装,可以运行:
一个良好的编码习惯必然离不开异常处理,本文将会介绍如何在koa框架下面如何抛出错误,并统一处理返回异常。
本文内容大部分来自 https://www.joyent.com/node-js/production/design/errors ,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文,如果有错误欢迎指出,谢谢! 很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 应该用哪种方式暴露错误?throw、callback(err, result)、Event Emitter或者其他方式? 如何假设函数的参数?是
本文作者:IMWeb yisbug 原文出处:IMWeb社区 未经同意,禁止转载 本文内容大部分来自 https://www.joyent.com/node-js/production/d
很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 1、应该用哪种方式暴露错误?throw、callback(err, result)、Event Emitter或者其他方式? 2、如何假设函数的参数?是否应该检测类型正确?非null,IP,QQ号码? 3、函数参数不符合预期该怎么处理? 4、应该如何区分不同类型的错误?例如Bad Request、 Service Unavailable 5、应该如何提供有用的错误信
本文内容大部分来自 https://www.joyent.com/node-js/production/design/errors ,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文,如果有错误欢迎指出,谢谢!
在 Node.js 中一个很重要的模块 Events(EventEmitter 事件触发器),也称为发布/订阅模式,为什么说它重要,因为在 Node.js 中绝大多数模块都依赖于此,例如 Net、HTTP、FS、Stream 等,除了这些系统模块比较知名的 Express、Koa 框架中也能看到 EventEmitter 的踪迹。
团队来了新的小伙伴,发现我们的团队代码规范中,要给 async await 添加 try...catch。他感觉很疑惑,假如有很多个(不集中),那不是要加很多个地方?那不是很不优雅?
前面一篇文章setTimeout和setImmediate到底谁先执行,本文让你彻底理解Event Loop详细讲解了浏览器和Node.js的异步API及其底层原理Event Loop。本文会讲一下不用原生API怎么达到异步的效果,也就是发布订阅模式。发布订阅模式在面试中也是高频考点,本文会自己实现一个发布订阅模式,弄懂了他的原理后,我们就可以去读Node.js的EventEmitter源码,这也是一个典型的发布订阅模式。
因为javascript默认情况下是单线程的,这意味着代码不能创建新的线程来并行执行。但是对于最开始在浏览器中运行的javascript来说,单线程的同步执行环境显然无法满足页面点击,鼠标移动这些响应用户的功能。于是浏览器实现了一组API,可以让javascript以回调的方式来异步响应页面的请求事件。
这种异常必须在编译前就try/catch,又不一定会抛异常,小项目中不明显,大项目中,会造成不必要代码臃肿和可读性降低,完全可在编译出错时,通过单元测试和调试,得到正确代码。这设计还有啥意义?
NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管。但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学。如果你实在没有耐心,那就直接绕过长篇大论跳到“总结”部分吧。
许多人都有这样一种映像,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
今天我们来分析connect函数。connect是发起tcp连接的api。本质上是对底层tcp协议connect函数的封装。我们看一下nodejs里做了什么事情。我们首先看一下connect函数的入口定义。
有一种技术叫记忆化(memoization),可以避免函数的多次计算,从而节省资源。顾名思义,记忆化技术可以把函数的调用结果记忆下来,或者说缓存下来。
在本系列中,我们将构建一个基于NodeJS微服务,并使用Docker Swarm集群进行部署。
接手祖传旧代码,node版本太高导致无法运行成功。或同时需要使用多个版本node。
koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度高。它更express相比,它是一个更轻量的node框架,因为它所有功能都通过插件实现,这种插拔式的架构设计模式,很符合unix哲学。
process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块:
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
A Guide to Proper Error Handling in JavaScript
本文由 IMWeb 社区 imweb.io 授权转载自腾讯内部 KM 论坛,原作者:ruikunai。点击阅读原文查看 IMWeb 社区更多精彩文章。 什么是koa框架? koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度高。它更express相比,它是一个更轻量的node框架,因为它所有功能都通过插件实现,这种插拔式的架构设计模式,很符合unix哲学。 koa框架现在更新到了2.x版本,本文从零开始,循序渐进,讲解koa2的框
今天,Node.js 发布最新版本 Node.js 10.0.0,同时,npm 6 也随之发布。据了解,今年 10 月,Node.js 10.x 将成为长期支持版本,该版本专注于稳定性、扩展支持以及为各类应用提供一个可靠稳定的平台。
在本指南中,我们将重点介绍Winston的日志包,这是一个极其通用的日志库,是基于NPM下载统计信息,可用于Node.js应用程序的日志记录解决方案。Winston的功能包括支持多个存储选项和日志级别,日志查询,甚至是内置的分析器。本教程将展示如何使用Winston记录我们创建的Node/Express应用程序。还将研究如何将Winston与另一个名为Morgan的Node.js的HTTP请求中间件记录器结合起来,以便将HTTP请求数据日志与其他信息进行整合。
Node.js 是基于 Chrome V8 javascript 引擎构建的开源、跨平台运行时环境。事件驱动的非阻塞 I/O 模型使 NodeJS 框架 能够开发极其轻便且高效的 Web 应用程序。
文档:http://www.expressjs.com.cn/ 菜鸟教程:http://www.runoob.com/nodejs/nodejs-express-framework.html
本文将通过代码示例展示如何使用基于回调的 API,然后将其改成使用 Promises,最后再用 Async/Await 语法。本文不会详细解释回调、promise 和 Async/Await 语法。有关这些概念的详细解释,请查看 MDN 的 Asynchronous JavaScript[1],它解释了什么是异步性以及如何用回调、promise 和 Async/Await 语法处理异步 JavaScript。
前端开发领域已经有很多自动化构建项目的工具了,例如vue-cli、create-react-app等等,但是在WebGIS开发领域却是少之又少,所以今天博主自己开发了一款脚手架工具,用来自动化构建WebGIS项目。
Nodejs 使用了一个事件驱动、非阻塞 IO 的模型。events模块是事件驱动的核心模块。很多内置模块都继承了events.EventEmitter。
PHP开发过程中经常会遇到返回500错误的情况,而且body体中也没有任何调试(可用)内容。这个时候你就需要慢慢调试了(打断点,开调试模式等),但如果是现网,这个错误就比较让人抓狂了,既不好打断点也不能开调试模式。但既然是错误,总是会有处理方法,下面就一步步分析500的成因及处理方案。
web后端最常用的功能之一是静态文件的托管,也就是那些存放在服务器上的只读文件,可以让前端自由下载。最直接的实现手段就是将url的路径和文件系统的路径一一对应,这样就可以通过url来下载文件夹内不同的文件包括子目录的文件。
本文主要讨论一些进行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
上述配置中,url是redis服务的地址。port是redis服务的端口号,这里是默认端口,password是redis的密码。
https://github.com/webVueBlog/express-node
开始学点儿Go语言,这语言据说在国内比在国外火,社区上褒贬不一,不过“小马过河”嘛,总要先自己试试再来下结论。 环境准备: 1.在Golang中国下载安装go语言,个人喜欢用msi安装,直接帮你设置环境变量,免得手动弄。 2.安装goclipse:在eclipse官网下载最新版eclipse,安装后进入菜单Help -> Install New Software,输入网址http://goclipse.github.io/releases/。注意在读出的长长的列表中选择goclipse即可,千万别全选(血的
Node中大量运用了事件回调,所以Node对事件做了单独的封装。所有能触发事件的对象都是 EventEmitter 类的实例,所以上一篇我们提到的文件操作的可读流、可写流等都是继承了 EventEmitter。当然我们也可以自定义具有事件行为的自定义对象,仅需要对其继承即可。 继承EventEmitter node的events模块封装了EventEmitter类型,此类型里面封装了事件注册、触发等API。 // 引入events模块 const EventEmitter = require('events
NodeJS在前端领域正扮演着越越重要的地位,它不仅可以让前端工作者使用javascript编写后端代码,还能方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动,非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
本文最初发布于 valentinog.com 网站,经原作者授权由 InfoQ 中文站翻译并分享。
领取专属 10元无门槛券
手把手带您无忧上云