我们在接触客户端javascript的时候,调试利器就是firebug ,也是当年为何喜欢用上firefox 浏览器的主要动力,当然,后来 chrome 插件里也出现了firebug的身影.....但是服务器端开发语言node.js 一直以来调试不是特别方便,可能是之前被 virtual studio惯坏了,这种用 console.log() 去打印变量甚至回调数据实在是太蹩脚.当然,有一款很强大的IDE ,webstrom对node.js提供了最全面的支持,也可以轻松配置来实现调试,下回有必要和大家分享一次.今天要分享的是关于node-inspector 下调试node.js程序.第一步:n
2015-03-22
21702
nodejs
查看更多
node.js 和其他服务器端编程语言有很大区别,语言上的特性优点已经在前面分享过,这里就不说了.与其他语言相比,还有一个区别,node.js 自身实现了一个服务器,而其他服务器端语言大部分要依赖Apach ,nginx ,IIS 等.node.js 可以用几句代码轻松实现:varhttp=require('http');
var webServer = function (req, res){
res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
res.write('<html>&l
2015-03-22
6630
nodejs
查看更多
又有一周没有写博客了,这样下去会变成荒地的,所以在睡觉之前必须要发一篇,本想把angular.js 系列接下去.....但是最近的 angular.js 用到快吐血,暂时不想再提,上手是熟练了,但是感觉长进不大,项目催的太急,空闲的时间少之又少,就连这篇博客都是从看电影的时间里抽出来的,我又堕落了,阿门!熟悉 node.js 的朋友应该不陌生它身上牛逼闪闪的几个"大字" ,什么 '单线程' , '非阻塞' ,' 异步IO' ,'事件轮询' ,'高并发' 等等.......确实很牛,但是最近我发现
2015-03-17
5617
nodejs
查看更多
在写node.js引用的时候,常常面临下面的一个困扰...不论是数据层,逻辑层,添加一个js文件或者暴露一个方法,当你想用的时候,在目标页必须 request 此文件才能使用被暴露的方法.我们是不是可以写一个方法,自动加载某个指定文件夹下的js文件呢?答案是肯定的.这样的好处:我只需要引用这个装载文件后(自动加载目录js 的代码文件) 以后随便你添加方法或者文件,都不影响之前的代码,从而就可以直接使用,是不是很爽....下面来完成这个一劳永逸的代码文件.varfs=require('fs');
var path = __dirname;
var self = __filenam
2015-03-09
13518
nodejs
查看更多
之前专门有一篇博客介绍 nginx 设置不带www域名跳转带www域名上为什么要这要做,可以从上面的博客得知原因.后来还有一篇是介绍关于主域在搜索引擎中权重更高 ,所以博客经过一段时间不带www域名跳转带www域名后,又相反的从带www跳转到不带www域名,只是因为主域权重更高,不想分流而已.再后来还做了一件事,就是伪静态化,所以在我的博客就算翻页你也会看到url 是这样的 http://yijiebuyi.com/2.html 但是会出现一个问题,之前被搜索引擎收录的url跳转过来服务器找不到自然会报错.所以博客的路由做了调整,兼容之前的老路由,同时支持新路由.这样又导致一个问题,就是一篇博
2015-01-13
10522
nodejs
查看更多
引用百度百科的一段描述:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以调用. 查看更多使用前提:已经安装xcode已经安装python 2.7 (3.0一下版本)已经安装node 0.10.*(本环境是 0.10.28)上面的安装方法你可以在本博客搜索cordova和phonegap是什么关系?PhoneG
2015-01-12
16709
nodejs
查看更多
关于什么是AES? 需要自己goole了解一下,今天就是简单和大家分享node.js下使用AES/ECB/PKCS5Padding 如何与其他语言通用加密解密.就像你的接口是node.js提供服务,而第三方平台是其他服务器端语言开发,比如php ,在第三方平台请求你的接口可能需要sign验证,假设我们使用了AES/ECB/PKCS5Padding 加密.AES/ECB/PKCS5Padding 斜线分隔的3部分分别是 算法/模式/填充量AES加密包括不同的模式,已经后面是否有填充量(为什么有填充量,就像我们引用的图片,一个AES块是16个字节,如果不满16的时候要不要填充?)算法/模式/填充
2014-12-30
34297
nodejs
查看更多
在node.js开发中,你一定用到过 console 类来打印一些东西或者debug.但是你在使用console类之前一定没有require 相关的包.有的人会说,console 是node.js核心自带模块,不需要require ,错了,这里容易理解错.核心代码库是你安装node.js时已经包含了并编译了此模块.核心模块定义在node源代码的lib/目录下.但是用的时候还是要require 一下.比如上一篇博文提到的node.js里querystring类的使用,这个就是核心代码库自带的,但是你用的时候还是要require('querystring');而我们常常拿来直接就用
2014-12-25
7705
nodejs
查看更多
下面的node.js调用Oauth接口并不是针对 腾讯开放平台.....具体不同的服务商可能在 oauth 基础上添砖加瓦,还要考虑具体的业务需求.相比Oauth2.0来说,Oauth1.0真的很繁琐......但是实际应用中碰到这个问题只能去解决,而不可能给对方打电话说,你赶紧把Oauth协议升级到2.0吧,1.0太繁琐,你想想将会发生什么事情 $#(+)&*@!!常常涉及到三方:Service Provider:服务提供者(如 腾讯,只是假设)Consumer:消费⽅,外部第三⽅方平台(如 一介布衣)User:用户 (登录用户)当然我的博客不是多用户博客,只是举例.前提条件:在服务
2014-12-23
6526
nodejs
查看更多
猎云网12月15日报道 (编译:西洲豹)Node.js作为服务器编程语言的后起之秀,常用来构建和运行Web应用,近日却爆出其社区出现分裂。由于对官方运营商Joyent公司在Node.js管理上的长期不满,多位核心开发者另立门户,创建了分支Io.js。从GitHub得知,Io.js的第一个版本(1.0.0 alpha1版)将于2015年1月13日发布。Node.js开源社区组织者Mikeal Rogers也是“另立门户”中的一员,他说:“我们不想被另外一家公司任命的管理人员牵着鼻子走,而是想让Node.js的贡献者拥有更多的控制权,并寻求更多的共识。”Io.js与Node.js的分离,再一次凸显
2014-12-15
4017
心得
查看更多
cookie是保存着http头信息中的.所以最原生的方法就是通过node.js的原生方法setHeader来设置.response.setHeader(name, value)方法接收key,value键值对获取 header 里面设置的值通过另外一个方法:response.getHeader(name)根据name 获取 value如下:设置cookieresponse.setHeader("Cookie", ["type=user", "name=一介布衣"]);获取cookieresponse.getHeader("C
2014-12-11
9956
nodejs
查看更多
上一篇简单说到leveldb数据库,此开源项目目前是支持处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。那么问题来了,node.js环境下如何使用leveldb数据库呢?node.js下需要第三方npm包 levelup 和 leveldown 来支持.安装依赖环境:npminstalllevelupleveldown提醒:levelup 版本最好用0.10.0或者更低版本,最新版本和leveldown编译时出问题.npm 安装指定版本依赖包npminstalllevelup@0.10.0或者你也可以这样npminstalllevel使用起来也非常简单.varlevelup
2014-12-03
21088
leveldb
查看更多
之前有过一篇比较简单的关于 mocha 做自动化测试的帖子, mocha测试今天稍晚详细点说下.常见的开源项目你都会发现test目录,当然我们自己创建的项目建议也加上此目录,在这个目录下做自动化测试.目前node.js下做自动化测试的工具也很多,今天我们主要来介绍下如何使用mocha进行自动化测试.安装 mochanpminstall-gmocha这样你就可以创建测试脚本了,如下:varassert=require("assert");
describe('Array',function(){
describe('#indexOf()',fu
2014-11-28
14832
nodejs
查看更多
Assent 断言模板包含如下方法:assert.fail(actual, expected, message, operator)assert.ok(value, [message])assert.equal(actual, expected, [message])assert.notEqual(actual, expected, [message])assert.deepEqual(actual, expected, [message])assert.notDeepEqual(actual, expected, [message])assert.strictEqual(actual, ex
2014-11-28
18683
nodejs
查看更多
引子:母版页之方便之处相信做过web开发的都不用说太多,可以重复利用资源,维护方便,开发起来你只需关注当前页变动的东西,固定不变的全部放到母版页,可以理解为前人栽树后人乘凉,省时,省力,省心.下面围绕2点简单说下.一.node.js开发,基于ejs引擎的母版页二.前提环境 ,如何使用及示例介绍就像上面的这个图,如果你的业务说覆盖的页面只有中间是变化的,那么其他部分完全可以放到母版页中呈现.node.js 下的web应用开发有2种模板引擎 ejs 和 jade ,当然你可能直接用jquery 的前端模板后端ajax请求数据等等....(也算一种吧)ejs 下如何使用母版页?ejs的母版页功能支持
2014-11-25
29711
nodejs
查看更多
NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测试。本文示例大多源于官网示例,部分示例结合需要或自己的感想有所改动。更多介绍请看 官方网址:Mocha on GithubInstallation:当你成功安装nodejs v0.10 和 npm后执行下面这条命令。#npminstall-gmochap.s. Ubuntu的注意apt源里的nodejs版本会比较旧,某些module会不支持,请从nodejs官网进行源码安装。First st
2014-11-07
6379
javascript
查看更多
拦截器在web开发中随处可见,比如站点的管理后台,不说所有人都能进入,所以就需要做一个拦截器并友好的跳转到提示页.下面我们简单实现一种,判断用户是否登录成功,登录不成功的用户自动重定向到登录页面.首先我们实现一个过滤器exports.checkAuth=function(req,res,next){
vartoken=req.signedCookies.token;
if(token&&req.session.user&&req.session.user.token===token)
next();
elseif(token){
//ifinvalidtoken
2014-07-22
16854
nodejs
查看更多
json格式被越来越多的开发者说青睐,我们常常在接口定义时使用这种格式参数进行数据交换.今天主要给大家从繁到简的几个node.js下使用的提交 json个数参数的方式方法.下面示例中出现的参数都做了处理,拷贝代码后需要更改这些参数同时自己写一个接收json格式的api,请求成功后再返回json格式(一) node.js 原生自带http模块,可以解决基于http协议下的请求及回发,执行效率高,但是好多东西需要开发人员自己动手来实现,看下面代码varhttp=require('http');
var body = {
"data":{
"
2014-07-17
70591
nodejs
查看更多
node.js 下如何定义一个只读不能删除的全局变量呢?使用下面的方法:varmongodbClients=require('./lib/common/mongodb_helper');
Object.defineProperty(global, "mongodbClient", {
value: mongodbClients,
writable: false,
configurable: false
});这样就创建了一个 mongodbClient 的全局变量,如何使用的呢?global.
2014-07-14
7708
nodejs
查看更多
和其他服务器端语言相比,貌似node.js 对于异常捕捉确实非常困难.首先你会想到try/catch ,但是在使用过程中我们会发现并没有真正将错误控制在try/catch 语句中.为什么?答案是这样的:node.js 是异步IO执行,所以我们将try/catch 反正异步回调函数中,当出现一个异常的时候,我们try 拿到这个错误时应该错过了当前程序运行堆栈,而在node.js原生的uncaughtException 处理事件却挂在 process 对象上,OMG,你可想而知,如果一个异常出现时,当前运行的 process 会直接挂掉,导致错误永远不会走到 catch 语句.所以 try/cat
2014-07-09
10292
nodejs
查看更多
我们常常对一个拼接的变量进行映射,让一个变量通过一定的算法得出一个可控的结果然后在操作.比如淘宝的分布式存储,淘宝会根据注册用户ID对64取模,结果肯定是小于64的数,就可以根据此数来确定用户信息存储在64台服务器中的哪一台.这里一个前提是会员ID是数值型,如果是字符串怎么办?本文要解决的就是这个问题.思路:给字符串求哈希散列码, 然后对固定数值求模,最后确定该把数据存储到那台服务器上.node.js 下有很多求哈希散列值的模块,本文用到的是fnv-plusgithub 地址:https://github.com/tjwebb/fnv-plus npm 安装模块(这里就省略不说了)使用:var
2014-07-02
15858
nodejs
查看更多
劳动最光荣,热烈庆祝 node.js 团队在五一国际劳动节向大家推出了2个新版本V0.10.28 Source code 下载地址V0.11.13 Source code 下载地址V0.11.13 更新记录v8: upgrade to 3.24.35.22buffer: add compare and equals methods (Sean McArthur)buffer: improve {read,write}{U}Int* methods (Nick Apperson)buffer: return uint if MSB is 1 in readUInt32 (goussardg)bu
2014-05-03
5333
nodejs
查看更多
有关npm的几个使用习惯,逐渐完善中。。我们开发中经常用到npm来管理第三方包,如果你觉得国外环境下载第三方包不是很快,可以换成国内的npm源,npm换国内源,使用过程也相对简单,本项目私有的包会选择 npm install async ,如果全局共享安装会使用 npm install -g async其实 npm 的实际功能远远超过我们实用的这几招。1.npm 帮你完成package.json 文件,在一个node.js 文件中 package.json 文件的重要性不必多说,如果你还不明白,赶紧google一下。如何完善:mkdirblog
cdblog
npminit前2句命令是创建项目
2014-05-01
9521
nodejs
查看更多
node.js 是一个服务器端运行JavaScript脚本的环境,这个环境下保持了客户端JavaScript的api一致,并且强制使用单进程单线程模式下工作的方式也与运行在浏览器宿主下的javascript保持一致,看似没有其他服务器端语言的任何优势,错了,上面提到的单进程单线程模式其实就是它的一大优点.单线程+单进程(1)程序大部分api与客户端javascript保持一致(当然服务器端javascript可以随意执行io操作及调用一些系统层面的接口)(2)javascript语言历史悠长,门槛不高,涉及到javascript语言的工程师多如牛毛(3)单线程单进程模式促使程序执行上下文不需要
2014-04-26
12619
nodejs
查看更多
npm 是node.js 环境下的包管理器,非常强大智能.生活这这片神奇的土地上,各种奇葩手段屡见不鲜啊.为什么要换源? npm 官方站点http://www.npmjs.org/并没有被墙,但是下载第三方依赖包的速度让人着急啊!就拿阿里云环境来说,有时npm 一个包也需要耐心等待......等待过去也许是原地踏步,也许就是安装失败.幸运的是,国内有几个镜像站点可以供我们使用,本人在使用http://www.cnpmjs.org/速度非常快,镜像站会实时更新,为我们节省了好多时间.如何给本机换源呢?(1)通过 config 配置指向国内镜像源npmconfigsetregistryhttp:/
2014-04-20
123078
nodejs
查看更多
canvas 模块是npm提供的一个第三方包,国内环境安装慢的话请给npm换国内源,点击查看,用来生成图片.在本博客的应用场景是生成验证码.前端时间阿里云上使用 ubuntu 系统,本地mac OS ,安装 canvas 及各种依赖貌似很顺利,最近从ubuntu 换到了 centOS 后,进过几小时的挣扎,canvas 环境还是没有安装成功!他的依赖很多,最好按照官方wiki提供的文档来安装.wiki文档地址:https://github.com/LearnBoost/node-canvas/wikiwiki 提供的安装向导包括2部分,红框内的为不同操作系统需要安装的依赖. 红框下面是云环境需
2014-04-20
12136
nodejs
查看更多
如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0本书实例背景是 Express 2.0 而如今升级到 3.0后去掉了一些老的方法也更新了一些新的,所以变化还是蛮大的.首先上一篇博客提到的一个问题:如何用Express 3.0 生成一个 ejs 模板项目前提是你已经下载了ejs包,如何下载,运行cmd 输入 npm install ejs -g2.0 下的语法是:express -t ejs microblog3.0下的语法是:express -e ejs microblog (-t已经失效,取而
2014-04-12
10959
nodejs
查看更多
学习mongoskin时发现获取db对象时应用了单体模式,顺便温习一下.单体模式是设计模式里最简单的一个,也是最实用的一个.单体模式也叫单例模式,有个明显的特征,全局只允许初始化一次,应用场景:银行卡 ,银行系统中的每一张银行卡都是一个单体,全局只允许初始化一次,避免多终端(柜台,ATM,手机银行app,电话银行 )等同时操作存取款时而引起的数据不一致的问题.对于一个引用类型的单体对象,一个进程访问时通常会对此object加锁,保证数据同步,银行系统更要如此.看下mongoskin 连接mongoDB的代码吧.varmongoskin=require('mongoskin');
2014-04-08
8936
nodejs
查看更多
针对前后几次blog不稳定(1)版本问题:从开始asp.net+access 到 php+mysql 到 node+mongoDB 到现在的 node+levelDB ,改版对于搜索引擎是很不友好的,直接导致搜索量下降,甚至被拉黑.(2)服务器问题,偶尔的不稳定或者相应超时,早先淘宝购买的非常便宜的小空间经常出现down机的情况,后来的openshift 被墙后,访问超时,转而投靠到bae下,没想到........目前阿里云服务器下,速度快,服务好,花点银子也比较省心.就是上面的种种原因吧,搜索引擎对本站收录一直不太理想,百度的索引量一直在升,但是搜索结果页明显是之前一版的快照,为啥子不更新呢
2014-04-07
10139
nodejs
查看更多
先来温习下基础知识.一个字节(Byte)占8位(bit)一个英文字母占一个字节,一个汉字占2个字节.请注意,这里有个"坑" ,一个汉字占2个字节的前提是unicode编码,如果是utf-8 编码的时候,一个汉字占用几个字节呢? 翠花,上代码!varfs=require('fs');
var str='一段优雅的文字出现了';
bufstr = new Buffer(str.length2);
for(j=0;j<str.length;j++){
bufstr.write(str[j],j2,'utf8');
}
console.log(buf
2014-04-03
10116
nodejs
查看更多