使用 grep 或类似工具查找对 Dojo 和 Mootools 的调用

Posted

技术标签:

【中文标题】使用 grep 或类似工具查找对 Dojo 和 Mootools 的调用【英文标题】:Find calls to Dojo and Mootools using grep or similar 【发布时间】:2013-01-01 22:29:00 【问题描述】:

我继承了一个使用 Dojo、Mootools 和 JQuery 的项目,并在几乎每个页面上加载所有三个库。由于这是一个 Drupal 项目,它使用 JQuery 作为默认库,我想保留 JQuery 并尽可能将 Dojo 和 Mootools 部分转换为 JQuery。我相信它正在使用以下版本(请参阅我对 Christophe 的评论回复)

jQuery 1.5.1 Mootools 1.2.5. 道场 1.6.1

现在我只是想确定 Mootools 和 Dojo 的用途。理想情况下,我想找到一个正则表达式

对 Mootools 或 Dojo 的调用进行命中,但对 JQuery 不进行命中(或在某种程度上过滤它们) 误报方面的错误

作为一个快速检查,我使用这个正则表达式进行了搜索:(\$\(|[Mm]ootool|[Dd]ojo)

当然,这捕获了对 JQuery 的大多数调用,但只是为了了解我必须查看多少个文件。我在 258 个文件中有 5913 个匹配项

如果我只搜索\$\(,我会在 221 个文件中找到 4081 个匹配项。这些可能绝大多数是 JQuery,但只是想找到一种减少我必须查看的实例数量的好方法。

【问题讨论】:

dojo/Mootools 有哪些版本?例如 dojo 1.7+ 与 dojo 1.6 完全不同- Mootools 文件是 mootools-1.2.5-core-yc.js 所以我猜是 1.2.5 Dojo - 我猜是 1.6.1 因为我在 dojo.xd.js 文件中找到了这个: dojo.version=major:1,minor:6,patch:1 谢谢克里斯托夫 另外,mootools 是典型的。对 $ 的调用并不重要——你需要担心在数组、字符串、函数等对象上调用的方法,因为它们不会被捕获。另请参阅softwareishard.com/blog/firebug/firebug-tip-log-function-calls - 您现在可以在 FB 中记录函数调用。如果您想捕获所有 mootools $ 呼叫,那么您希望将呼叫记录到 document.id 而不是 $。如果在加载时已经分配了 $,mootools 将不会接管它。 感谢 Dimitar。我假设 $ 是为 JQuery 命名空间保留的,因为 JQuery 在每个页面上都加载并且肯定正在使用它。所以正如你所说,我认为 mootools 不应该使用它。还要感谢记录呼叫的想法 - 唯一的问题是我必须加载网站上的每个页面才能知道在哪里调用什么,对吗?我正在尝试找到一种不需要的方法(这是一个非常大的站点)。不过感谢您的想法 - 我可以访问一个样本,看看它揭示了什么。 PS:加载顺序是dojo、jquery、mootools。 【参考方案1】:

你会更容易删除这些库的包含并使用 chrome/firefox 逐页检查错误,而不是开发一些东西来查找对 MooTools 的调用。

另一种方法。修改 Mootools/Dojo 库以记录每次使用它们的时间,以及它们的使用对象/位置。对服务器的简单 ajax 调用就足够了。

【讨论】:

这是我的备份,但该站点有 1000 多个页面,因此这样做是一个相当长的过程,而且由于我实际上不太了解该站点,因此我可能不会注意到有些javascript 效果已停止工作。换句话说,如果 dojo 功能优雅地降级,我怎么知道?因此,我不仅要访问每个页面,还必须仔细比较实时站点和开发站点上的功能(悬停效果、链接点击等),以查看缺少的内容。这是一项艰巨的质量检查任务。 嗯...这就是你的任务的重要性。 是的,是的……我可能需要收取更多费用;-)

以上是关于使用 grep 或类似工具查找对 Dojo 和 Mootools 的调用的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令之在文件中查找符合指定条件的字符串egrep

Windows 下类似于 grep 查找字符串的命令 [转帖]

Linux中的find和grep命令对查找到的文件如何处理啊

正则介绍grep

文本处理工具grep,egrep和正则表达式的使用

等效于 Jquery/Backbone.js 中的 Dgrid/Store(Dojo 工具包)