Node.js 事件循环(Event Loop)介绍
JavaScript是一种单线程运行但又绝不会阻塞的语言,其实现非阻塞的关键是“事件循环”和“回调机制”。Node.js在JavaScript的基础上实现,同样是单线程运行的语言。在单线程中要解决高并发的问题,就要采用非阻塞、异步编程的方式。简单的说,就是在非常耗时的I/O操作中,采用非阻塞的方式继续执行后续的代码,并且进入事件循环(Event Loop)。当I/O操作完成,程序会通过回调函数的方式通知原操作。
阅读全文JavaScript是一种单线程运行但又绝不会阻塞的语言,其实现非阻塞的关键是“事件循环”和“回调机制”。Node.js在JavaScript的基础上实现,同样是单线程运行的语言。在单线程中要解决高并发的问题,就要采用非阻塞、异步编程的方式。简单的说,就是在非常耗时的I/O操作中,采用非阻塞的方式继续执行后续的代码,并且进入事件循环(Event Loop)。当I/O操作完成,程序会通过回调函数的方式通知原操作。
阅读全文在Node.js中无法使用try/catch
处理异步回调函数中的异常。对于异步异常,Node提供了两种处理方式:callback
回调、'error'
事件。而在Express
框架中,基于回调传递错误及错误处理中间件,可以捕获系统中所有异步异常并进行统一处理。
Node.js 基于npm
包管理系统,建立了强大的模块生态圈。在Node.js
和npm
中,对包(package
)和模块(module
)有非常具体的定义,但我们确经常将它们混淆。本文根据个人经验并参照官方文档,解释和讨论二者的异同。
在NPM
包管理系统中,package.json
是一个重要文件,通过这个文件可以进行模块述、管理局部安装的包、运行脚本等。
React 组件可以客户端进行渲染。在客户端渲染组件时,是在页面加载完成后才开始渲染的。这会对页面加载效率造成影响,也不利于搜索引擎的抓取(不利于SEO)。基于React 虚拟组件机制,我们可以在服务端对组件进行渲染。在服务端渲当React 组件不仅可以提升页面的加载效率,而且可以服务端在客户端共用组件,提高组件的复用率。本文将通过一个简单的示例,介绍在Node.js Express框架
服务端渲染的实现。
与关系型数据库一样,合理的使用索引可以大幅提高MongoDB的查询效率,本文介绍基础索引、复合索引、文档索引等几种常用索引的使用。
阅读全文在window
对象中有两个函数,分别用于超时调用('setTimeout()')和循环调用('setInterval()')指定的代码。JavaScript是单线程语言,这两个函数在单线程编程中非常有用,它们会在设置超时值与间歇值后在特定的时刻调用代码。
Screen
窗口屏幕对象,Screen
对象在JavaScript中并不太常用。Screen
对象主要用于返回用户显示器屏幕的相关信息,如:像素的宽度、高度和色深等信息。
History
用户浏览历史记录对象,它提供了对浏览器会话历史操作的接口。即:在标签或框架中加载过的页面。可以通过window.history
或直接使用history
来引用该对象。
Navigator
对象提供了用户正在使用的用户代码(浏览器)的相关信息,可以通过window.navigator
或直接使用navigator
来引用该对象,它允许脚本查询并注册自己的一些活动信息。