Какие модули mootools я больше использую?
Все модули mootools more включены в мое приложение, но я хотел бы удалить те, которые я не использую. Есть ли быстрый способ узнать, какие модули я использую, начиная со скрипта, в зависимости от mootools?
2 ответа
Боюсь, нелегкий путь. вы можете шпионить за вещами во время работы вашего приложения, так что вы можете получить некоторую статистику использования / покрытия, но поскольку mootools является прототипом, расширения Array / String / Function / Date и т. д., которые могут сделать более сложные, могут быть более сложными.
Чтобы поймать классы, которые были созданы, создайте список и используйте что-то вроде этого:
Object.monitor = function(obj, match){
var keys = (function(obj){
// include from prototype also, any function.
var keys = [], key;
for (key in obj) typeof obj[key] === 'function' && keys.push(key);
return keys;
}(obj)),
log = function(what, method){
// more use goes red in console.
console.log(obj, method, what);
},
counters = {};
keys.forEach(function(key){
var orig = obj[key];
Object.defineProperty(obj, key, {
get: function(){
key in counters || (counters[key] = 0);
counters[key]++;
key.test(match) && log(counters[key], key);
return orig;
}
});
});
};
var protos = [Fx.Reveal, Fx.Slide, Request.JSONP]; // etc etc - stuff you are unsure of.
protos.forEach(function(klass){
Object.monitor(klass.prototype, /\$constructor/);
});
new Request.JSONP({});
как только любой из этих элементов будет создан, ИЛИ расширен, на конструктор будут ссылаться, и вы получите журнал для его отображения. http://jsfiddle.net/dimitar/8nCe6/ - это будет экземпляр Request.JSONP()
,
Я написал Object.monitor
шпионить за методами, вызываемыми в конкретном случае, но применяется тот же принцип. Форматирование консоли хорошо работает только в FireBug и WebInspector - родная консоль FF должна быть простой.
http://fragged.org/spy-on-any-method-on-an-object-and-profile-number-of-times-called_1661.html
Вы можете использовать это, чтобы шпионить, скажем, Array.prototype
или что-то подобное, но сложность заключается в сложности кода больше. Трудно, чтобы действительно прибить это:(
вероятно, проще объединить все ваши сценарии, КРОМЕ для mootools - больше, чем grep для известных классов / методов из типов.
Вы сжимали файл?
Если вы не удалили исходные комментарии из вашей сборки, в верхней части файла должна быть ссылка со списком включенных пакетов и ссылка. например
// Load this file's selection again by visiting: http://mootools.net/more/065f2f092ece4e3b32bb5214464cf926
Если у вас нет ссылки, но включены другие комментарии, выполните поиск файла script:
и вы должны получить список всех включенных пакетов.