Какие модули 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: и вы должны получить список всех включенных пакетов.

Другие вопросы по тегам