开发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);

其中 siteuser 分别为两个 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);

参考

results matching ""

    No results matching ""