【问题标题】:How to decouple javascript programming from frameworks?如何将javascript编程与框架解耦?
【发布时间】:2009-07-13 09:35:41
【问题描述】:

我有一个关于 Javascript 框架的问题。我在我的应用程序中使用 ExtJs,但是许可等问题有很多问题,所以我想知道这件事。
有没有办法在开发 Javascript 时遵循一些策略,以便我可以轻松地从一个 Javascript 框架切换到其他框架?

【问题讨论】:

    标签: javascript frameworks porting decoupling


    【解决方案1】:

    如果你这样做了,我感觉你会开发自己的 JavaScript 框架。我怀疑这是否可行。最好在一开始就选择一个并坚持下去。

    【讨论】:

    • 是的,感觉很像“内平台”效果。
    • 好点。许多框架都提供了一些共同的特性,例如 $ 函数,或者 CSS 选择器,但是,如果你限制自己,你就没有很好地利用框架,如果你写了一个包装器,你基本上就是编写自己的框架。
    • 另外:确保您的所有要求都包含在您选择的框架中!
    【解决方案2】:

    我认为在不重写应用程序的大部分部分的情况下,从一个框架完全切换到另一个框架从来都不是一件容易的事。尤其是 JavaScript 框架非常不同。我真的不知道 ExtJS 提供的任何现实替代方案(我知道他们有一些许可问题,但我仍然不明白为什么商业应用程序开发人员如此犹豫要为框架提供的东西支付 330 到 1300 美元。而且,如果您将其开源,则无论如何都不必担心许可问题。

    您应该做的是摆脱服务器端的任何 JavaScript 框架特定代码(使数据传输尽可能通用)。这使得在客户端切换到另一个框架变得更容易,即使您可能必须在那里重写大部分代码库(但只在那里)(我什至没有看到简单的方法,例如从 Prototype 切换到jQuery 和它们彼此比较相似)。我所知道的唯一具有“库独立”方法的 JS 框架是 JavaScriptMVC(例如,您可以在原生、jQuery 或原型之间切换以获取底层功能,但即使他们正在考虑将其完全基于 jQuery 用于下一个版本)。

    【讨论】:

    • 钱没什么大不了的,问题是我不是项目经理,而且我正在为客户支付的项目工作,所以我想知道我怎么能计划好要解决的所有问题。
    • 嗯,有道理。我以某种方式喜欢 ExtJS,但另一方面,它使所有类似 Web 桌面的应用程序的外观和行为/反应都相同。无论如何,我认为在 JavaScript 中仍然很难发展出一般良好的架构原则,就像在 Java、C# 等中拥有它们一样(PHP 正在到达那里)。还是很有个性的
    【解决方案3】:

    让我试着在讨论中吹点新鲜空气。

    许多 Ajax 库和框架的主要问题是它们中的每一个都有不同的(以及专有的)API。此外,不同的库也支持和促进不同的编程模型。这确实是合理的,因为没有任何 API 标准具有框架必须提供的所有功能。然而,许多框架忘记了浏览器本身有一个相当基本的 API 和编程模型——用于布局的 XML(在简单的情况下为 HTML)、用于样式的 CSS 和用于脚本的 DOM。这个捆绑包不仅可以从浏览器中获得,而且还可以在 Gecko XUL 技术、Flex 和 Silverlight 中获得。

    有一个 Javascript GUI 框架将这种自然编程模型带回到开发人员手中 - Ample SDK。使用它,您可以在 XML 设备(XHTML、XUL 或 SVG1.2)中布局您的界面,使用 CSS3 功能规则设置 UI 样式,并且仍然针对基于标准的 API DOM(2/3 级)编写代码——所有这些都是交叉的。浏览器。

    选择了这种方法后,您可以确保明天,当浏览器都实现了同样出色的基本功能(上述)时,您可以重用大量应用程序 JavaScript 代码,因为它将在本机运行!

    这确实是故事的一部分——与视图交互(尽管许多 javascript 框架和库没有在 M、V 和 C 之间划清界限——这很痛苦)。编写 Javascript 应用程序通常不仅仅是与 DOM 交互,然后 MVC 和 PAC 代码架构就位。他们已经证明了他们的效率,他们与实施无关。选择一种实现(例如 Daff 建议的 - PureMVC)或创建您自己的实现。

    【讨论】:

    • 为什么是“2009 年 11 月 1 日开源?”为什么不是现在?只是好奇。
    • Ample 看起来很酷。我希望他们最终允许 JSON 和 XML。
    • UI Languages 的实现已经是开源的,只有核心运行时还没有,但它并没有太大的兴趣——在某种程度上它只是一个网络浏览器! 2009 年 11 月 1 日是该框架的作者不再受与其前雇主签订的合同约束的日子。至于 JSON - 当它出现时,它将更多地用于数据绑定解决方案。否则,您确实可以在应用程序逻辑中使用 JSON!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2015-07-21
    相关资源
    最近更新 更多