2011-06-02 78 views
22

我一直是jQuery(及其一些小插件)的用户。这些年来我开发的Javascript代码可以被描述得最好......凌乱。它在这里和那里使用了大量的全局变量和函数,没有使用组织代码的标准方法,也没有使用任何设计模式。Javascript:如何理解所有的框架和设计哲学?

我目前正在构建一个网站的新版本,并且我已经完成了PEAR::MDB2Smarty模板的后端工作。剩下的只是一些类的自制PHP。

现在,我要在网站顶部添加Javascript图层,以提高某些功能的用户友好性。 (同时确保所有的东西都优雅地退化)我想写出比以前更好,更干净,更有组织的Javascript,所以我做了一些调查。我读了Stefanov的Object-Oriented Javascript以更好地理解我只知道一些概念(原型,构造函数等)的一些概念。现在我被困在一个点,我不知道我应该使用哪个Javascript框架,以及如何组织这一切。

进行我的研究后,我明白了Cappuccino & Objective-JSproutcore不是我正在寻找的。要引用Cappucino的关于页面:

卡布奇诺不是用来构建网站或使现有网站更“动态”的。我们认为这些目标与应用程序开发的目标相距太远,无法通过单一框架实现。 Prototype和jQuery等项目在这些任务中表现出色

所以就是这样。然后我发现了Coffee Script,它更像是一对一的“编译器”,不会帮助我实际组织我的代码。

我也无意中发现一些文章,给予指导:

我也发现了Backbone.jsShoestringJavaScriptMVCGoogle LoaderjQuery ToolsjQuery UI。我真的不知道该怎么做......我知道的东西......我知道的东西:

  • 我不想投入太多时间学习太复杂的东西,我想让事情简单而灵活尽可能多(这就是为什么我不在后端使用Symfony),但又干净整洁。
  • 我想使用jQuery,问题是,我应该使用它? (也是兼容的)

现在,我会使用jQuery和jQuery工具和“组织”所有在一个简单的名称空间/对象字面值与简单的属性和方法,而且,由于该网站是本地化的,我只是计划使用简单的vsprintf(就像我在后端)使用从后端提供的对象字面值加载的key:value对。 JavaScriptMVC看起来很有趣,但我担心它会给一个规模相当小的项目带来太多的复杂性。那是我需要你的建议的地方!非常感谢你提前。

+6

+1在提出问题之前进行研究...... – 2011-06-02 14:39:42

+0

我同意,如果您对jQuery不够小心,最终会出现凌乱的客户端脚本。当我第一次在真实项目中尝试jQuery时,我已经体验过它。 – OnesimusUnbound 2011-06-02 14:45:10

+1

我是jQuery的大用户。但是,如果您确实需要组织和逻辑代码,请远离Flowplayer的** jQuery Tools **。它的方式已经过时(死了?),充满了错误,几乎不受自己的社区支持,并且使jQuery的标记行“完成更少,更多地完成”。 jQuery Tools与您应该了解的关于jQuery的一切有关,以及jQuery插件应该如何运行......当然,所有的恕我直言。 – Sparky 2011-06-02 15:02:10

回答

4

好吧,我尝试在一个答案:

没有“最好”的方式来做到这一点。你现在知道那里有什么,我想你可能会偏好自己想要的东西。在这种情况下,选择一个框架并从内部学习。 (对不起,你的泡沫破灭了,但是每个框架都有一个学习曲线,有些陡峭,有些很容易,但最后要用好它,你必须投资,只要做到这一点,你就不会感到抱歉)。

您当然有一个首选干净的代码,所以你可能会考虑一些考虑因素。你也说你对jQuery有偏好,这很好,但是有一些限制(eskimoblood提供的链接也指出了这个限制)。

有一些不错的讲座/和辅导与咨询如何组织你的代码中的jQuery:

一些风格指南:

工具来检查你的代码

标准工程(JavaScript)的

可能会有更多..也许更多的人可以贡献,但我也认为你”在你把手弄脏之前,你几乎已经达到了你所能学习的结局。这些指南中的很多都是以非常通用的方式编写的,但有趣的是,JavaScript在很多特定情况下被调用。只是发布一些您认为“杂乱”的代码可能会很有用,我们可以帮助您找出如何更好地完成这项工作。祝你好运!

2

您应该watch the video and read the links in this article然后你应该再问问自己,如果jQuery是正确的工具。也许你会使用dojo,这对于大型项目来说好得多,或者你看看骨干网,并且可以在jQuery中留下来。毕竟他们都更“javascriptish”,然后像sproutcore,cappuciono甚至GWT。当你来自jquery时,也更容易理解。

1

要考虑的一个框架绝对是来自Facebook的ReactJS。这个框架在很多方面都很漂亮。

你必须知道的第一件事是它是一个视图框架。它可以在服务器端用于预先渲染页面,但它确实在客户端显示。由于它是一个视图框架,因此它可以与主干或任何其他“后台” - 结束框架一起使用。

React的一个重点是它的快速性。它在内存中保留虚拟DOM并虚拟化所有网页事件。所以虚拟事件被用来保持事件浏览器的不可知性。

虚拟DOM类型使编程动态站点,就好像你编程一个旧的静态网站。您可以拍摄整个HTML以呈现给视图引擎(就好像您在“重新渲染”整个页面一样),并且它将管理DOM操作。它会在新的虚拟DOM和当前的虚拟DOM之间做一个差异,并只插入需要插入的节点。这样可以减少DOM操作的数量,从而大大提高渲染速度。

开始的好地方是this tutorial,它展示了如何使用“Flux”(Facebook为其网站设计的网络流量)以实现Todo应用程序!