Большинство из вас, вероятно, знакомы с этим небольшим кодом отслеживания, предлагаемым Google Analytics.
<script>
(
function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
}
)(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-00000000-0', 'auto');
ga('send', 'pageview');
</script>
Интересная часть состоит в том, что эта небольшая выдержка содержит аргументы, которые образуют слово изограмма. Этот script также использует аргументы для объявления переменных, чтобы сбрить некоторые биты из окончательного размера файла. Возможно, вы не использовали бы этот шаблон при написании кода (?), Поэтому мой вопрос: как Google минимизирует свой код и эти методы доступны для простых смертных?
Я нашел онлайн этот пример Стивена Морли, который включает в себя код, который выглядит как что-то, что вы пишете, прежде чем его использовать. Я взял этот код и запустил его через Google очень собственный Closure Compiler в расширенной оптимизации. Как и ожидалось, полученный код не похож на фактический script, используемый Google Analytics.
(function(){window.b="ga";"ga"in window||(window.a=function(){window.a.q.push(arguments)},window.a.q=[]);window.a.c=(new Date).getTime();var c=document.createElement("script");c.src="//www.google-analytics.com/analytics.js";c.async=!0;var d=document.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d)})();
На этот раз код меньше DRY и больше, даже без двух дополнительных команд.
Итак, чтобы уточнить, мне любопытно, как инженеры Google пришли к вышеуказанному результату (я не думаю, что их код на самом деле похож на тот, что приведен в примере Стивена), и может ли этот процесс быть реплицирован, даже если вы не являетесь частью Google? Заранее благодарю вас!