Asynchronous Code in Node 历史上,Node开发者只能用回调和事件emitters. 现在可以使用一些异步的语法: async module Promises Async/await funcitons Promise the docs, 在hook下,一个基本的promise的运行. Promises不是取代callback,它仍然使用callback. 例子: 这是传统的callback用法 function myAsyncTimeoutFn(data, callba…
新增的章节. If you are not using HTTP/2, then you are losing out on big improvements. HTTP/2相比http/1有很大的区别.例如: multiplexing 多路复用 server push of assets 如果您没有用HTTP/2优化代码,那么您的应用程序可能比使用HTTP/2要慢. 大量http/1的网页优化实际已经不需要了,甚至它们可能会伤到HTTP/2. 本章介绍一些主要功能,你需要阅读它并跟着它进行更多…
Real-Time Apps with WebSocket, Socket.IO, and DerbyJS 实时程序的使用变得越来越广泛,如传统的交易,游戏,社交,开发工具DevOps tools, 云服务,新闻. 之所以如此是因为技术的进步.更大的带宽用来传输数据和更多的计算来处理和取回数据. HTML5的新实时连接标准叫做,WebSocket. 在浏览器,JavaScript给你一个对象WebSocket.这个对象是一个类,它有各类方法用于生成WebSocket protocol clien…
参考:博客 https://www.cnblogs.com/chentianwei/p/10268346.html 参考: mongoose官网(https://mongoosejs.com/docs/models.html) 参考: 英文:Boosting Node.js和MongoDB with Mongoose 简介:mongoose Mongoose is a fully developed object document mapping (ODM) library for Node.j…
Persistence with MongoDB and Mongoose https://github.com/azat-co/practicalnode/blob/master/chapter5/chapter5.md 学习mongodb的官方网站: https://university.mongodb.com/ (免费课程,-> study guide,-> exam) https://docs.mongodb.com/manual/tutorial/getting-started/ M…
Getting Node.js Apps Production Ready 部署程序需要知道的方面: Environment variables Express.js in production Socket.IO in production(在线文章缺失这章) Error handling Node.js domains for error handling Multithreading with Cluster Multithreading with Cluster2 Event loggi…
TDD and BDD for Node.js with Mocha TDD测试驱动开发.自动测试代码. BDD: behavior-driven development行为驱动开发,基于TDD.一种自然化的测试语言. 例如,使用expect(response.status).to.equal(200)代替了TDD的assert.equal(response.status, 200) Mocha文档:https://mochajs.org/ chai: 官网文档:  https://www.ch…
Building Node.js REST API Servers with Express.js and Hapi Modern-day web developers use an architecture consisting of a thick client and a a thin back-end layer.如AngularJS,ReactJs, VueJS.用来建立厚厚的client. 另一方面,他们使用REST APIs建立thin back-end layer. a repr…
Template Engines: Pug and Handlebars 一个模版引擎是一个库或框架.它用一些rules/languages来解释data和渲染views. web app中,views可能是HTML pages(或部分它们),但是也可以是JSON, XML文件, 或者在desktop programs中是GUIs. MVC框架,templates属于view. 在web app内,使用模版可以动态地生成无限多个pages. 之后讲如何使用Pug和Handlebars 然后是:…
原文链接为 http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/ 由作者Jacob Nicholson 发表于October 27, 2015 在此对作者表示感谢 Node.js作为一个基于JavaScript的开发平台,正变得越来越流行.许多开发人员都想构建通过JavaScript开发的程序和库(不论前台还是后台).令人欣喜的是,名为npm的node包管理工具,可提供超过10万个基于node.js的程序包.当我们在本地…
        1.安装         windows下安装,在http://nodejs.org下载安装包进行安装即可.         linux下安装,使用yum或者下载源码进行编译.         默认情况下安装node的同时也会自动安装npm(Node包管理器).         2.Node包管理器         迄今为止Node.js 更新速度还很快,有时候新版本还会将旧版本的一些 API 废除,以至 于写好的代码不能向下兼容.有时候你可能想要尝试一下新版本有趣的特性,但又想…
@by Ruth92(转载请注明出处) 第6章 理解 Buffer ✁ 为什么需要 Buffer? 在 Node 中,应用需要处理网络协议.操作数据库.处理图片.接收上传文件等,在网络流和文件的操作中,还要处理大量二进制数据,JavaScript 自由的字符串远远不能满足这些需求,于是 Buffer 对象应运而生. ✁ 字符串与 Buffer 的区别 Buffer 是二进制数据,字符串与 Buffer 之间存在编码关系. 一.Buffer 结构 Buffer 是一个像 Array 的对象,但它主…
@by Ruth92(转载请注明出处) 第7章 网络编程 Node 只需要几行代码即可构建服务器,无需额外的容器. Node 提供了以下4个模块(适用于服务器端和客户端): net -> TCP dgram -> UDP http -> HTTP https -> HTTPS OSI 模型:由七层组成,分别为物理层.数据链路层.网络层.传输层.表示层.应用层. 一.构建 TCP 服务 TCP TCP(传输控制协议),属于传输层协议,是面向连接的协议. 许多应用层协议基于 TCP 构…
原文地址:http://www.moye.me/2014/12/27/promise_q_async/ 引子 在使用Node/JS编程的时候,经常会遇到这样的问题:有一连串的异步方法,需要按顺序执行,前后结果之间有依赖关系,形如(片断1): asyncTask(initial, function (err, result) {//step 1 if (err) throw err; asyncTask(result, function (err, result2) {//step 2 if (e…
@by Ruth92(转载请注明出处) 第2章 模块机制 JavaScript 先天缺乏的功能:模块. 一.CommonJS 规范: JavaScript 规范的缺陷:1)没有模块系统:2)标准库较少:3)没有标准接口:4)缺乏包管理系统. CommonJS 规范的提出,主要是为了弥补当前 JavaScript 没有标准的缺陷,使其具备开发大型应用的基础能力. Node 借鉴 CommonJS 的 Modules 规范实现了一套非常易用的模块系统,NPM 对 Packages 规范的完好支持使得…
1.Async介绍 sync是一个流程控制工具包.提供了直接而强大的异步功能.基于Javascript为Node.js设计,同一时候也能够直接在浏览器中使用. Async提供了大约20个函数,包含经常使用的 map, reduce, filter, forEach 等,异步流程控制模式包含,串行(series),并行(parallel),瀑布(waterfall)等. 项目地址:https://github.com/caolan/async 2. Async安装 npm install asyn…
@by Ruth92(转载请注明出处) 第3章 异步I/O Node 的基调:异步 I/O.事件驱动.单线程. Node 不再是一个服务器,而是一个可以基于它构建各种高速.可伸缩网络应用的平台. Node 是全方位的,既可以作为服务端去处理客户带来的大量并发请求,也能作为客户端向网络中的各个应用进行并发请求. Web → 网,Node → 网络中灵活的节点 事件循环是异步实现的核心,它与浏览器中的执行模型基本保持了一致.Node 正是依靠构建了一套完善的高性能异步 I/O 框架,打破了 Java…
Node.js安装和简单使用 安装方法 简单的安装方式是直接官网下载,然后本地安装即可.官网地址:nodejs.org Windows系统下,选择和系统版本匹配的.msi后缀的安装文件.Mac OS X系统下,选择.pkg后缀的安装文件. 测试是否安装成功 打开终端,键入命令node,如果进入命令行式js交互环境,即安装成功.如图: 我们可以直接在终端node环境下输入简短的js代码,比如正则表达式. 如果要运行一大段代码的话,可以先写一个JS文件再运行.例如有以下hello.js. funct…
Node.js是什么? Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 12.0.0版本,最新稳定的是10.15.3.Node.js 不是一门语言也不是框架,它只是基于 Google V8 引擎的 JavaScript 运行时环境,同时结合 Libuv 扩展了 JavaScript 功能,使之支持 io.fs 等只有语言才有的特性,使得 JavaScript 能够同时具有 DOM 操作(浏览器)和 I/O.文件读写.操作…
1. 下载Windows Binary版本的node.js文件 2. 把下载的ZIP压缩包解压到某个目录下(例如:D:\nodejs) 3. 此时的node.js只在刚刚解压的目录才起作用,需要配置环境变量才能起到全局的作用. 1. 在此电脑(我的电脑)右击-属性-高级系统设置 2. 在弹出的窗口中点击右下角的“环境变量”按钮 3. 接下来在系统环境变量中配置具体的环境变量,建议在系统变量中添加,不要在用户变量添加. NODE_HOME=D:\nodejs NODE_PATH=%NODE_HOM…
前言 Node.js中赋予了JavaScript很多在浏览器中没有的能力,譬如:文件读写,创建http服务器等等,今天我们就来看看在node中怎样用JavaScript进行文件的读写操作. 读文件 我们在data文件夹下新建一个hello.txt,并且在里面写入:hello, node.js!! ,如图: 我们在hello.txt同级目录下创建一个hello.js文件,我们在这个js文件中利用Node提供的文件操作API, 读取hello.txt文件中的内容. node中对文件相关的操作需要依赖…
In node.js, you can require fs, and then call fs.writeFile with the filename, and data to write to that file (as a string or a buffer). That will overwrite the entire file, so to just append that data to the file instead, pass an options object with…
什么是Node.js 1.Node.js就是运行在服务端的JavaScrip. 2.Node.js是一个基于Chrome JavaScrip运行时简历的一个平台. 3.Node.js是一个非阻塞I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快. 看下官网的介绍: Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, sc…
参考:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434502419592fd80bbb0613a42118ccab9435af408fd000 1.node环境下的模块(module)概念:一个name.js文件就是一个模块,name是模块名称,模块中的函数方法称之为变量. 2.模块变量的调用:A.js中输出变量module.exports=函数名称; B.js引入模…
如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多.使用起来跟Chrome的javascript调试器很相似. 使用npm安装: $ npm install -g node-inspector 然后需要通过浏览器连接到node-inspector,需要启动inspector服务: $ node-inspector 然后要在新的控制台以debug模式运行node.js应用: $ node --debug app.js 通过URL http:…
1.什么是node.js Node.js是一个后端的Javascript运行环境(支持的系统包括*nux.Windows),这意味着你可以编写系统级或者服务器端的Javascript代码. Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用. 关于事件驱动的两个实例: 在美国去看医生,需要填写大量表格,比如保险.个人信息之类,传统的基于线程的系统(thread-based system),接待员叫到你,你需要在前台填写完成这些表格,…
一.背景信息 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用.Node.js的包管理器npm,是全球最大的开源库生态系统.Node.js的典型应用场景包括: 实时应用:如在线聊天,实时通知推送等等(例如socket.io). 分布式应用:通过高效的并行I/O使用已有的数据. 工具类应用:海量的工具,小到前端压缩…
@by Ruth92(转载请注明出处) 第8章 构建Web应用 一.基础功能 请求方法:GET.POST.HEAD.DELETE.PUT.CONNECT GET /path?foo=bar HTTP/1.1 HTTP_Parser 在解析请求报文的时候,将报文头抽取出来,设置成 req.method. 路径解析 GET /path?foo=bar HTTP/1.1 HTTP_Parser 将其解析为 req.url 一个完整的URL地址: http://user:pass@host.com:80…
@by Ruth92(转载请注明出处) 第5章 内存控制 基于无阻塞.事件驱动建立的 Node 服务,具有内存消耗低的优点,非常适合处理海量的网络请求. 内存控制正是在海量请求和长时间运行的前提下进行探讨的. 一.V8 的垃圾回收机制与内存限制 V8 的内存限制 在一般的后端开发语言中,在基本的内存使用上没有什么限制,但在 Node 中通过 JavaScript 使用内存时,只能使用部分内存,这样,再单个 Node 进程的情况下,计算机的内存资源无法得到充足的使用. ☞ 主要原因:Node 基于…
@by Ruth92(转载请注明出处) 第4章 异步编程 Node 能够迅速成功并流行起来的原因: V8 和 异步 I/O 在性能上带来的提升: 前后端 JavaScript 编程风格一致 一.函数式编程 高阶函数 定义:是指把函数作为参数,或是将函数作为返回值的函数. 应用:事件处理,数组的迭代和归并方法等. 偏函数用法 偏函数用法:是指创建一个调用另外一个部分(参数或变量已经预置的函数)的函数的用法. 偏函数:通过指定部分参数来产生一个新的定制函数的形式就是偏函数. var toString…