如果我们不喜欢它的表示层,那么为什么我们容忍它的行为层呢?

时间:2010-04-13 06:37:22

标签: javascript html css events

假设我们所知道的CSS从未被发明过,而我们最接近的就是这样做:

<script>
// this is the page's stylesheet
$(document).ready(function(){
    $('.error').css({'color':'red'});
    $('a[href]').css({'textDecoration':'none'});
    ...
});
</script>

如果这是我们被迫编写代码的方式,我们会忍受吗?或者地球上的每个开发人员都会对浏览器供应商尖叫,直到他们对CSS进行标准化,或者至少是某种声明式的语言?

也许CSS并不完美,但希望显而易见的是它比上面显示的找东西,做东西方法更好。所以我的问题是这个。我们已经看到并尝到了与CSS的声明性绑定的荣耀,那么为什么,当涉及行为/交互层时,整个JavaScript社区似乎对继续使用上述kludgy程序方法感到自满?例如,为什么许多人认为这是最好的做事方式:

<script>
$(document).ready(function(){
    $('.widget').append("<a class='button' href='#'>...</div>");
    $('a[href]').click(function(){...});
    ...
});
</script>

为什么没有大规模推动以跨浏览器的标准方式实现XBL2.0或.htc文件或某种声明性行为语法?这是否被其他网络开发专业人士认可? HTML5有什么可见的吗?

(警告,免责声明等等:我意识到这不是一个完美的世界,而且我们正在玩我们已经被处理过的手。我的观点不是批评当前的做事方式而是批评存在关于当前处理方式的自满。其次,事件委托,特别是在根级别,更接近于具有声明性行为层。它解决了问题的一个子集,但是它无法创建UI元素,因此整体问题仍然存在。)

2 个答案:

答案 0 :(得分:1)

**为什么例如许多人认为这是最好的做事方式: $(文件)。就绪(函数(){     $( '小部件')追加( “...”)。     $( 'A [HREF]')点击(函数(){...})。     ... }); **

因为这不仅仅是行为。执行您提供的示例的正确方法是使用普通的html。您所描述的内容适合以渐进增强的方式对其他行为进行分层。这非常复杂。这是行为的行为。

答案 1 :(得分:0)

JavaScript只能被容忍,因为它无处不在。如果它实际上是一种很好的语言,那么每个人和他们的狗都不会用它来创建深奥的DSL,这些DSL很难让你忘记你正在使用JavaScript。