Git Product home page Git Product logo

Comments (9)

musicode avatar musicode commented on July 22, 2024

addClass中关于多个class以空格分割的问题,我觉得是为性能考虑吧,毕竟多次调用 addClass 看起来也不爽,折衷一下,可以实现为 addClass(class1, class2, ...),这样也清晰了

from esui.

otakustay avatar otakustay commented on July 22, 2024

addClassremoveClass接受多个class是可以理解的,问题就是应用的场景有多少(从控件的抽象体系来看)

但是hasClass多个class似乎并不是一个很好的设计,其接口的理解性很低,多个class之间是OR还是AND的关系?

from esui.

leeight avatar leeight commented on July 22, 2024

题外话:如果现在lib中的东西是原封不动从tangram弄过来的话,这大概是我第一次认真地看tangram的源码,只想吐槽这代码质量是有多差……

历史问题,这些代码都是好几年前的了,可以理解的。

有些实现尽可能采用浏览器的实现,比如addClass,hasClass,bind之类的?

from esui.

errorrik avatar errorrik commented on July 22, 2024

我觉得尽量简单点,我们是为ui库做lib抽象,不是为业务开发做lib。尽量采用浏览器实现我觉得也是OK的(如classList)

from esui.

errorrik avatar errorrik commented on July 22, 2024

还有我稍微解释下,正则用new RegExp(\x24)不用/...$/原因是ctpl发现$就会去做变量替换,所以tangram中基本所有正则都是new

from esui.

otakustay avatar otakustay commented on July 22, 2024

@errorrik 所以我可以修改一下这里的实现,用正则直接量是吧?

@leeight @errorrik 关于使用浏览器原生实现,我思考这个问题没有1年也有个9月了,我的疑惑是,既然还是需要兼容性的实现代码,那么增加一个if分支,额外增加脚本体积,换过来的是什么,一些的性能提升能够成为解决瓶颈的关键吗?(当然显得很牛逼这种理由就不需要了)

from esui.

otakustay avatar otakustay commented on July 22, 2024

补充一下,bind这个函数我会倾向于尽量用原生的实现,是因为原生的bind其实是通过[[TargetFunction]]搞的,一个好处是,单步调试的时候,一次step in就可以跳到原函数去,而不原生实现至少要过一个闭包,step in 按到手酸。而一般调试都是在支持bind的浏览器下玩的……

from esui.

errorrik avatar errorrik commented on July 22, 2024

@otakustay
嗯,是的,可以用正则直接量。我自己也很烦new RegExp,性能又差又难看

from esui.

otakustay avatar otakustay commented on July 22, 2024

d3354b8 做了下代码的清理:

  • 正则用直接量
  • format只支持${name}形式的
  • hasClassaddClassremoveClass只支持一个className
  • 添加toggleClass
  • inherits去掉__typeextends这几个东西的逻辑
  • bind接口与Function.prototype.bind一致
  • 保留pagedate二级命名空间

from esui.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.