12

我是 Web 开发的新手,并不完全了解 js 框架在应用程序中所扮演的角色。我从 jQuery 开始,但人们说我应该为我的项目尝试原型.js 或 node.js,这是一个多人策略游戏。

尽早选择一个框架是否重要,并确保它可以满足您的所有需求,这样您就不必使用多个框架?

4

4 回答 4

9

我是 Web 开发新手,不完全了解 js 框架在应用程序中的作用

你是新人,但你很幸运!

几年前,开发人员很难解决跨浏览器问题,涉及 CSS(仍然有一点)、事件处理、动画、DOM 操作。您必须经常为每个浏览器编写不同的代码。

JavaScript 库出现并解决了开发人员的问题,他们在幕后做了所有的魔法,你编写相同的代码(几乎总是)在每个浏览器中工作。换句话说,JavaScript 库通过为您提供可用于任何浏览器的一致功能集来自行解决跨浏览器问题。

通常,JavaScript 库会处理这些或提供以下选项:

  • 跨浏览器问题处理
  • 动画片
  • 自定义对话框和小部件
  • 编写更少代码的能力
  • 特定的选择器引擎
  • DOM的创建/修改
  • 事件处理
  • 实用功能
  • AJAX

我从 jQuery 开始,但人们说我应该为我的项目尝试原型.js 或 node.js,这是一个多人策略游戏。

本质上他们做同样的事情(上面提到过),由你决定你会去哪一个。我个人喜欢 jQuery,因为它很容易上手并且有 CSS-Like 选择器机制。

Node.JS 是完全不同的野兽,与基于客户端 JavaScript 的 jQuery 或 Prototype 不同,node.js 是服务器端 JavaScript。

尽早选择一个框架是否重要,并确保它可以满足您的所有需求,这样您就不必使用多个框架?

除非您需要它,例如取决于您的需要,否则它并不重要。虽然我个人建议你先学习 JavaScript 本身,这样当你以后学习 JavaScript 库时,你应该能够充分利用它。

于 2012-06-30T19:44:58.387 回答
4

javascript 框架的作用非常简单:为您提供一组更高级别的功能,以便您可以构建您的应用程序而无需重新编码之前已经完成的事情,并为开发提供一个结构。您可以将 jQuery 或原型.js 视为其他人发现经常需要一次又一次地编写的函数集,因此他们已经为您完成了。诸如在屏幕上为对象设置动画,或者在 DOM 中合并和重新排列元素等事情对于许多应用程序来说都是常见的,因此这些框架和许多其他框架都试图简化这些常见任务。另一件好事是他们以最佳方式为您解决了每个平台的常见问题,因此无论使用哪种浏览器或手机,您都可以获得类似的体验——过去并非如此。

Node.js 是不同的东西。它是一种服务器端语言(当然语言是 javascript),但它扮演 php 或 perl 或 python 或 ruby​​(或您最喜欢的服务器端语言)的角色,因为它实际上运行代码来与数据库对话并获取页面服务器,而其他人在浏览器中的用户机器上正常运行代码。

我建议只选择一个框架并好好学习它(我个人的投票是 jQuery,因为它拥有广泛的开发人员基础、不错的插件、良好的文档以及代码的可理解性),但由于这些框架中的每一个都只是普通的 javascript,任何你不能做的事情,你都可以用普通的 javascript 桥接。实际上,您可以在其中任何一个中做任何事情,只是一些任务在一个框架中会比另一个框架更简单。当与几个人一起工作时,虽然他们可能不会主动发生冲突,但这将是一场开发噩梦。

对于您的特定应用程序,您将需要前端和后端才能使其工作。如果您尝试构建的应用程序是一个网站,那么请务必使用这些 javascript 框架之一,但如果您正在谈论 android 或 iphone 上的移动应用程序,则您不需要这些。

于 2012-06-30T19:34:10.493 回答
1

只是扩展评论中的内容并澄清这些“框架”是什么:

您可以使用任意数量的框架,并且它们应该(如果写得好)不会相互冲突。某些库可能存在问题,因为它们分配给特殊字符,例如 $ 并且由于 JavaScript 中尚未使用的特殊字符数量有限,这几乎是不可避免的,但通常更成熟的框架已经识别出这一点并编写了解决方法,即jQuery.noConflict 基本上重新分配了之前使用 $ 的任何内容。

至于每个框架,都有负载,每个框架都有自己的特定领域/API,适合特定的编程需求,例如:

Sizzle (用于 jquery) - 用于操作 DOM 的优秀选择器语法

jQuery - 优秀的插件架构,成熟的 API 可以满足很多常见的编程需求,结合 jQuery UI 时优秀的 UI 组件

Handlebars.js - 基于模板的 dom 操作 + 其他一些不错的 MVVM(?)

Sproutcore.js, node.js... 等等 - 阅读每一个,看看他们说框架的目标是什么。

你可以将它们混合在一起——你可能会发现偶尔的冲突,你应该向作者报告,但不要局限于一个框架。

于 2012-06-30T19:41:00.227 回答
1

很容易对可用框架的范围感到困惑——如今,似乎每个月都有一个新框架进入时代精神。

关键是使用适合你的那些,并且至关重要的是,要了解并非所有框架和库都做同样的事情。

例如,jQuery 以 DOM 操作和 AJAX 为中心。是的,它有更多方面,但这些是它的卖点。将其与 Underscore.js 进行比较,后者旨在丰富数据级 API,使其更类似于 PHP 之类的东西。毕竟,与此类语言相比,JavaScript 具有传统上受限的 API(尽管随着连续的 ECMA 版本和供应商特定的 API 不断变得更加丰富)。

正如 hackartist 在他的回答中提到的那样,Node.js 与上述两者完全无关,因为它是服务器端的,而不是客户端。

我会避免使用多个焦点相似的库,尤其是在您的早期阶段。您会遇到同时加载 jQuery UI 和 extJS 的项目。是的,这为您提供了更多可玩性,但考虑到重叠,对页面加载权重的负面影响超过了好处。选择你喜欢的外观,最重要的是,你喜欢它的文档和社区。

最后,请记住库和框架并不是一回事,尽管这两个术语经常互换使用有些不明智。它们都是引擎盖下的 JS;库旨在提供功能和模式,至少通常,这意味着编写的代码比使用原生 JavaScript 或“香草”JavaScript 编写的代码少,而框架则关注总体结构您的代码以及各个部分如何关联或互操作。

于 2012-06-30T19:50:48.570 回答