36

我一直被告知将 JavaScript 与 HTML 标记分开是一种很好的做法(ala 'unobtrusive javascript')。然而,我看到了一些新的和流行的框架的相反趋势,例如 Bootstrap、Angular.js 和 Ember.js。有人能告诉我为什么这不被认为是不好的做法吗?

4

2 回答 2

27

不显眼的 Javascript 是网络上许多地方的好习惯。您提到的框架通常用于创建成熟的 Javascript 应用程序。在许多这些应用程序中,没有 Javascript 的体验通常是一个空白页面。在那种环境下,将标记与 Javascript 分开的价值相对较低。

于 2012-10-19T18:32:06.467 回答
19

我自己也在问同样的问题,并得出以下结论:

HTML 是用于呈现文档的标记语言。每个人都在引用的语义实际上与表示丰富的文档有关。这包括允许更丰富体验的图像和链接。相同的原则可以应用于 Word 文档,您可以将其标记为强调,然后将强调的样式设置为红色,而不是将特定文本标记为红色,这将是语义上表达意图的正确方式。

问题的出现是因为 HTML 实际上包含允许用户交互的元素 - 表单。最初的设计是允许专业人士创建简单的交互式 UI。当我检查不同的桌面 GUI 框架时,实际视图和视图逻辑之间没有分离之类的东西,因为当你构建 GUI 时,你不需要这种分离。

对我来说,重要的是你所写的内容有多少是基于内容的或基于 GUI 的。因为 HTML 有两个目的,所以很难知道服务器要提供什么。基本上像维基百科这样的网站,甚至是 Stackoverflow 都是面向内容的。这意味着如果他们希望更广泛的客户端可以访问,比如机器人和旧版浏览器,他们应该能够流式传输纯 html。当您想要提供内容和一些更丰富的 UI 体验时,我正在考虑两种可能的策略,例如我正在撰写此评论的文本。一种是提供 html 服务,然后初始化 GUI。这也称为不显眼的 javascript 和语义 HTML。这是大多数面向内容的网站所做的。这主要是为了能够从允许其内容更易于访问的浏览器和机器人中受益。另一种策略是识别客户端的类型并提供不同的内容,这只能在客户端可靠地实现,因为在这两种情况下都将提供 html。这仍然接近第一个策略,因为 HTML 被用作/滥用作为内容和 GUI 表示的方式。

如果您正在编写一个不提供内容但提供实际服务/流程的应用程序,那么像 AngularJS 和类似的架构更适合。

以我的经验,大多数企业都必须同时提供。假设您有一个使用 HTML/Javascript 允许用户创建绘图的应用程序。这个应用程序不需要遵循任何不显眼的准则,但它也无法在旧浏览器上运行。但是,如果您在用户之间提供绘图的社交共享,允许评论和其他内容,那么最好以机器人和其他客户端可以轻松访问内容的方式编写网站的这一部分。

于 2012-10-25T17:45:13.407 回答