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

FrontTalks Meetup #2. 2013: Михаил Давыдов – Ja...

FrontTalks Meetup #2. 2013: Михаил Давыдов – JavaScript на фронте и в тылу

Какую технологию использовать внутреннюю или "народную"? Node.js в продакшене? В докладе я расскажу о жизни JavaScript разработчика в Яндексе.

Avatar for FrontTalks Conference

FrontTalks Conference

August 18, 2013

More Decks by FrontTalks Conference

Other Decks in Programming

Transcript

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

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

    • XML+XSLT=HTML • XML+XSLT=Все что душе угодно… • XMLHttpRequest
  3. 9 <?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. 10 <?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> XScript+Lua/JS
  5. 11 Что не так • Lua/JS + XML • "Программирование на XML"

    • XScript не любили • XSLT тормозил
  6. А как дела на фронте? • BEM – верстка –  Архитектура

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

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

    Из важных частей y5 сделали плагины –  jQuery не нужно дополнительно обучать –  Нет расходов на поддержку y5 –  Огромное сообщество • BEM –  BEMJSON –  Архитектура не изменилась –  Библиотека блоков не изменилась
  9. Что из ноды используем • Портированные модули –  Работа с "особыми"

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

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

    –  Использует разные минификаторы • SVGO –  Тонкая оптимизация SVG https://github.com/svg/svgo https://github.com/imgo/imgo
  12. Что же мы получили • Практически 100% JavaScript –  Инструменты – 

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