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

我总是被告知这是一个很好的做法(ala'unobtrusive javascript)从HTML标记中分离JavaScript。 然而,我已经看到了一些新的和stream行的框架,如Bootstrap,Angular.js和Ember.js的相反趋势。 有人可以告诉我为什么这不被认为是不好的做法?

不显眼的Javascript是网上很多地方的一个好习惯。 您提到的框架通常用于创build完整的Javascript应用程序。 在许多这些应用程序中,没有Javascript的体验通常是一个空白页面。 在这种环境下,将标记从Javascript中分离出来的价值相对较低。

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

HTML是呈现文档的标记语言。 大家所指的语义实际上与代表丰富的文档有关。 这包括图像和链接,使更丰富的经验。 Word文档可以应用相同的原则,而不是将特定的文本标记为红色,而是将其标记为重点,然后将重点标记为红色,这将是expression意图的语义正确方式。

问题出现是因为HTML实际上包含了允许用户交互的元素 – 表单。 最初的devise是让专业人士创build简单的交互式用户界面。 当我检查不同的桌面GUI框架时,不存在实际视图和视图逻辑之间分离的事情,因为当你构buildGUI时,你不需要这种分离。

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

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

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