Bootstrap,Angular.js和Ember.js中使用的数据属性选项是否与Unobtrusive Javascript原则冲突?

sde*_*lis 36 javascript javascript-framework twitter-bootstrap ember.js angularjs

我总是被告知这是一个很好的做法(ala'不引人注目的javascript')将JavaScript与HTML标记分开.但是,我已经看到了与一些新的和流行的框架相反的趋势,如Bootstrap,Angular.js和Ember.js.有人能告诉我为什么这不被认为是不好的做法?

Luk*_*lia 27

不引人注目的Javascript对于网络上的许多地方来说都是一种很好的做法.您提到的框架通常用于创建完整的Javascript应用程序.在许多这些应用程序中,没有Javascript的体验通常是空白页面.在该环境中,将标记与Javascript分离的价值相对较低.

  • 我想你基本上已经回答了这个问题.当然,如果没有Javascript,我想要构建的一些功能根本不可能,但这并不意味着该网站不应该禁用它.然后,我还需要确定禁用javascript的潜在用户的数量,看看我是否应该关心 - 屏幕阅读器现在通常可以很好地处理Javascript,所以它不是真正的可访问性问题,而是偏好. (2认同)

edz*_*yov 19

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

HTML是用于呈现文档的标记语言.语义,每个人都被四周指实际上与较丰富的文档.这包括允许更丰富体验的图像和链接.同样的原则也可以应用到Word文档,其中的标志,而不是特定的文本为红色,可以将其标记为重点,然后风格强调为红色,这将是表达了打算语义正确的方式.

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

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

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

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

  • 同意!这是关于内容页面与交互式应用程序.内容页面应该不引人注目,因此内容可以立即访问(然后由JS增强).交互式应用程序可以更紧密地耦合,因为"应用程序"必须在有用之前完全加载和交互(因此,不需要分离). (2认同)
  • 实际上,表单在语义上也是有意义的.它们表示HTTP服务器将在特定资源上接受的操作或查询.表单的显示是表示,但标记是内容.例如,可以指示应用程序读取表单并提交它而不了解浏览器如何以图形方式显示它.这是通过HTTP指定API的一种方式,它位于超媒体API领域. (2认同)