Nodejs MVC 选择问题

Nodejs MVC 选择问题

最近开始筹划一个node的web应用,由于先前的经验都是PHP、Ruby,Python这样的脚本语言,所以对node完全是小菜,也出于时间紧急,就不想研究了,所以在这里请诸位大牛给推荐下Node的MVC框架。小弟在此拜谢了先^_ ^

8 回复

当然可以!Node.js 的生态系统中有许多成熟的 MVC 框架可供选择。这些框架可以帮助你快速搭建项目结构,并且提供了一系列的功能来加速开发过程。以下是几个比较流行的 Node.js MVC 框架:

  1. Express.js
  2. Koa.js
  3. Sails.js
  4. NestJS

每个框架都有其独特的特点和适用场景。让我们逐一介绍。

1. Express.js

Express.js 是最流行的 Node.js 框架之一,但它本身并不是一个 MVC 框架。不过你可以很容易地将它配置为 MVC 架构。

优点:

  • 轻量级
  • 非常灵活
  • 社区支持强大

缺点:

  • 不是真正的 MVC 框架

示例代码

// app.js
const express = require('express');
const app = express();

app.set('view engine', 'ejs'); // 设置视图引擎为 EJS

app.get('/', (req, res) => {
    res.render('home', { message: 'Hello from Express!' });
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});
<!-- views/home.ejs -->
<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1><%= message %></h1>
</body>
</html>

2. Koa.js

Koa.js 是由 Express 的作者开发的一个新的框架,使用了 ES6 的 asyncawait 特性。

优点:

  • 使用 ES6 的最新特性
  • 更轻量级
  • 更好的错误处理机制

缺点:

  • 相比于 Express,社区较小

示例代码

// app.js
const Koa = require('koa');
const app = new Koa();
const views = require('koa-views');

app.use(views(__dirname + '/views', {
    extension: 'ejs'
}));

app.use(async ctx => {
    ctx.body = await ctx.render('home', { message: 'Hello from Koa!' });
});

app.listen(3000);
<!-- views/home.ejs -->
<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1><%= message %></h1>
</body>
</html>

3. Sails.js

Sails.js 是一个完整的 MVC 框架,提供了很多开箱即用的功能。

优点:

  • 完整的 MVC 架构
  • 自动化的 REST API
  • 数据库集成方便

缺点:

  • 学习曲线较陡峭

示例代码

// config/routes.js
module.exports.routes = {
    'GET /': 'HomeController.index'
};

// api/controllers/HomeController.js
module.exports = {
    index: function(req, res) {
        return res.view('home', { message: 'Hello from Sails!' });
    }
};
<!-- views/home.ejs -->
<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1><%= message %></h1>
</body>
</html>

4. NestJS

NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用 TypeScript 构建,但也可以用 JavaScript 编写。

优点:

  • 基于现代 JavaScript
  • 提供依赖注入
  • 强大的类型支持

缺点:

  • 学习曲线较陡峭

示例代码

// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}
// app.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello from NestJS!';
  }
}

希望这些示例代码和简要说明能够帮助你做出选择。祝你开发顺利!


expressjs

thank you!

我们也用express

建议用express,这个资料多,很多可以参考的实例!如果想了解更多node web框架,请移步: http://ocdevel.com/blog/nodejs-frameworks-comparison?hn , 这篇文章真的写的很好。

ORM最近在用Squelize, 如果之前你是用rails的,这款还比较贴近, 不过远比activerecord弱的多。

另外, 路由推荐你用express-resource, 基本的restful路由能够满足, 特殊的需要手动写。

railwayjs你值得拥有!

Node.js 生态系统中有多个成熟的 MVC 框架,可以根据你的具体需求进行选择。以下是几个常用的 Node.js MVC 框架及其特点:

  1. Express + EJS/Handlebars/Pug

    • Express 是一个轻量级的 Web 应用框架,可以搭配不同的视图引擎(如 EJS, Handlebars, Pug 等)来实现 MVC 结构。
    • 优点:灵活、轻量、社区活跃、文档丰富。
    • 缺点:需要自己管理路由、模型和视图。

    示例代码:

    // app.js
    const express = require('express');
    const ejs = require('ejs');
    
    const app = express();
    app.set('view engine', 'ejs');
    
    app.get('/', (req, res) => {
      res.render('index', { title: '首页' });
    });
    
    app.listen(3000, () => console.log('Server running on port 3000'));
    
  2. Sails.js

    • Sails.js 是一个高度可配置的 MVC 框架,专为构建实时、数据驱动的应用而设计。
    • 优点:内置数据库支持、自动化的 RESTful API、WebSockets 支持。
    • 缺点:学习曲线相对陡峭。

    示例代码:

    // api/controllers/HomeController.js
    module.exports = {
      index: function(req, res) {
        return res.view('home', { title: '首页' });
      }
    };
    
  3. Adonis.js

    • Adonis.js 是一个快速、稳定且安全的框架,内置了许多现代 Web 开发所需的功能。
    • 优点:现代语法、内置 ORM、模块化设计。
    • 缺点:主要在 Linux 上测试。

    示例代码:

    // app/Http/Routes/web.js
    const Route = use('Route');
    
    Route.get('/', 'HomeController.index').as('home.index');
    
  4. NestJS

    • NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。
    • 优点:基于 TypeScript,提供 OOP 和 FP 特性、依赖注入、模块化。
    • 缺点:相比其他框架,可能更复杂。

    示例代码:

    // src/app.controller.ts
    import { Controller, Get } from '[@nestjs](/user/nestjs)/common';
    
    [@Controller](/user/Controller)()
    export class AppController {
      @Get()
      getHello(): string {
        return 'Hello World!';
      }
    }
    

综上所述,如果你希望使用一个轻量级且灵活的框架,可以选择 Express。如果需要更多高级功能和更好的开发体验,可以考虑 Sails.js 或 Adonis.js。如果你熟悉 TypeScript,那么 NestJS 是一个不错的选择。

回到顶部