开发Express应用
MVC 是很多应用开发时都会采用的一种「架构模式」,会把一个应用分成 Model-View-Controller,每一部分各自负责:
- Model - 应用的功能实现、数据库相关操作等
- Controller - 负责转发请求,对请求进行处理等
- View - 应用的界面部分,与用户的交互等
同样的,我们在开发Express应用的时候也可以采取这样的清晰明了的开发模式,所以我们可以先构建好应用的文件目录,大致如下:
- models/
- controllers/
- views/
- app.js
- package.json
这次我也是用的 MVC 的结构,同时稍微扩充了一个 Service 层把数据定义和操作分割:Model 只定义数据,Service 定义操作数据的方法。
定义路由
在项目中,我们可以在 Controller 中定义路由的规则,但是我觉得将项目中路由的部分从中拆出来单独的作为一个文件,即将所有的路由都定义在一起会比较清晰。
一般而言,项目的路由的代码相对于其他的代码实际上并不多,一般一个页面的操作的路由代码仅仅只有1~3行,对于小型的项目而言,一个路由文件就已足矣。
而且如果将路由放在不同的目录中会需要同时在这些文件中require('express')
,增加了不必要的重复代码。
app.get('/', site.index);
app.post('/register', user.register);
其中 site
与 user
分别为两个 Controller 的名称,分别定义不同的 GET
或者 POST
路由规则。
MongoDB
MongoDB 对于 Node 而言确实很方便,由于 MongoDB 使用的是 JSON 风格的文档存储结构,所以特别是处理数据的时候就像是在处理 JavaScript 的对象一样。
有不知道 MongoDB 为何物的同学可以先点击本节末尾的链接了解一番。
在 Express 中使用 Mongoose 来操作 MongoDB 也特别的方便,例如以下是使用 Mongoose 连接数据库的一个操作:
Mongoose 是一个用于操作 MongoDB 的 ORM 模块。
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/test', function (err) {
if (err) {
console.log('connect to %s error: ', err.message);
process.exit(1);
}
});
再比如定义 Schema,以简单的 User 为例:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
name: { type: String },
password: { type: String }
});
mongoose.model('User', UserSchema);
参考
- MongoDB: https://www.mongodb.org/
- Mongoose: http://mongoosejs.com/