【问题标题】:Should I wrap all my express server in a class with typescript?我应该用打字稿将我所有的快递服务器包装在一个类中吗?
【发布时间】:2019-03-26 12:54:23
【问题描述】:

我认为自己足够胜任 nodeJs。我最近决定通过开始使用 Typescript 进行开发来改变我的应用程序。我最近看到很多博客 (like this one) 在创建 RESTful API 时,它们将所有模块,尤其是应用程序的所有入口点包装在一个类中。这是正确的还是我可以像以前一样继续使用 typescript 开发我的应用程序?

【问题讨论】:

  • 考虑提供您在问题中讨论的代码。这个问题应该是可以理解的,无需访问站外链接。链接可以离线。
  • @estus 你说得很对,但我发现很难找到例子来解释我的意思
  • Vanilla Express 基本上不需要类,它几乎是准系统。但是您可以查看 NestJS(它基于 Express)了解 Express 如何适合 OOP 设计的一些想法。

标签: javascript node.js typescript express


【解决方案1】:

这是风格问题,而不是其他问题。但 Express 并未为其单元推广 OOP,将应用定义为一个类并没有明显的好处:

class App {

    public app: express.Application;

    constructor() {
        this.app = express();
        this.config();        
    }

    private config(): void{
        // support application/json type post data
        this.app.use(bodyParser.json());

        //support application/x-www-form-urlencoded post data
        this.app.use(bodyParser.urlencoded({ extended: false }));
    }

}

export default new App().app;

App 是一个不应该被重用的单例。它没有提供类众所周知的任何好处,例如可重用性或可测试性。这是不必要的复杂版本:

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

export default app;

【讨论】:

  • @Niccolòcaselli 至于 Express,你只是不需要 OOP。 OOP 只是做事的一种方式,不是唯一的方式,也必然是最好的方式。类是 Typescript 中的一等公民,因为类型如何在那里工作,但没有必要使用它们。
猜你喜欢
  • 1970-01-01
  • 2019-08-19
  • 2014-12-29
  • 2018-07-13
  • 2021-05-20
  • 2018-09-27
  • 1970-01-01
  • 2020-10-25
  • 2017-05-21
相关资源
最近更新 更多