Node.js 全局对象

JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。 在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它。 全局对象与全局变量 global 最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,满足以下条 件的变量是全局变量: 在最外层定义的变量; 全局对象的属性; 隐式定义的变量(未定义直接赋值的变量)。 当你定义一个… Read More

Node.js: 如何继承 events 自定义事件及触发函数

events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看) 比如我们常见的 http , stream ,fs …..等等. 因为node.js的实现就是异步非阻塞io,通过事件轮询触发异步回调的机制,在单线程运行模式下,合理应用服务器资源才是制胜法宝,正是因为事件轮询才使得异步IO在高并发处理下游刃有余,所以大部分的包去继承 events 似乎合情合理. 下面我们可以看一个常见的事件处理,但是我们用的时候似乎并没有当回事: var req = http.request(params, functi… Read More

Node.js:一个路由2次 request

node.js 和其他服务器端编程语言有很大区别,语言上的特性优点已经在前面分享过,这里就不说了. 与其他语言相比,还有一个区别,node.js 自身实现了一个服务器,而其他服务器端语言大部分要依赖Apach ,nginx ,IIS 等. node.js 可以用几句代码轻松实现: var http = require('http'); var webServer = function (req, res){ res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); res.write('<html><body>'); res.write('&l… Read More

Node.js:海量数据大行其道的今天 node.js 在IO方面如何异步非阻塞

以其高性能,异步IO著称,当然node.js 在 stream 上的异步也非常到位. 我们一般理解的异步请求是这样的: 同时处理多件件事件 A,B,C,D,E,F,G …. 如果用.net语言去处理这些事情可能有2钟情况 (1) A,B ….. G 按照顺序一件一件处理,最后得到返回值. (2)开启多线程去同时执行多个事件. 而node是单线程处理语言,天生就不是富二代,资源还有限……上帝造物的时候是公平,当你发现关上一扇门的话,同时肯定会为你开一扇窗.所以 node 有了异步回调. 所以node.js下的处理可能是这样的: A,B …… G 依然是按照这个顺序处理… Read More

javascript 中面向对象实现 如何继承

上一篇博客已经说了关于javascript中的封装, 其中也说了javascript中本来是没有类的,我们上一篇的封装也是用javascript中的函数去模拟一个类,最后我们还模拟了一个构造函数.那 么今天和大家分享的关于继承,同样不是真正严格意义上面向对象的继承,而是通过javascript中的原型链关系实现函数之间的属性,方法共享.下面简 单分享几种封装的方法. 既然说到继承,我们必须有一个基类 function Person(){ this.eat=function(){ return '吃食物'; } } Person.prototype.sport=function(){ return '运动'; } Person… Read More

javascript 中的面向对象实现 如何封装

javascript 是一门很灵活的语言,也是一门有缺陷的语言. 比如我们今天要谈的,如何用面向对象的手法来封装javascript ,javascript是没有类的概念的. 所以今天谈到的封装,其实就是用javascript的函数来实现的. var People{ name:'一介布衣', age:'30' }; 这就是javascript中的一个对象,里面封装了2个属性. 实例化一个对象的实例 people var people=new People(); console.log(people.name,people.age); //一介布衣,30 如果我们需要在函数里返回一个对象,如下代码: function CreateP… Read More

Node.js:入门资料

  《快速搭建 Node.js 开发环境以及加速 npm》 http://fengmk2.com/blog/2014/03/node-env-and-faster-npm.html 《Node.js 包教不包会》 https://github.com/alsotang/node-lessons 《ECMAScript 6入门》 http://es6.ruanyifeng.com/ 《七天学会NodeJS》 https://github.com/nqdeng/7-days-nodejs Node.js 资源 《前端资源教程》 https://cnodejs.org/topic/56ef3edd532839c33a99d… Read More

Node.js:模块查找,引用及缓存机制

1. Node.js的模块载入方式与机制 Node.js中模块可以通过文件路径或名字获取模块的引用。模块的引用会映射到一个js文件路径,除非它是一个Node内置模块。Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始的时候就预加载了。   其它的如通过NPM安装的第三方模块(third-party modules)或本地模块(local modules),每个模块都会暴露一个公开的API。以便开发者可以导入。如 var mod = require('module_name') 此句执行后,Node内部会载入内置模块或通过NPM安装的模块。require函数会返回一个对象,该对象公… Read More

Node.js: 深入浅出Nodejs读书笔记

今天终于把朴灵老师写的《深入浅出Node.js》给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架、库的使用层面上,而是从不同的视角来揭示Node自己内在的特点和结构。建议 有一定Node基础或者做过Node方面的小项目的同学阅读,看完以后你的思维会有很奇特的碰撞,我看的时候就常常会有这样的想法:“哦,原来这个功能是 这样实现的哦”。下面这篇文章是我第二次阅读《深入浅出Node.js》的一些学习记录,并且通过百度脑图这个工具来画出思维导图,每天将自己的学习总结写在这篇文章下面。图片文字太小可以右键从新标签页打开图片,然后点击就可以放大显示。 新增原始文件脑图地址,这样… Read More

Node.js: exports 和 module.exports 的区别

我理解的exports 和 module.exports 的区别,欢迎大家吐槽~ 为了更好的理解 exports 和 module.exports 的关系,我们先来补点 js 基础。示例: app.js var a = {name: 'nswbmw 1'}; var b = a; console.log(a); console.log(b); b.name = 'nswbmw 2'; console.log(a); console.log(b); var b = {name: 'nswbmw 3'}; console.log(a); console.log(b); 运行 app.js 结果为: D:\>node app { name: 'nswbmw 1' } { name: 'nsw… Read More

Node.js: 认识流stream

流是Node.js中一个非常重要的概念, 也是Node.js之所以适用于I/O密集型场景的重要原因之一。 流是Node.js移动数据的方式,流可以是可读的和/或可写的。在Node.js中很多模块都使用到了流, 包括HTTP和fs模块,本文将用尽可能简单的方式为你介绍Node中流的概念。 流 Stream 事实上,流通常用于将程序连接在一起。流可以被读和写。被流连接在一起的程序通常很小,并且只专注于做一件事。 你可能经常在项目中使用Gulp来做项目的代码构建,那么在使用过程中,你很可能碰到过类似下面的错误。 错误大概是这样个的: stream.js:94 throw er; // Unhandled stream error… Read More

Node.js: fs.readFile/writeFile 和 fs.createReadStream/writeStream 区别

1. 先说说各自的用法: How do I read files in node.js? fs = require('fs'); fs.readFile(file, [encoding], [callback]); // file = (string) filepath of the file to read encoding is an optional parameter that specifies the type of encoding to read the file. Possible encodings are ‘ascii’, ‘utf8’, and ‘base64’. If no encoding i… Read More