LINUX.ORG.RU

Получить список пользовательских переменных js

 , ,


0

1

Пишу в порядке обучения минификатор js кода убрать всё лишнее готово, но ещё хочется ещё сжать путём укорачивания имён пользовательских идентификаторов как то так

in:

var monstrLongLongIdentificator = {
bla:'start',
blabla:'start'
};
var result = '';

//....

for(var par i monstrLongLongidentificator){
   if(monstrLongLongIdentificator[i] === 'start'){
      //....
      return result;
   };
   if(monstrLongLongIdentificator === 'end'){
      //....
      return result;
   };
};

//....
# out:
var I0 = {
I1:'start',
I2:'start'
};
var I3
//....
for(var I4 i I0){
   if(I0[I4] === 'start'){
      //....
      return I3;
   };
   if(I0 === 'end'){
      //....
      return I3;
   };
};

//....

Так вот сначала подумал взять список идентификаторов типа Object/new/in/for и прочее прочее и потом игнорируя их выискивать идентификаторы игнорируя строки не игнорируя строки в ['скобках']. Сделал большую часть, но тут подумалось (сейчас всплывёт куча камушков), а может как можно средствами node.js получить все пользовательские идентификаторы из сценария, или модули для этого есть какие, что бы их все хоп в массив и потом просто заменить на укороченные идентификаторы? Даже некая обфускация получается.

★★★★★

Получить а какие конкретно нужны? Из глобала легко получить

for(i in global){...}
Только надо отфильтровать нативные Можно рекурсивно обойти все объекты. В замыканиях хз как получить имена.

nuboquest ()
Ответ на: комментарий от nuboquest

а какие конкретно нужны?

Всё пользовательское исключая намеренно заданные и стандартные + отдельно как то библиотечные. Правда надо тогда ещё рекурсивно все модули обрабатывать иначе работать ничего не будет. Хотя..

Dron ★★★★★ ()
Ответ на: комментарий от Dron

На самом деле даже «фирминные» минификаторы глючат, и порой приводят к трудноуловимым багам, к тому же многие налагают сильные ограничения на написание кода. Это все говно, я считаю, большого профита этим не добьешся. JS и так по скорости уже сишку догоняет, а это все онанизм. Основные тормоза не тут, а кривой архитектуре приложения, как правило.

А с твоими микрооптимизациями тыт только гемор поимееешь, гарантирую. JS — далеко не самый удобный ЯП для статического анализа, это тебе не хаскелек какой-нибудь сраный, а полноценный ЯП

nuboquest ()

https://github.com/mishoo/UglifyJS2

Проперти нельзя сокращать. Можно ведь объект экспортировать и кто-нибудь его снаружи изменит. Имена функция наоборот, можно.

Файлы парсятся экспримой или акорном, и работа идет с AST.

А вообще, лучше смотреть готовые проекты и не тратить время на собственный бесполезный и кривой велосипед. Лучше где-нибудь тикеты пофиксите.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Проперти нельзя сокращать. Можно ведь объект экспортировать и кто-нибудь его снаружи изменит.

Тьфу ты, точно. Блин. Ну да ладно.

А вообще, лучше смотреть готовые проекты и не тратить время на собственный бесполезный и кривой велосипед.

Да ну, мне интересно, руки/голову набивать надо, а то ещё на детских ошибках сливаюсь.

Лучше где-нибудь тикеты пофиксите.

Рано мне ещё править чужое. Нет пока хорошего понимания языка. Как сказал выше сливаюсь на детских ошибках.

Dron ★★★★★ ()
Ответ на: комментарий от nuboquest

А с твоими микрооптимизациями тыт только гемор поимееешь, гарантирую.

Уже поимел даже простым «убрать табы и пробелы».

Это все говно, я считаю, большого профита этим не добьешся.

Тут профитов и нет, обучение/интерес/фор фан ::)

Dron ★★★★★ ()
Ответ на: комментарий от Dron

За кривые коммиты никто в грубой форме посылать не будет. Может даже помогут. Просто с углифаетом вы будете в собственном соку вариться - задача сложная, толку мало.

Vit ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.