【问题标题】:OOP framework for js and jquery [closed]js和jquery的OOP框架[关闭]
【发布时间】:2011-09-18 02:17:01
【问题描述】:

我正在开发一个网络应用程序。应用程序变得相当复杂,就目前而言,我决定必须引入一些 oop 概念。

原始的 js oop 对我来说不够原生(我是 .net 开发人员),而且它的继承很糟糕。我遇到了http://moo4q.com/,它看起来很有希望,但似乎相当新。这对我来说是一个很大的风险。

还有哪些其他 oops 框架来增强我的 jquery / js 开发?

编辑 1

我不是在寻找替代 jquery 的框架,而是在寻找扩展它的框架。

谢谢

【问题讨论】:

  • JS 面向对象的。它只是不是面向类的。仅仅因为 you 不能在不求助于类的情况下思考对象并不意味着它不是(或更少)OOP。也许您应该尝试学习基于原型的 OOP。
  • 我试过了。就拿继承来说吧,访问父类的属性和方法就是这么曲折,没了开发的乐趣
  • 试试John Resig's approach to inheritance。他是编写 jQuery 的人,所以他的代码很好。我喜欢他的继承实现。
  • 也许如果您了解 JavaScript 继承和覆盖的方式会有所帮助:stackoverflow.com/a/16063711/1641941 一个好的框架并不能保证好的 oop 代码,但一个好的程序员可以。至于可能必须由多个开发人员开发的大型代码库带来的复杂性,您可以查看闭包工具。

标签: javascript jquery oop


【解决方案1】:

Backbone.js 向 javascript 添加了一些 OOP 的相关内容,可能会对您有所帮助。它与 jQuery 非常互补,并增加了它的功能。

【讨论】:

    【解决方案2】:

    看看这个项目:

    https://github.com/pylover/joop

    • 跨浏览器
    • Javascript 原型
    • 继承层次结构
    • 多重继承和混合
    • 单例模式
    • 静态成员

    例子:

    Namespace('bmw.Car');
    
    Class('bmw.Car', {
        maxSpeed : 200,                         // Prototype member
        __init__ : function(color,cylindres) {  // Constructor
            this.speed = 0;                     // Instance Member 
            this.color = color;
            this.cylindres = cylindres == undefined ? 4 : cylindres; 
        },
        isRunning : function() {                // Method
            return this.speed > 0;
        },
        run : function(speed) {
            this.speed = speed;
        }
    }).StaticMembers({
        doors: 4,                               // Static field
        createSuperClass: function(){           // Static method
            return new this('gold',12);
        }
    });
    

    【讨论】:

      【解决方案3】:

      就我的研究而言,目前最好的 OO 框架是 http://prototypejs.org。它与 jQuery 有很多共同之处,但它超越了 jQuery,因为它也是一个 JavaScript 面向对象的框架。

      我不同意上面关于 JavaScript 中轻量级 OO 的帖子。当您编写一个大对象时,您不想被许多低级技术 OO 细节所困扰——您只想编写大量的类,并且知道您处于坚如磐石的基础上,而原型会为您做到这一点。

      原型能给你什么?一个干净的 OO 框架,支持继承、构造函数、mixin、调用超类方法的干净方式、特殊类成员、动态添加方法等等。

      Prototype 可以与 jQuery 在同一页面上使用。这需要导入两个库的正确顺序,仅此而已。它非常小(98K 缩小)。

      【讨论】:

        【解决方案4】:

        检查http://ejohn.org/blog/simple-javascript-inheritance/ OOP 方法来自 John Resig(JQuery 的创建者)

        【讨论】:

          【解决方案5】:

          Javascript 有一种非常优雅的方式来处理对象。小心使用库来实现这些基本的 OO 特性。在 Javascript 中,您可以编写干净而漂亮的面向对象代码:

          • 只使用文字对象
          • 忘记“新”声明和“原型”
          • 编写一个构建对象并将其称为“类”的函数

          这是一个示例微框架(70 行),说明了这一点:

          https://github.com/schuttelaar/Rococo2/wiki/Getting-started

          请注意,虽然这个框架提供了一些 DOM 集成,但它实际上并没有提供 OO 糖功能,而是提供了一种“编码风格”。

          这是我自己的页面,用于解释 JS 中的轻量级 OOP:

          http://www.gabordemooij.com/jsoop.html

          【讨论】:

          • 您缺少链接!
          【解决方案6】:

          您可能需要考虑使用Knockout 来使用 MVVM 设计模式简化您的 UI 实现。

          【讨论】:

            猜你喜欢
            • 2013-01-14
            • 2015-04-23
            • 1970-01-01
            • 2012-03-04
            • 1970-01-01
            • 1970-01-01
            • 2014-03-03
            • 2013-05-03
            • 1970-01-01
            相关资源
            最近更新 更多