Month: June 2016
util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。
util.inherits
util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。
JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有 提供对象继承的语言级别特性,而是通过原型复制来实现的。
在这里我们只介绍util.inherits 的用法,示例如下:
var util = require('util');
function Base() {
this.name = 'base';
this.base = 19…
Read More
我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码。
因此,我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数。这一功能应当属于路由还是服务器(甚至作为一个模块自身的功能)确实值得探讨,但这里暂定其为我们的HTTP服务器的功能。
我们需要的所有数据都会包含在request对象中,该对象作为onRequest()回调函数的第一个参数传递。但是为了解析这些数据,我们需要额外的Node.JS模块,它们分别是url和querystring模块。
url.parse(string).query
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。
在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。
在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它。
全局对象与全局变量
global 最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,满足以下条 件的变量是全局变量:
在最外层定义的变量;
全局对象的属性;
隐式定义的变量(未定义直接赋值的变量)。
当你定义一个…
Read More
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 和其他服务器端编程语言有很大区别,语言上的特性优点已经在前面分享过,这里就不说了.
与其他语言相比,还有一个区别,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
以其高性能,异步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中的原型链关系实现函数之间的属性,方法共享.下面简 单分享几种封装的方法.
既然说到继承,我们必须有一个基类
function Person(){
this.eat=function(){
return '吃食物';
}
}
Person.prototype.sport=function(){
return '运动';
}
Person…
Read More
Few days back I was working on a theme design and faced a very rare issue. The issue we faced was magento search not working in Magento Responsive Magento Web Design theme which is by default provided with the bundle of magento.
I took few steps to make it working and found out many solutions which can work for
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 开发环境以及加速 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
1. node.js 项目包下的 package.json :
实例:
{
"name" : "chatroooms",
"version" : "0.0.1",
"description" : "Minimalist multiroom chat server",
"dependencies" : {
"socket.io" : "~0.9.6",
"mime" : "~1.2.7"
}
}
或者
{
"name" : "learn-nodejs",
"version"
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》给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架、库的使用层面上,而是从不同的视角来揭示Node自己内在的特点和结构。建议 有一定Node基础或者做过Node方面的小项目的同学阅读,看完以后你的思维会有很奇特的碰撞,我看的时候就常常会有这样的想法:“哦,原来这个功能是 这样实现的哦”。下面这篇文章是我第二次阅读《深入浅出Node.js》的一些学习记录,并且通过百度脑图这个工具来画出思维导图,每天将自己的学习总结写在这篇文章下面。图片文字太小可以右键从新标签页打开图片,然后点击就可以放大显示。 新增原始文件脑图地址,这样…
Read More
我理解的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