Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTML5 Camp - JavaScript на фронте и в тылу

Mikhail Davydov
September 23, 2013

HTML5 Camp - JavaScript на фронте и в тылу

Доклад об опыте использования JavaScript в клиентской и серверной разработке в Яндексе.

Video https://www.techdays.ru/videos/6725.html

Mikhail Davydov

September 23, 2013
Tweet

More Decks by Mikhail Davydov

Other Decks in Education

Transcript

  1. Backend   Backend   Backend   Back-­‐   Front-­‐  

    Схема типичного сервиса Tools  
  2. XML – формат де-факто для веб • XML DTD • XML Schema

    • XML+XSLT=HTML • XML+XSLT=Все что душе угодно… • XMLHttpRequest
  3. 10 <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="page.xsl"?> <page xmlns:x="..." xmlns:xi="...">

    <xscript all-threaded="no"/> <x:http> <method>getHttp</method> <param type="string">http://host/</param> <param name="tag">5</param> </x:http> </page> Код! Код! Запрос к http://host/?tag=5 !
  4. 11 <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="page.xsl"?> <page xmlns:x="..." xmlns:xi="...">

    <xscript all-threaded="no"/> <x:http> <method>getHttp</method> <param type="string">http://host/</param> <param name="tag">5</param> </x:http> </page> Код! Код! Запрос к http://host/?tag=5 !
  5. 12 Проблемы у разработчиков • XScript не любили –  И работал

    не очень быстро • XSLT тормозил • "Императивное мышление"
  6. 14 <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="page.xsl"?> <page xmlns:x="..." xmlns:xi="...">

    <lua><![CDATA[ local value = true xscript.state:setBool('pewpew', value) print('ololo') ]]></lua> </page> Код!
  7. 15 Все еще проблемы? • Lua/JS в XML – о_О • А

    подсветка синтаксиса? • Сложности с восприятием кода • Часть кода писали на XML • Любое расширение – бинарник • Маленькое сообщество
  8. А как дела на фронте? • BEM –  Архитектура <3 – 

    Библиотека компонентов <3 • y5 –  "Свой jQuery" –  Нужно обучать новичков –  Маленькое комунити –  Плагины <3
  9. Инструменты • ycssjs –  Сборка CSS и JS –  Оптимизация CSS

    и JS –  Регулярки и Perl… • Makefile, bash –  Запуск необходимых задач –  Компоновка CSS и JS • И другие инструменты…
  10. Что изменилось на фронтах • Отказались от y5 в пользу jQuery

    –  Из важных частей y5 сделали плагины –  jQuery не нужно дополнительно обучать –  Нет расходов на поддержку y5 –  Огромное сообщество • BEM –  BEMJSON –  Архитектура не изменилась –  Библиотека блоков не изменилась
  11. Что изменилось на фронт-бэке • XScript – deprecated –  Старые проекты

    поддерживаются –  Новые пишутся на Node или XScript JS –  Стараются отходить от XML в сторону JS • Node.js <3 –  Были проблемы с версиями –  Внутренний npm репозиторий –  Портировали важные модули XScript
  12. Что из ноды используем • Портированные модули –  Работа с "особыми"

    куками –  Определение языка пользователя –  Определение девайса • Express.js • Cluster • Promise: Q или When • Streams & Buffers
  13. Borschik • Сборка текстовых файлов • Минимизация CSS и JS – CSSO – UglifyJS

    • Замена относительных путей • «Заморозка» картинок https://github.com/veged/borschik
  14. Оптимизация графики: IMGO, SVGO • IMGO –  Тонкая оптимизация растровых изображений

    –  Использует разные минификаторы • SVGO –  Тонкая оптимизация SVG https://github.com/svg/svgo https://github.com/imgo/imgo
  15. LMD – ленивая декларация модулей • Организация модульности –  CommonJS/Modules 1.0

    • Сборка CommonJS/Modules • Организация сборок –  Сборок бывает очень много: dev, prod+ru, prod+… • Встроенная аналитика –  Статическая (при сборке) –  Динамическая https://github.com/azproduction/lmd
  16. Что же мы получили • Практически 100% JavaScript –  Инструменты – 

    Node.js –  Makefile отчасти для сборки пакетов • Использование народных средств –  jQuery –  Grunt.js –  Backbone, underscore… • Open-Source – мы открыты! –  BEM, Borschik, CSSO, IMGO, SVGO, LMD