CMUI / underscore.ext

[Deprecated] Please use `Gearbox` instead.
https://github.com/CMUI/gearbox
2 stars 3 forks source link

API 文档 - `dom` 模块 #51

Open cssmagic opened 9 years ago

cssmagic commented 9 years ago

API 文档 - dom 模块

JavaScript 变量

为减少业务层对常用 DOM 元素的重复获取和包装,dom 模块预先缓存了这些元素的 Zepto 包装对象。在业务层可以直接使用。

_.dom.$win

window 对象的 Zepto 包装对象。

示例

监听 resize 事件:

_.dom.$win.on('resize', function (ev) {
    //...
})

_.dom.$doc

document.documentElement 对象(即 <html> 元素)的 Zepto 包装对象。

_.dom.$body

document.body 对象(即 <body> 元素)的 Zepto 包装对象。

注意事项

为确保对 document.body 对象的正确获取,加载 Underscore.ext 的脚本标签须放置在页面的 <body> 标签内。当然,根据前端性能的最佳实践,所有外链脚本也确实应该放置在页面的最底部:

<html>
<head>...</head>
<body>
    ...
    <script src="..."></script>
</body>
</html>

JavaScript 接口

_.dom.is$Element(obj)

判断是否为 Zepto 包装对象(或 Zepto 集合)。

如果外部环境没有加载 Zepto 但有 jQuery,则理论上此方法也可以判断 jQuery 包装对象(或 jQuery 集合)。

参数

布尔值。判断结果。

示例

_.dom.is$Element(_.dom.$win)  // => true
hax commented 9 years ago

is$Element的使用场景是?

hax commented 9 years ago

可以加上$root和$head。

但是有个问题这些东西为什么不是直接变成 $.body,$.head,$.win 上,这样似乎更好用点。

cssmagic commented 9 years ago

is$Element的使用场景是?

内部会用到。但业务场景一时想不起来了。

cssmagic commented 9 years ago

可以加上$root和$head。

$root 貌似就是 $doc

$head 在业务中不常用,所以没有加。

但是有个问题这些东西为什么不是直接变成 $.body,$.head,$.win 上,这样似乎更好用点。

只是想统一挂载到 _ 这个命名空间上,然后所有接口的形式保持一致(_.{module}.{api})。

hax commented 9 years ago

$root是$(document.documentElement) $head偶尔会用,插个样式表、脚本什么的

我想既然是$xxx,前提是有zepto/jquery,那么放在$的命名空间上更合理些吧。这样也不需要_的存在。但也许不好属于这个repo了。

cssmagic commented 9 years ago

$root是$(document.documentElement)

那跟现在的 _.dom.$doc 是一样的。

$head偶尔会用,插个样式表、脚本什么的

如果做业务开发的同学有这方面需求,会考虑提供一个高层次的接口来做这个,尽量不让业务层自己做这些事。(BTW,插脚本可以用 Zepto/jQuery 的 $.getScript()。)

我想既然是$xxx,前提是有zepto/jquery,那么放在$的命名空间上更合理些吧。这样也不需要 _ 的存在。但也许不好属于这个repo了。

目前这样的命名(_.dom.$xxx)单纯是为了接口的一致性考虑。

hax commented 9 years ago

我以为$doc$(document) ...

cssmagic commented 9 years ago

我错了……

我会改成这样:

$doc = $(document)
$root = $(document.documentElement)