本想着使用 NestJS,全栈都用 Javascript 的,但是 NestJS 整个用起来,ORM 设计比起 Rails 非常糟糕。
// NestJS的迁移写法
export class CreateUser1660000000000 implements MigrationInterface {
async up(queryRunner: QueryRunner) {
await queryRunner.query(`
CREATE TABLE "user" (
"id" SERIAL PRIMARY KEY,
"name" varchar NOT NULL,
"age" int NOT NULL
)
`);
}
async down(queryRunner: QueryRunner) {
await queryRunner.query(`DROP TABLE "user"`);
}
}
实在受不了了,去问问 ChatGPT,有什么建议。
结果给了四个建议:Django(Python)、Laravel(PHP)、Phoenix(Elixir)和 AdonisJS。
# users/models.py
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
def __str__(self):
return self.name
// database/migrations/xxxx_create_users_table.php
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('age');
$table->timestamps();
});
Django(Python)、Laravel(PHP)以前我也用过,性能上没有什么优势,但是 PHP 和 Python 的语法,相差 Ruby 实在太多了,不想去选择。
然后看了一下 Phoenix(Elixir),他似乎不太合适用在 CRUD 的后端项目上,而综合下来看,AdonisJS 其实是挺好的。
但是 AdonisJS 太少人关注了。
这几年 Rails 基本都没什么变化了,怎么还没有后端框架赶上。实在是不可思议。