【问题标题】:Best practices and examples on how to organize object oriented javascript?关于如何组织面向对象的 javascript 的最佳实践和示例?
【发布时间】:2011-06-11 12:25:09
【问题描述】:

我是 JavaScript 和一般编程的新手。我已经开始创建我的第一个 Web 应用程序,我想使用面向对象的方法重写它。我已经阅读了一些关于面向对象 JS 的文章和书籍章节,关于如何模拟命名空间、模块模式等,但是我很难考虑如何在对象中组织我的代码,希望你能帮助我或者为我指出一些示例或最佳实践的正确方向。

我想用命名空间(可能称为 app)和我所有的应用程序函数来组织它,例如 app.func1、app.func2,但是我还有其他函数在其中使用就像实用程序,我希望它们有另一个名称,可能类似于 app.util.func ...我的代码在我的应用程序中创建自定义对象,但我不知道在哪里放置它们和它们的正确位置我的命名空间中的构造函数。

关于如何组织面向对象 javascript 的任何建议、想法、最佳实践、模板或示例?创建类似代码的简单库的示例会很棒。

提前致谢!

【问题讨论】:

    标签: javascript oop namespaces module


    【解决方案1】:

    我已经阅读了一些关于如何模拟命名空间的面向对象 JS 的文章和书籍章节,...

    我不会在 JavaScript 中模拟经典的 OO 范例。你应该坚持 JavaScript 的自然规律。

    不要进行经典继承。使用原型继承或根本不使用继承:组合/装饰看起来比 JavaScript 中的继承要好得多。

    您不需要命名空间。它们会导致不必要的间接并导致企业代码混乱。使用良好的模块模式,将函数和变量隐藏在闭包中。

    试试像 RequireJS 这样的模块加载器。你可以将你的模块隐藏在它们自己的文件和闭包中,让 RequireJS 为你做依赖注入魔法。

    组织 JS 应用程序文件是一个非常广泛的话题。您可以使用 MVC 或 MVP 等范例基于关注点分离来组织您的类。在项目组织方面,在 Maven 上构建您的应用程序(并遵循其约定)可能是一种选择。

    由于您的问题处于非常高的水平,我只是想提出一些您可能想在 Google 上阅读并阅读的想法和关键字。也许经过一些研究和试验和磨难,你可以回来询问更具体的问题。

    【讨论】:

    • 我认为命名空间很重要。您不想用大量不同的函数和变量将全局 window 对象弄得一团糟。
    • 我没有说它们不重要。它们通常被过度使用。有更好的方法来保持全局范围整洁。我只是反对这样的用途:com.mycompany.mylib.enterprise.ajax.
    • 谢谢,我正在谷歌上搜索更多关于这些想法的信息。
    • 在大约一年前宣扬相反的观点之后,我想我现在应该提一下,我实际上已经通过 John Resig 的简单继承开始使用“经典”继承,并发现它在一个项目中非常方便很多小部件类。但是,我认为这仍然取决于上下文。
    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2014-08-03
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多