Javascript:如何理解所有的框架和设计理念
Javascript: How to make sense of all the frameworks and design philosophies?
我已经使用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应用程序!
- AngularJS设计指南
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 设计redux状态树
- 在play2框架中向json对象添加下拉列表项
- 设计Django中当前导航菜单项的样式
- 用于操纵DOM API的Javascript设计模式
- 如何在离子框架+有角度的框架中制作顶部标签
- 如何在另一个html文件的框架中包含图像
- 如何重置内嵌框架
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- 使用 JavaScript 框架的设计器工作流
- 如何使用实习生测试框架正确设计页面对象
- 最好的JS框架的web和混合应用程序如果我已经做网页设计
- 免费软件Ui设计器,用于extjs框架的替代品
- IE7响应式设计的最佳解决方案/框架
- 构建HTML5/javascript平板应用的框架、设计模式和库
- 如何通过java脚本或动作脚本确定设计文档文本框架中的内容是否发生了变化
- 模型视图控制器-javascript mvc框架设计实践,用于编辑就地界面
- Javascript:如何理解所有的框架和设计理念
- 如何为具有相同布局的多个web应用程序设计UI框架