2011-11-03 15 views
1

我正在尝试学习JavaScript,但似乎围绕原语,对象,函数等进行了圆圈转换。我可以在Python中很好地编写代码,所以JavaScript部分现在主要是关于语法和习语。掌握基本知识后选择JavaScript框架

我在选择不知所措,我不知道该如何选择:原型,jQuery的,道场,Node.js的,Backbone.js的等

什么是良好的JavaScript框架/ s的挑在掌握基础知识之后开始学习?冒着出卖我的JavaScript天真的风险,我想要一个(或多个)框架,我可以做异步请求,数据可视化和UI实现。

+0

这个问题是主观... –

+0

关于你在最后一句提到的事(异步请求,等等),我建议在“普通”的JavaScript做他们至少一次,让你知道事情是如何工作的。您会立即看到,与事件处理一样,您必须编写不同的案例以迎合浏览器之间的差异。 _然后_切换到一个库,让它为你处理麻烦的东西 - 我使用并推荐jQuery(但对其他库没有任何反应)。 – nnnnnn

+0

@nnnnnn您不需要提供抽象API来执行浏览器合规性的框架/库。您可以使用浏览器支持的许多polyfill /填充程序之一,仍然使用“普通”javascript。 – Raynos

回答

2

我不会说先确认自己首先了解JavaScript本身,这是一个非常独特的语言,既有好的部分,也有坏的部分。如果你花时间了解关闭,原型继承,关键字,构造函数等,你会感谢你自己。 JavaScript, The Good Parts是一个很好的开始。无论如何...

对于基本的DOM操作,事件处理,ajax等jQuery是明显的赢家。在过去,Prototype/Scriptaculous是一种常见的选择。

对于更高级的基于浏览器的应用程序,Backbone.js,Angular.jsEmber.js是获胜者。

DojoMootoolsExtJSKnockout.js一些替代角度和朋友......所有具有不同的优势和重点。

有无数图书馆的图表。 HighCharts是一个受欢迎的。要获得更高级的可视化效果,请查看D3.jsRaphael

Node.js是不同的野兽。这是一个服务器端的网络IO平台。它的竞争对手就是Python的Twisted和Ruby的EventMachine。

当然这个话题已经被覆盖在大篇幅这里: https://stackoverflow.com/questions/394601/which-javascript-framework-jquery-vs-dojo-vs

0

对于第一个步骤,我会建议jQuery,与它的直观的语法和能力,与一些插件进行扩展,并为它的强大社区和大量的文章,教程等the internet

jQuery是一个跨浏览器的JavaScript库,它提供 对DOM遍历,事件处理,动画和AJAX

试试先,那么你就可以基于其他框架去像Raphaël JS矢量图形,Processing.js为动画等

2

任务要求,我可以做异步请求,数据可视化,以及UI实现。

如果你想学习真正学习坚持使用低级别的基础知识和不要使用臃肿的抽象。

当然,当你使用jQuery你可能会更快地完成它,但你不会学习任何其他那么如何使用jQuery砍一起面条代码。如果您刚学会如何正确使用普通的旧javascript,那么您的代码就不会接近可维护,稳定或高性能。

+3

_“UI意味着DOM4或'''_ - 不,不。 UI是用户与之交互的东西,可能只是一些纯文本和一些超链接。 “用户界面”并不意味着图形。 (不,我是说,一个人不能了解DOM4或'') – nnnnnn

+3

+1,但...'当然使用jQuery是faster'其中,“快”是指? jQuery经常被那些没有花时间学习javascript或浏览器脚本的人使用,所以从这个意义上说,获得特定结果可能会更快。但是,像兼容性,质量,可维护性和性能等总体情况最好与完善的POJS方法相同,而且往往更糟糕。没有图书馆可以修复糟糕的设计或伪劣的编程。 – RobG

+0

@nnnnnn好点我只是假设他会想要更多的东西,然后只是HTML或否则他不会要求一个js库。 – Raynos

0

我建议3主/大框架来考虑。我选择以下3个原因是因为它们得到了很好的支持,文档和使用,但更重要的是 - 它们都提出了不同的编码风格/约定。

  1. Dojo
  2. ExtJS (Sencha)
  3. jQuery (UI/core)

应该指出的是,它们中的任何一个可以适合于几乎任何编码风格/偏好,但如果我是创造完美的(从与之合作的角度来看)的框架,我会做一个混合:

Dojo的创作和造型+ ExtJS的布点能力和商店基于数据的managemenet + jQuery DOM操作和AJAX支持。