express是为NodeJS而生的高性能开发框架,目前在nodejs中是最优秀的王章开发框架。使用express可以搭建出大家熟悉而且喜欢的mvc三层框架。

如果你已经在nodejs的官网下载安装了nodejs,那电脑里面已经自带默认安装好了npmnpm是用来管理nodejs包de管理工具。使用npm可以安装nodejs的各种包,下面就用npm来安装express

在终端命令行中找到nodejs的项目目录,并输入

npm install -g express
等待命令完成,电脑就已经自动安装好了express包。

和前一篇的入门不大一样的是,express自己封装了一套创建服务器的方法,代码如下:
						  		
  1. var express = require('express');
  2. var app = express.createServer();
  3. app.get('*',function(req,res){
  4. res.json({res:"404"});
  5. });
  6. app.listen(1088);
虽然看上去好像和http对象写法差不多,但是express包里面封装了多种对象,可以帮助我们很快的建立起mvc架构。

众所周知,mvc架构是由model层,controller层和view层为主的架构。下面是以express为框架搭建的一个简单的mvc架构

					    		
				    		

以上的app.js是主要的js文件,他指定文件路径和统一的http请求入口。 routes.js是自己封装的脚本文件,把http请求做统一处理。 app.js指定了view层路径,里面用来存放htm文件,代码如下

						  		
  1. app.configure(function(){
  2. app.set('view engine','htm');
  3. app.set('view','/views');
  4. app.set("view options",{layout: true });
  5. app.register('.htm',require('ejs'));
  6. })

app.js指定static为静态文件,如css,js还有img等的文件路径,代码如下

						  		
  1. var path = require('path');
  2. var static_dir = path.join(__dirname, 'static');
  3. app.configure('development', function(){
  4. app.use(express.static(__dirname + "/static"));
  5. app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  6. });

expressconfigure方法还有很多用途,想要了解详细的可以点击这里

controller层是主要的业务层,所有的http请求的集中处理的层,所有的http请求都集中到controller层进行处理,下面是一段简单的代码

						  		
  1. exports.index = function(req,res,next){
  2. res.render("home/index",{error:""});
  3. }

如上面所示,这段代码封装了一个index方法,主要内容只是返回view里面的home文件夹下面的index.htm文件。如果需要传参,则可以直接在{error:""}里面添加json数据即可在页面接收。

把上述的代码存在index.js中,那么这个时候我们就可以在别的文件中调用到这个方法。为了方便编码,我们把所有的入口封装在routes.js中,以便集中管理,代码如下

						  		
  1. var Index = require('./controller/index.js');
  2. exports = module.exports = function(app){
  3. app.get('/index.htm',Index.index);
  4. app.get('*',function(req,res){
  5. res.json({res:"404"});
  6. });
  7. }

我们使用require方法把刚才封装好的index.js导入,当http请求为/index.htm时,就会执行index.js中的index方法,将view层的index.htm文件下载到浏览器中展现。而且我们现在也看到routes.js中,也把自己封装成了一个方法,在app.js中只用使用以下代码,就可以调用

						  		
  1. var routes = require('./routes');
  2. routes(app);

此时,一套完整的流程就可以走通了。

其中model层会在下面的nodejs连接数据库的时候讲到,所以这里略过。