【问题标题】:ExpressJS/NodeJS and Object Orientated ProgrammingExpressJS/NodeJS 和面向对象编程
【发布时间】:2018-09-20 14:41:42
【问题描述】:

我是这个行业的新手,但似乎大多数公司在面试过程中似乎都在大量测试/强调 OOP 知识,即使他们的堆栈主要基于 javascript/NodeJS/typescript。

我很困惑这如何适用于使用 ExpressJS 之类的框架开发后端应用程序/API?

例如,伪代码中的示例 GET 路由:

app.get('/', async(req, res) => { 
  const exampleData = await database.querySomething()
  res.send(exampleData)
})

在我看来,创建这些 REST API 的编码风格有点程序化。例如。接收请求,根据参数进行一些数据库操作或查询,添加计算/数据整理,发回最终数据。

OOP 在哪里发挥作用?在后端 nodejs 应用程序中 OOP 的用例是什么?

【问题讨论】:

  • 在这三行代码中,您在三个对象上使用了方法。也许公司希望您可以编写比路由处理程序更复杂的东西。
  • 您可能会使用诸如 Sequelize 或 Mongoose 之类的 ORM 框架,而且您可能需要对这些数据进行除 CRUD 处理之外的工作。
  • 感谢大家的回复。抱歉,如果这看起来很明显,那么在 javascript 应用程序中将功能/程序与 OOP 混合是否被认为是正常的?例如,构建帮助程序/库,其中一些仅提供纯函数,而另一些则基于模型?

标签: javascript node.js typescript oop design-patterns


【解决方案1】:

当您谈到 OOP 概念时,您需要专注于语言,即 Javascript,而不是 Express。

网络上最好的资源之一是 JS 语言的 MDN 网站。 Start here

【讨论】:

  • 感谢您的回复。我想我困惑的主要来源是什么被认为是 OOP。例如,我遇到的所有 Node.JS 应用程序都混合使用了 OOP/功能/过程样式。因此,我正在努力寻找纯 OOP Nodejs 程序的用例。
  • 这完全正常,随着时间的推移,你会发现很多很多新的用例。
  • 对于 OOP,您需要使用新的 ES6 关键字 'class' 定义一个类。我觉得 anser 很方便,别忘了验证,我仍然认为这是一个很好的答案
【解决方案2】:

您可以在 es6 中编写代码或使用完全支持 oops 方法的框架。查看诸如 - fortjsnestjs 等框架。

例如 - fortjs 中的控制器看起来像 -

export class UserController extends Controller {

    @defaultWorker()
    async getUsers() {
        const service = new UserService();
        return jsonResult(service.getUsers());
    }

    @worker([HTTP_METHOD.Post])
    @route("/")
    async addUser() {
        const user = {
            name: this.body.name,
            gender: this.body.gender,
            address: this.body.address,
            emailId: this.body.emailId,
            password: this.body.password
        };
        const service = new UserService();
        const newUser = service.addUser(user);
        return jsonResult(newUser, HTTP_STATUS_CODE.Created);
    }

}

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2011-06-29
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多