Javascript:如何理解所有的框架和设计理念

Javascript: How to make sense of all the frameworks and design philosophies?

本文关键字:框架 设计理念 何理解 Javascript      更新时间:2023-09-26

我已经使用jQuery(及其一些次要插件)一段时间了。我多年来开发的Javascript代码可以用…混乱来形容。它到处使用了大量的全局变量和函数,没有使用标准的代码组织方式,也没有使用任何设计模式。

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

现在,我将在网站顶部添加Javascript层,以提高某些功能的用户友好性。(同时确保一切都能优雅地退化)我想写比过去更好、更干净、更有组织的Javascript,所以我做了一些研究。我阅读了Stefanov的面向对象Javascript,以便更好地理解一些我所知不多的概念(原型、构造函数等)。现在我陷入了一个问题,我想知道我应该使用哪些Javascript框架,以及如何组织这些框架。

在进行研究之后,我了解了卡布奇诺;Objective-J和Sproutcore不是我想要的。引用Cappucino关于页面:

卡布奇诺不是为建立网站或使现有网站更"动态"而设计的。我们认为这些目标与应用程序开发的目标相距太远,单个框架无法很好地实现这些目标。像Prototype和jQuery这样的项目在这些任务上非常出色

就是这样。然后我发现了Coffee Script,它更像是一个一对一的"编译器",对我的代码的实际组织没有帮助。

我还偶然发现了一些提供指导方针的文章:

  • 使用继承模式组织大型jQuery应用程序
  • JavaScript模块模式

我还了解了Backbone.js、Shoestring、JavaScriptMVC、Google Loader、jQuery Tools、jQuery UI。我真的不知道该怎么办。。。我知道的事情:

  • 我不想在学习太复杂的东西上投入太多时间,我想尽可能地保持简单和灵活(例如,这就是为什么我不在后端使用Symfony),同时保持整洁和有序
  • 我想使用jQuery,问题是,我应该使用什么?(这也是兼容的)

现在,我会使用jQuery和jQuery工具,并用简单的属性和方法将所有这些"组织"在一个简单的名称空间/对象文字中。此外,由于该网站是本地化的,我只计划使用简单的vsprintf(就像我在后端所做的那样),其中键:值对从后端提供的对象文字加载。JavaScriptMVC看起来很有趣,但我担心它会给一个相当小的项目带来太多的复杂性。这就是我需要你建议的地方!事先非常感谢。

没有"最好"的方法。你现在知道有什么了,我认为你可能更喜欢自己想要的东西。在这种情况下,选择一个框架并从内到外学习。(很抱歉打破了你的泡沫,但每个框架都有一个学习曲线,有些陡峭,有些非常容易,但最终要想用好它,你必须对它进行投资。只要去做,你就不会后悔)。

当然,您更喜欢干净的代码,因此可能需要考虑一些因素。你还说你偏爱jQuery,这很好,但也有一些局限性(正如eskimoblood提供的链接中所指出的)。

关于如何在jQuery中构建代码,有一些不错的讲座/教程提供了建议:

  • 如何管理大型jquery应用程序
  • 在大型jQuery应用程序上
  • 基本的Javascript和jQuery模式(免费电子书)

一些风格指南:

  • Jquery核心UI样式指南
  • 谷歌闭包Javascript风格指南

用于检查代码的工具

  • JSLint
  • JSHint(一个更宽容/实用的叉子)
  • Closure Linter(尚未尝试,但打算尝试)

标准作品(javascript)

  • 道格拉斯·克罗克福德的一切
  • Quirksmode

可能还有更多。。也许更多的人可以做出贡献,但我也认为,在把手弄脏之前,你几乎已经达到了可以学到的东西的尽头。这些指南中的许多都是以非常通用的方式编写的,但有趣的是,在许多特定情况下都会调用javascript。发布一些你认为"混乱"的代码可能会很有用,我们可以帮助你找出如何做得更好。祝你好运

您应该观看视频并阅读本文中的链接,然后再问问自己jquery是否是正确的工具。也许您会使用dojo,这对较大的项目来说要好得多,或者您可以看看主干网以及使用jquery的地方。毕竟,它们都比sproutcore、cappuciono甚至GWT更"javascriptish"。当您来自jquery时,也更容易理解。

需要考虑的一个框架肯定是来自Facebook的ReactJS。这个框架在很多方面都相当流畅。

首先你必须知道的是,它是一个视图框架。它可以在服务器端用来进行页面的预渲染,但它在客户端确实很出色。由于它是一个视图框架,所以可以与主干网或任何其他"前后"端框架一起使用。

React的一个要点是它的快速性。它在内存中保留一个虚拟DOM,并虚拟化所有网页事件。因此,virtuals事件用于保持事件与浏览器无关。

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

一个很好的起点是本教程,它展示了如何使用"Flux"(Facebook为其网站设计的网络流)来实现Todo应用程序!