-
Notifications
You must be signed in to change notification settings - Fork 194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于lib的几个问题 #1
Comments
addClass中关于多个class以空格分割的问题,我觉得是为性能考虑吧,毕竟多次调用 addClass 看起来也不爽,折衷一下,可以实现为 addClass(class1, class2, ...),这样也清晰了 |
但是 |
历史问题,这些代码都是好几年前的了,可以理解的。 有些实现尽可能采用浏览器的实现,比如addClass,hasClass,bind之类的? |
我觉得尽量简单点,我们是为ui库做lib抽象,不是为业务开发做lib。尽量采用浏览器实现我觉得也是OK的(如classList) |
还有我稍微解释下,正则用new RegExp(\x24)不用/...$/原因是ctpl发现$就会去做变量替换,所以tangram中基本所有正则都是new |
补充一下, |
@otakustay |
在 d3354b8 做了下代码的清理:
|
看了下lib的函数,总结一下几个问题:
保持函数的简单性
比如
bind
函数,原实现是可以从scope
中取fun
为名字的方法的,我认为这是原tangram为了某些业务线的需求而产生的功能,我们不应该鼓励和提倡这种用法,因此我去掉了。同样的问题在很多函数中都存在,例如:
format
函数支持${name}
和{index}
两种形式,是否只支持${name}
就OK了hasClass
、addClass
和removeClass
支持多个class以空格分隔,确实这功能非常强大,jQuery也提供这一功能,但在一个UI控件体系中,代码都是可掌握的高质量代码,是否有必要提供这种 看似便利实则可能导致混乱和不一致性 的功能关于继承
tangram的继承实现是没错的,但是它提供了一些额外的东西,包括:
__type
属性表示类型superClass
属性引用基类extends
方法生产子类其中
superClass
比较广泛,可以认可(虽然我个人很反对这一做法),但是__type
和extends
从我的角度来看是完全没有存在的意义的,是否还需要保留。关于深层次结构嵌套
现有的lib其实是比较混乱的,语言层面的东西(
trim
、clone
等)、字符串层面的东西(encodeHTML
等)和DOM层面的东西(g
、hasClass
等)混在一个下面,这种设计是没有问题的,我个人也很推崇这种,毕竟没多少东西,不必要再细分。但是奇怪的是,有一个
page
二级“命名空间”,这货的存在意义是什么……?题外话:如果现在lib中的东西是原封不动从tangram弄过来的话,这大概是我第一次认真地看tangram的源码,只想吐槽这代码质量是有多差……
The text was updated successfully, but these errors were encountered: