Javascript.RU

Google Closure Compiler в деталях

Update: Более новый материал по этой теме находится по адресу https://learn.javascript.ru/multi-insert.

Этот раздел посвящен Google Closure Compiler.

Чтобы его написать, мне пришлось буквально разобрать компилятор по косточкам, благо все сырцы в наличии есть. И, как оказалось, оно того стоило.

Инструмент мощный, сложный (поначалу), парой слов тут не отделаешься. Надеюсь, что после прочтения данного раздела он станет для вас простым.


Автор: Гость (не зарегистрирован), дата: 30 ноября, 2009 - 18:55
#permalink

1. можно ли как-то заставить гугл компилятор(или только переписав изрядно JAVA сорцы) при компиляции запретить некоторые функции javascript на свое усмотрение (или даже методы объектов), например запретить использование eval или document.getElementByID

2. можно ли задать ему шаблон, который нужно использовать в момент минификации. Например, попросить префиксировать все функции/объекты словом "development_"
чтобы поддерживались альтернитивные синтаксисы функций function myFunction -> function development_myFunction и myFunction: function() -> development_myFunction: function()

спасибо


Автор: Илья Кантор, дата: 30 ноября, 2009 - 22:02
#permalink

1. Да, можно, причем никаких патчей для этого не нужно. Свой проход компилятора.
Причем, этот проход можно добавить в качестве опции (там есть такая, свои проходы) в MyCompilerRunner, т.к. он независим.

2. Шаблон - нет, операции идут над деревом кода. А вот создать аналогичные функции с development_ - конечно, можно. Похожие действия выполняются в проходе, обрабатывающем exportSymbol.


Автор: Riim, дата: 11 декабря, 2009 - 13:40
#permalink

Никак не могу найти, как отключить перенос строк или указать побольше (в YUICompressor-е для этого есть флаг --line-break). Подскажите, если кто знает.


Автор: Илья Кантор, дата: 12 декабря, 2009 - 11:55
#permalink

Написан же флаг, во введении --formatting PRETTY_PRINT


Автор: Riim, дата: 12 декабря, 2009 - 16:32
#permalink

При этом флаге он вообще все переносит, а нужно наоборот, что бы все в одну линию было.


Автор: Илья Кантор, дата: 12 декабря, 2009 - 19:24
#permalink

В одну линию - по умолчанию ведь ?


Автор: Гость (не зарегистрирован), дата: 7 мая, 2010 - 12:31
#permalink

По умолчанию бьётся на строки где-то по 550 символов длиной


Автор: farhan (не зарегистрирован), дата: 22 марта, 2020 - 16:14
#permalink

Thanks, that was a really cool read!
streaming tv options


Автор: farhan (не зарегистрирован), дата: 28 марта, 2020 - 19:03
#permalink

This is such a great resource that you are providing and you give it away for free.
buy quality backlinks


Автор: cooli0, дата: 29 января, 2010 - 05:57
#permalink

Илья, низкий Вам поклон за проделанную работу. Всё очень доступно и интересно написано. Прочел все статьи.


Автор: АлександрМ (не зарегистрирован), дата: 26 января, 2011 - 12:22
#permalink

Однако поблагодарить вас за этот труд я считаю нужным!
Искренне благодарен. Спасибо.


Автор: Leadaxe (не зарегистрирован), дата: 14 февраля, 2011 - 00:50
#permalink

в личный список избранных руководств! низкий поклон за проделаную работу


Автор: FiMko, дата: 26 июля, 2011 - 21:14
#permalink

Проделанная работа вызывает изумление и восторг!
Илья, огромное вам человеческое спасибо!


Автор: Online-casinoz.ru, дата: 4 марта, 2012 - 14:51
#permalink

интересная статья ! +


Автор: Гость (не зарегистрирован), дата: 22 ноября, 2012 - 02:11
#permalink

Здравствуйте. Вопрос такой: можно ли как то декомпилировать этот код? То есть хотя бы короткие пременные вернуть в прежний вид, или хотя бы как то теоритически объясните как возможно привести закомпиленный код в читабельный вид.


Автор: Denisko-Redisko, дата: 14 февраля, 2013 - 21:17
#permalink

На следующем примере, за счет инлайнинга констант closure compiler увеличивает размер исходника почти в три раза (вообще, на сколько угодно, зависит от длины строк bigString1 и bigString2):

var bigString1 = ".....";
var bigString2 = ".....";
return {
  all: bigString1 + " " + bigString2,
  bs1: bigString1,
  bs2: bigString2,
  bs1LC: bigString1.toLowerCase(),
  bs2LC: bigString2.toLowerCase(),
}

Автор: Гость (не зарегистрирован), дата: 28 мая, 2013 - 10:11
#permalink

Он умеет сжимать CSS? И что вообще есть для сжатия CSS? Что лучше сжимает?


Автор: Гость (не зарегистрирован), дата: 6 июня, 2013 - 20:49
#permalink

Даже с ADVANCED_OPTIMIZATIONS сэкономил всего 7%. Т.е. смысла использовать нету.
Если изначально код нормально написан то там нечего сжимать.

Правда packer сжал почти на 50%. Но там закодирование стоит, без него только на 65%, но все равно на много лучше гугла.

Странно очень.


Автор: Гость (не зарегистрирован), дата: 13 августа, 2013 - 17:50
#permalink

Без всяких флагов сжал из 352905 байт в 123744. А нормально написанный код как раз имеет не малый размер за счет комментариев кода.


Автор: Vykolin, дата: 2 мая, 2019 - 14:46
#permalink

привет всем на сайте https://safesale.in.ua/ пытались сжать файлы и код, но потом выплывали ошибки и нелогичная структура сайта


Автор: pimoko (не зарегистрирован), дата: 3 января, 2020 - 10:15
#permalink

I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. enable flash in chrome


Автор: johnbsa (не зарегистрирован), дата: 5 марта, 2020 - 12:58
#permalink

Thanks for the nice blog. It was very useful for me. I'm happy I found this blog. Thank you for sharing with us,I too always learn something new from your post.
https://arkserverhosting.co.uk
portable hairdryer
crime scene cleanup
mini carpet cleaner
trulylovelykitchen


Автор: osama shk (не зарегистрирован), дата: 24 марта, 2020 - 14:13
#permalink

An fascinating discussion is value comment. I think that it is best to write extra on this matter, it won’t be a taboo topic however generally people are not enough to talk on such topics. To the next. Cheers
結婚指輪


Автор: osama shk (не зарегистрирован), дата: 24 марта, 2020 - 16:26
#permalink

I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business.
婚約指輪


Автор: osama shk (не зарегистрирован), дата: 24 марта, 2020 - 21:42
#permalink

This is a great post. I like this topic.This site has lots of advantage.I found many interesting things from this site. It helps me in many ways.Thanks for posting this again.
結婚指輪


Автор: osama shk (не зарегистрирован), дата: 24 марта, 2020 - 22:56
#permalink

Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have.
ハワイアンジュエリー 結婚指輪


Автор: osama shk (не зарегистрирован), дата: 25 марта, 2020 - 23:22
#permalink

You have a good point here!I totally agree with what you have said!!Thanks for sharing your views...hope more people will read this article!!!
結婚指輪 手作り


Автор: osama shk (не зарегистрирован), дата: 26 марта, 2020 - 00:17
#permalink

It’s appropriate time to make some plans for the future and it is time to be happy. I have read this post and if I could I wish to suggest you few interesting things or advice. Perhaps you could write next articles referring to this article. I desire to read even more things about it!
結婚指輪 福岡


Автор: osama shk (не зарегистрирован), дата: 20 апреля, 2020 - 21:38
#permalink

Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time. Thank you and good luck.
pemf devices


Автор: osama shk (не зарегистрирован), дата: 20 апреля, 2020 - 22:42
#permalink

Great content material and great layout. Your website deserves all of the positive feedback it’s been getting.
pemf device


Автор: Гостьusd to inr (не зарегистрирован), дата: 26 апреля, 2020 - 21:15
#permalink

I have read your blog it is very helpful for me. I want to say thanks to you. I have bookmark your site for future updates.


Автор: online-seo.nl (не зарегистрирован), дата: 8 июня, 2020 - 17:58
#permalink

Thanks so much for this information. I have to let you know I concur on several of the points you make here and others may require some further review, but I can see your viewpoint.


Автор: bluepeaco (не зарегистрирован), дата: 19 июня, 2020 - 16:59
#permalink

Really a great addition. I have read this marvelous post. Thanks for sharing information about it. I really like that. Thanks so lot for your convene.
click here


Автор: johnss (не зарегистрирован), дата: 19 августа, 2020 - 14:45
#permalink

This was really an interesting topic and I kinda agree with what you have mentioned here!


Автор: john bond (не зарегистрирован), дата: 21 августа, 2020 - 17:55
#permalink

I just found this blog and have high hopes for it to continue. Keep up the great work, its hard to find good ones. I have added to my favorites. Thank You.
click here


Автор: john bond (не зарегистрирован), дата: 21 августа, 2020 - 17:56
#permalink

I just found this blog and have high hopes for it to continue. Keep up the great work, its hard to find good ones. I have added to my favorites. Thank You.
click here


Автор: john bond (не зарегистрирован), дата: 26 августа, 2020 - 12:45
#permalink

Thank you for taking the time to publish this information very useful!
Cryptocurrency Price Widget


Автор: osama shk (не зарегистрирован), дата: 7 сентября, 2020 - 14:07
#permalink

I just want to let you know that I just check out your site and I find it very interesting and informative..
go here


Автор: osama shk (не зарегистрирован), дата: 8 сентября, 2020 - 14:47
#permalink

I was surfing net and fortunately came across this site and found very interesting stuff here. Its really fun to read. I enjoyed a lot. Thanks for sharing this wonderful information.
Estimators online


Автор: osama shk (не зарегистрирован), дата: 15 сентября, 2020 - 12:34
#permalink

This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog..
seo


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
8 + 10 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum