NodeJS + expressJS + mongoDB环境搭建

1 comment , Tagged : , , ,

呃…..标题应该是“Ubuntu下NodeJS + expressJS + mongodb环境搭建”,位置不够显示!!!

接触nodejs后才学了点linux的命令,所以在搭建过程中遇到不少问题,中间补了一些linux的基本常识。环境搭建不断的装删折腾了N多次了,现在算是配得比较熟练了(貌似这没什么用!!)。最近刚装了ubuntu 11.10正式版,环境再次重新搭建了一次,趁现在还安装步骤比较清晰,记录一下搭建过程。

特别注意!!

  • linux新手,不了解权限问题(例如我),请不要随便用超级用户去执行以下命令,除非你直接用超级用户登录的!!
  • 有些安装过程可能会出现卡着不动(3-5分钟还是不动的话),ctrl+c停掉再多执行几次直到成功就可以了
  • 我使用的版本:nodejs 0.4.12,mongodb 2.0,express由npm自动安装

搭建前的准备工作

  • 1:搭建过程需要的依赖包

    sudo apt-get install g++ curl libssl-dev

  • 2. 安装git工具(如果你从git上获取源码的话):

    sudo apt-get install git-core

获取源码

  • NodeJS : git://github.com/joyent/node.git
  • ExpressJS: git://github.com/visionmedia/express.git (像我这种不懂手动安装的,就直接用npm安装)
  • mongoDB:我从官网下的,github地址童鞋们自己挖吧!!

Javascript微模板引擎

1 comment , Tagged : , ,

Javascript微模板引擎,好吧,叫得这么好听其实就一简陋的前端模板。

后端模板大家应该听得比较多吧(Smarty,Velocity等),而前端我们通常是直接在JS里拼接我们需要的html,这种混合写在一起的方式,导致html结构稍微复杂点就很难看清楚,对维护造成一定的不便。所以人们就“发明”了模板这东西,使用一些特殊标记来代表数据循环、值替换等功能,使内容格式尽可能清晰。

模板的核心就是模板解析,下面要展示的引擎也仅有这个功能,没有其它扩展,要求不高的可以拿去试试!!下面我们来看一下该引擎的程序:

HTML5入门-离线存储初探

2 comments , Tagged : , ,

这已不是什么新东西了,也没什么技术含量,只适合新手当作入门,如果您已了解过就没必要往下看了,哈哈!!

两周多前了解了一下并试作了一个DEMO,一直人懒没有把文章整理出来。昨天给自己的要求是今天一定要整理出来,接下来的两周好好看下书,为之后的路作准备。虽然还没确定下来,但还是得先作下准备,多积累点东西。

“离线存储”顾名思义,使得你的web应用可以在用户离线的状况下进行访问。这个技术至少有3个好处:

  • 最重要的一个好处当然是用户可以离线访问你的web应用;
  • 文件已被缓存在本地,使得web页面加载速度有显著提升;
  • 离线应用只加载被修改过的已缓存资源与不缓存的文件,因此也降低了服务器的负载压力

CSS的解析规则

1 comment , Tagged :

对CSS有一定了解的人,应该都知道CSS是从右往左解析的。最近在网上看到一张关于CSS解析规则的图片,挺有趣的,也挺直观的,废话不多说,直接上图。

Duff’s Device优化循环性能

no comments , Tagged : ,

“Duff’s Device”是一个循环体展开技术,它使得一次迭代中实际执行了多次迭代的操作。它最早是在1983年C上由Tom Duff实现,然后2001年Jeff Greenberg移植到JavaScript上。

我们先来一个典型的实现方式:

//credit: Jeff Greenberg
var iterations = Math.floor(items.length / 8),
     startAt = Items.length % 8,
     i = 0;
do{
  switch(startAt){
    case 0: process(items[i++]);
    case 7: process(items[i++]);
    case 6: process(items[i++]);
    case 5: process(items[i++]);
    case 4: process(items[i++]);
    case 3: process(items[i++]);
    case 2: process(items[i++]);
    case 1: process(items[i++]);
  }
}while(--iterations);