Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.08.2015, 09:42
Аватар для kolka
Кандидат Javascript-наук
Отправить личное сообщение для kolka Посмотреть профиль Найти все сообщения от kolka
 
Регистрация: 07.06.2010
Сообщений: 146

Сообщение от nohuhu Посмотреть сообщение
Я не большой специалист в Cmd, но с ребятами общался на эту тему. Весь код JavaScript парсится, токенизируется лексером и превращается в AST дерево. Потом по нему проходятся оптимизатором, пылесосом и добавляют ложку дёгтя. В конечной стадии AST дерево форматируется обратно в JavaScript код. Здесь важно понимать, что текст скомпилированного кода не имеет прямого отношения к изначальному, он проходит через бинарную стадию и оригинальный исходник теряется. Поэтому форматирование неизбежно.



А и не найдёте. Есть несколько таких мест, в которых наш компилятор вставляет "лишние" точки с запятой. Причина проста, хотя и не очевидна: в JavaScript есть одна говнофича под названием Automatic Semicolon Injection. Это когда вы можете забыть точку с запятой в конце строки, а код вроде работает и всё какбэ хорошо.

Спасибо за развернутый ответ.
Очень полезно.
Ответить с цитированием
  #12 (permalink)  
Старый 13.08.2015, 10:21
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Сообщение от nohuhu Посмотреть сообщение
А вообще до меня только что дошло - зачем вы вообще гоняете JSHint на сборке? Это боевой код, как правило минимизированный. Какая разница, как он выглядит?
Есть минимизированная сборка, а есть нет (debug версия используемая для разработки в том числе).. вот она и прогоняется через jshint чтоб еще раз убедиться в валидности кода.
Ответить с цитированием
  #13 (permalink)  
Старый 13.08.2015, 21:10
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от siber-biber Посмотреть сообщение
Есть минимизированная сборка, а есть нет (debug версия используемая для разработки в том числе).. вот она и прогоняется через jshint чтоб еще раз убедиться в валидности кода.
Кмк это избыточный шаг, я не вижу чем бы он мог быть полезен. Cmd парсит и разбирает весь JavaScript код в проекте, включая фреймворк и все сторонние библиотеки, буде таковые находятся. Если в коде есть синтаксические ошибки, парсинг провалится и на выход не поступит ничего. Если ошибок нет, то собранный код генерируется из AST дерева и гарантированно корректен - даже более корректен, чем исходный (см. выше).

Зачем тут дополнительный валидатор?
Ответить с цитированием
  #14 (permalink)  
Старый 14.08.2015, 06:13
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Может и так.. мы перешли на современный вариант компиляций в sencha cmd буквально 2 недели как.. до последнего юзали старую форму запуска:
sencha build -p foo.jsb

а в том режиме никакой магии не происходило ..тупо конкатенация файлов. Поэтому некоторые вещи остались оттуда и еще будут пересмотрены..

jshint еще проверяет наличие забытых debugger ..и этим мы тоже пользуемся. sencha cmd это тоже делает при компиляции ..но выдает warning и успешно все компиляет чего нам не хотелось бы.
Ради одного поиска debugger конечно мы не оставим jshint в этом тесте...
Ответить с цитированием
  #15 (permalink)  
Старый 14.08.2015, 22:06
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Cmd оставляет debugger в отладочных и тестовых сборках. При сборке в боевой код полученный файл прогоняется через YUI Compressor, который взрывается на debugger и сборка обламывается.

Так что спите спокойно. :)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ExtJS и серверный фреймверк - как лучше сделать? xintrea ExtJS 20 22.05.2015 15:57
Sencha cmd app custom folder Rastiniak ExtJS 7 21.04.2015 10:38
sencha app watch Не работает aikus ExtJS 6 05.08.2014 15:25
D'n'D html5 Общие вопросы gJam Элементы интерфейса 2 22.07.2012 23:06
Общие вопросы по Firebug monolithed Оффтопик 3 24.11.2010 11:36