在一个丑陋的代码库中查找jQuery UI的用法

Dan*_*ola 19 jquery jquery-ui

我最近继承了为生产网站维护一个庞大而丑陋的代码库.把你的眼睛弄得很难看.虽然它很大,但它主要是PHP代码,除了UI中的一些"ajaxy"之外,它没有太多的JS.

我们当前的主要问题是网站太重了.主页目前的重量为1.6 Mb,所以我试图清理一些东西.

其中一个主要的浪费是每个页面都包含jQuery UI库,但我认为它根本不被使用.它绝对不会在主页和大多数页面中使用,所以我只想包含必要的内容.

我对jQuery并不是很熟悉,我更像是一个原型人,所以我很想知道.有什么我可以搜索的,让我知道jQuery UI在哪里使用?
我正在寻找的是"常见字符串",组件名称等

例如,如果这是scriptaculous,我会寻找像"Draggable","Effect"等等的东西.对jQuery UI的任何建议?

(当然,如果你能想到一种更强大的方法,可以在不破坏所有内容的情况下从不使用它的页面中删除标签,我很乐意听到它)

谢谢!!丹尼尔

Nic*_*ver 11

jQuery UI有一个标准的命名约定,你可以在这里查看小部件/特效的完整列表.与该列表相比,您主要寻找相应的方法:

但是,这是一个很大的问题,如果您的主要目标是减少页面有效负载大小,这应该 没有任何效果.您的用户不应该在每个页面加载时下载,它应该缓存在客户端上,由缓存标头确定,此外,您的脚本应该缩小(下载时已提供的版本)并提供gzip压缩.

此外,如果它是一个选项,我会考虑使用CDN同时使用jQuery和jQuery UI,以及样式表,如果你使用的是默认主题之一.

  • 是的,我使用egrep(或grep -E)在这些行上做了一些事情,所以我可以使用正则表达式来匹配常见的jquery-ui字符串:`egrep -r"\ .draggable \(| \.droppable \(|\.resizable) \(|\.selectable \(|\.sortable \(|\.accordion \(|\.autocomplete \(|\.button \(|\.datepicker \(|\.dialog \(| \.菜单\( |\.progressbar \(|\.slider \(|\.tabs \(|\.tooltip \(|\$\.tidget \("src /`这可能会产生一些误报,但应该可以帮助你那边的路. (8认同)

Eny*_*yby 6

请参阅这篇文章:https://medium.com/software-developer/finding-jquery-ui-usage-in-a-project-b4fbcfc938c8

它用于生成又大又丑的正则表达式。

我用它作为基础并得到下一个正则表达式:

\.\s*(accordion|autocomplete|button|buttonset|datepicker|dialog|menu|progressbar|selectmenu|slider|spinner|tabs|tooltip|effect|switchClass|switchClass|draggable|droppable|mouse|resizable|selectable|sortable|disableSelection|enableSelection|removeUniqueId|scrollParent|uniqueId|zIndex)\s*\(|['"](blind|bounce|clip|drop|explode|fade|fold|highlight|puff|scale|shake|size|slide|transfer|easeInQuad|easeOutQuad|easeInOutQuad|easeInCubic|easeOutCubic|easeInOutCubic|easeInQuart|easeOutQuart|easeInOutQuart|easeInQuint|easeOutQuint|easeInOutQuint|easeInExpo|easeOutExpo|easeInOutExpo|easeInSine|easeOutSine|easeInOutSine|easeInCirc|easeOutCirc|easeInOutCirc|easeInElastic|easeOutElastic|easeInOutElastic|easeInBack|easeOutBack|easeInOutBack|easeInBounce|easeOutBounce|easeInOutBounce)['"]|:(data|focusable|tabbable)|\.ui\b

这里可能有很多误报,但我认为这是一个好的开始。在任何情况下,您都需要手动检查所有匹配项。