分类 Node.js

[译]在Docker中构建平滑的Nodejs应用

翻译来源:https://medium.com/@becintec/building-graceful-node-applications-in-docker-4d2cd4d5d392

当你有一个启动了并稳定运行,而且能提供流量的Node应用,你可能无法做到高枕无忧。比如有些时候你的应用会出现一些意外,比如,数据库链接超时、内存溢出、部署会迫使Nodejs服务需要重新启动。这个时候,你需要关注的是这个时候正在提供服务的进程会发生什么情况?不言而喻,随着进程终止,正在提供服务的请求也会终止服务。

Graceful exiting(译者注:下文称“平滑退出”)就是处理这类的问题的方法,它允许Nodejs应用完成对所有正常请求的响应之后然后再关闭进程。虽然Nodejs应用添加平滑退出机制相对比较容易,但Docker和npm启动子进程并处理信号的方式,会导致本地直接启动和Dockerized启动两种方式出现一些意想不到的差异。

请求生命周期与优雅退出(正在进行的请求仍将中止,但处理请求将完成)

平滑退出

read more
Node.js

Node.js 8 中的重要新特性及优化

Node.js 8是下一个进入长期支持(LTS)的发行版。 这将于2017年10月发生。 一旦Node.js 8转换到LTS,它的代号将变为Carbon。

官方介绍 node 8.0.0

  • Async Hooks API 简介
    • Async Hooks API 如何在 Node.js 8 中工作的?
  • N-API 简介
  • Node 8 中 Buffer 安全性的改进
  • Pending Deprecations
  • 提升对Promises的支持
  • Console 的改变
  • 静态错误码
  • 重定向过程警告
  • Stream API 改进
  • Debugger 的改变
  • 实验性的检查器 JavaScript API
  • 将V8升级到5.8:为 TurboFan 和Ingnition 做准备
  • npm 升级到 5.0.0
  • WHATWG URL parser
  • Node.js 8中的其他显着变化
    • 异步钩子Async Hooks
    • 缓冲区Buffer
    • Child Process
    • Console
    • Dependencies
    • Domains
    • Errors
    • File System
    • HTTP
    • Lib
    • N-API
    • Process
    • REPL
    • Stream
    • TLS
    • URL

Async Hooks API 简介

Async Hooks(以前称为 AsyncWrap )API允许您获取有关句柄对象生命周期的结构跟踪信息。

read more
Node.js

[转]Rem布局的原理解析

面试中发现很多人对rem布局的原理不是很清楚,只停留在会使用的阶段,或者理解完全是错误的,本文将给大家讲清楚rem布局的原理,使用方案等知识

什么是Rem

rem和em很容易混淆,其实两个都是css的单位,并且也都是相对单位,现有的em,css3才引入的rem,在介绍rem之前,我们先来了解下em

em作为font-size的单位时,其代表父元素的字体大小,em作为其他属性单位时,代表自身字体大小——MDN

我在面试时经常问会一道和em有关的题,来看一下面试者对css细节的了解程度,如下,问s1、s2、s5、s6的font-sizeline-height分别是多少px,先来想一想,结尾处有答案和解释

read more
Node.js

[转]Node.js的线程和进程详解

前言

很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够让读者较为清晰的理解Node.js对于单/多线程的关系和支持情况。同时本章还将列举一些让Node.js的web服务器线程阻塞的例子,最后会提供Node.js碰到这类cpu密集型问题的解决方案。

在学习本章之前,读者需要对Node.js有一个初步的认识,熟悉Node.js基本语法、cluster模块、child_process模块和express框架;接触过apachehttp压力测试工具ab;了解一般web服务器对于静态文件的处理流程。

Node.js和PHP

早期有很多关于Node.js争论的焦点都在它的单线程模型方面,在由Jani Hartikainen写的一篇著名的文章《PHP优于Node.js的五大理由》中,更有一条矛头直接指向Node.js单线程脆弱的问题。

read more
Node.js

深入理解JavaScript执行上下文、函数堆栈、提升的概念

首先明确几个概念:

  • EC:函数执行环境(或执行上下文),Execution Context
  • ECS:执行环境栈,Execution Context Stack
  • VO:变量对象,Variable Object
  • AO:活动对象,Active Object
  • scope chain:作用域链

想当初自己看到这几个概念的时候是一(m)脸(d)懵(z)逼(z),但是不得不说这几个概念对以后深入学习JS有很大的帮助。来不及解释了,赶紧上车~

EC(执行上下文)

每次当控制器转到ECMAScript可执行代码的时候,就会进入到一个执行上下文。

read more
Node.js

iBlog:基于Gracejs及github issues的全功能博客方案

iBlog 是完全基于github API 并充分利用 gracejs 数据代理特性实现的全功能博客方案。

简介

github作为全球最大同性交友网站,已经有人在其上面做了很多匪夷所思的事情,利用issues功能写博客就是其中之一……

背景

read more
Node.js

Node.js模块化机制原理探究

前言

Node应用是由模块组成的,Node遵循了CommonJS的模块规范,来隔离每个模块的作用域,使每个模块在它自身的命名空间中执行。

CommonJS规范的主要内容:

模块必须通过 module.exports 导出对外的变量或接口,通过 require() 来导入其他模块的输出到当前模块作用域中。

CommonJS模块的特点:

read more
Node.js

Techweekly:简单高可配的技术周报邮件推送工具

项目地址:https://github.com/xiongwilee/Techweekly

快速入门

第一步,下载代码,安装依赖:

$ git clone https://github.com/xiongwilee/Techweekly.git
$ cd Techweekly && npm install --registry=https://registry.npm.taobao.org

第二步,修改邮件配置config/config.mail.js

module.exports = {
  "sender": {
    "host": "邮箱服务器host",
    "port": "邮箱服务器端口号",
    "auth": {
      "user": "邮箱地址",
      "pass": "邮箱密码"
    }
  },
  "subject": "邮件主题",
  "from": "你的名字 <邮箱地址>",
  "to": ["收件人邮箱地址"]
}
read more
Node.js