日期:2014-05-16  浏览次数:20433 次

踏上nodejs的不归路——02express框架的引入与使用(1)

? ? ? 说起express框架,http://expressjs.com/这是官网,应该说来是nodejs的一个伟大的mvc框架,这个框架最有价值的地方,我认为就是路由控制系统,这个就有点像java struts2里的action,起到了controler的作用,是不是觉得有点意思,一个web程序里居然不用有java代码,不用有php代码,用js代码就可以实现很多复杂的功能,所以我们下面就看一下这个强大的框架。

? ? ? 第一步,安装express依赖包

? ? ? 使用命令行窗口,使用npm install命令来安装express安装包,可以把这个框架安装成全局的用npm install -g

npm install -g express

? ? ? 第二步,创建express工程

? ? ? 使用命令express ejs/jade 工程名,这里的ejs和jade是值得一些模板引擎,ejs挺简单的,但是jade得需要一些功夫了解实践,创建工程后,会产生一个package.json的文件,这个文件里面记录了一些如项目名称,版本号,还有一些依赖包的信息,我们可以修改这些依赖包的信息,并且通过npm install命令去更新这些依赖包。

? ? ? ?第三步,引入velocity还有mongodb以及一些记录session的依赖包

? ? ? ?正如上一步所说的,只需更改package.json文件,用命令行窗口进入到该项目文件夹,然后执行npm install即可下载这些依赖包,上一步中说express默认支持ejs还有jade的模板引擎,但是我们公司项目中都是用到velocity模板引擎,但是刚开始的时候我就在这里碰到了壁,搜遍了全网也没有找到一点关于express支持velocity模板引擎的信息,后来,我们公司老板扬哥给了我很大的帮助,他一句话点醒了做梦的我,nodejs是支持velocity的,首先要先下载安装velocity依赖包,安装方法同安装express,这是第一步,然后更改app.js中的代码,只需添加几行代码,首先引入velocity模块和fs模块(读取文件的模块)

var velocity = require('velocityjs') 
var fs = require('fs')

?

然后引入全新的模板引擎

?

app.engine('vm',function(path,options,fn){  
    var template = fs.readFileSync(path).toString();  
    var macros = {  
        parse: function(file) {  
            var template = fs.readFileSync(cwd + '/views/' + file).toString()  
            return this.eval(template);  
        }  
    }  
    try{  
        fn(null, velocity.render(template, options, macros))  
    }catch(err){  
        console.log(err);  
        fn(err)  
    }  
});

??最后设置express的模板引擎为'vm'引擎就可以了

app.set('view engine', 'vm');

?思路也非常简单,首先通过express的路由控制找到路径文件,然后通过fs模块读取该文件,最后通过velocity依赖程序解析内容,我的package.json文件如下:

?

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.0rc4",
    "velocityjs": "*",
    "connect": ">= 1.x",
    "connect-mongo": ">= 0.1.7",
    "mongodb": ">= 0.9.9"
  }
}

?express框架,velocity的依赖包和mongodb的依赖包全都下载好后,整体一个web工程的空架子就已经搭建好了,下一步我们就可以开始我们第一个最简单增删改查的例子了,这时候你可能有些糊涂了,没有关系,说实话,我当初刚开始的时候也挺迷糊了,做了一个增删改查的例子之后,就好多了,附件里面有app.js。