资讯专栏INFORMATION COLUMN

UI 层的松耦合

keithxiaoy / 1216人阅读

摘要:松耦合当你能够做到修改一个组件而不需要更改其他组件时,就做到了松耦合,松耦合对于代码可维护性来说是至关重要的。应该使用保持和的沟通。将从中抽离在和更早版本的浏览器中有一个特性,即表达式。如下不好的写法已经不再支持表达式了。

松耦合

当你能够做到修改一个组件而不需要更改其他组件时,就做到了松耦合,松耦合对于代码可维护性来说是至关重要的。

原则

不要使用 css 表达式。(这种方式应该已经废弃了)

javascript 和 css 之间只通过 className 进行通信。

不要使用 html 的 on 属性,如:onclick。
应该使用 id 保持 javascript 和 html 的沟通。

使用模板。

将 javascript 从 css 中抽离

在 ie8 和更早版本的浏览器中有一个特性,即 css 表达式。如下:

</>复制代码

  1. /* 不好的写法 */
  2. .box {
  3. width: expression(document.body.offsetWidth + "px");
  4. }

ie9 已经不再支持 css 表达式了。
这种写法自2013年我开始接触 web 以来一直没有见过。

将 css 从 javascript 中抽离

</>复制代码

  1. /* 不好的写法 */
  2. element.style.color = "red";
  3. element.style.left = "10"px;
  4. element.style.visibility = "visible";
  5. /* 好的写法
  6. * 在 css 中定义样式 , 在 javascript 中 通过 className 通信
  7. */
  8. // 在 css 中
  9. .reveal {
  10. color: red;
  11. left: 10px;
  12. visibility: visible;
  13. }
  14. // 在 javascript 中
  15. element.className += "reveal"; // 原生写法
  16. $(element).addClass("reveal"); // 如果是 jQuery
将 javascript 从 html 中抽离

</>复制代码

我们要避免使用 onclick 等 on 属性来绑定一个事件处理程序。
应该使用 id 保持 javascript 和 html 的沟通。

</>复制代码

  1. // 好的写法, 如使用 jQuery
  2. $("#action").on("click",doSomething);
将 html 从 javascript 中抽离 注释中包含模板文本

</>复制代码

注释也是 DOM 的一部分

</>复制代码

  1. function addItem(url, text) {
  2. var mylist = document.getElementById("mylist"),
  3. templateText = mylist.firstChild.nodeValue;
  4. result = sprintf(template, url, text);
  5. div.innerHTML = result;
  6. mylist.insertAdjacentHTML("beforeend", result);
  7. }
  8. // 用法
  9. addItem("item/4", "Four item");
使用一个带有自定义 type 属性的

你可以通过

阅读需要支付1元查看
<