javascript on frontend and backend (in russian

45

Upload: mikhail-davydov

Post on 28-Nov-2014

422 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: JavaScript on frontend and backend (in Russian
Page 2: JavaScript on frontend and backend (in Russian

Михаил Давыдов JavaScript разработчик

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

Page 3: JavaScript on frontend and backend (in Russian

Бэк-, Тулзы, Фронт-

Page 4: JavaScript on frontend and backend (in Russian

Backend  

Backend  

Backend  

Back-­‐   Front-­‐  

Схема типичного сервиса

Tools  

Page 5: JavaScript on frontend and backend (in Russian

Эра *ML

Page 6: JavaScript on frontend and backend (in Russian

XML – формат де-факто для веб

• XML DTD • XML Schema • XML+XSLT=HTML • XML+XSLT=Все что душе угодно… • XMLHttpRequest

Page 7: JavaScript on frontend and backend (in Russian

Back-

Page 8: JavaScript on frontend and backend (in Russian

XScript @ Яндекс

Page 9: JavaScript on frontend and backend (in Russian

XScript

• Прослойка фронтэнд↔бэкэндЫ • ЯП на основе XML

– "Все фронтэндеры знают XML и XSL"

• Генерирует XML • +XSL…+XSL=HTML • И еще CORBA

Page 10: JavaScript on frontend and backend (in Russian

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 !

Page 11: JavaScript on frontend and backend (in Russian

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 !

Page 12: JavaScript on frontend and backend (in Russian

12

Проблемы у разработчиков

• XScript не любили –  И работал не очень быстро

• XSLT тормозил • "Императивное мышление"

Page 13: JavaScript on frontend and backend (in Russian

13

XScript+Lua/JS

Page 14: JavaScript on frontend and backend (in Russian

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>

Код!

Page 15: JavaScript on frontend and backend (in Russian

15

Все еще проблемы?

• Lua/JS в XML – о_О • А подсветка синтаксиса? • Сложности с восприятием кода • Часть кода писали на XML • Любое расширение – бинарник • Маленькое сообщество

Page 16: JavaScript on frontend and backend (in Russian

Front-

Page 17: JavaScript on frontend and backend (in Russian

y5+BEM/XML

Page 18: JavaScript on frontend and backend (in Russian

А как дела на фронте?

• BEM –  Архитектура <3 –  Библиотека компонентов <3

• y5 –  "Свой jQuery" –  Нужно обучать новичков –  Маленькое комунити –  Плагины <3

Page 19: JavaScript on frontend and backend (in Russian

Tools

Page 20: JavaScript on frontend and backend (in Russian

Инструменты

• ycssjs –  Сборка CSS и JS –  Оптимизация CSS и JS –  Регулярки и Perl…

• Makefile, bash –  Запуск необходимых задач –  Компоновка CSS и JS

• И другие инструменты…

Page 21: JavaScript on frontend and backend (in Russian

Эра JS*

Page 22: JavaScript on frontend and backend (in Russian

Front-

Page 23: JavaScript on frontend and backend (in Russian

Зачем делать второй jQuery?

Page 24: JavaScript on frontend and backend (in Russian

+

Что изменилось на фронтах

Page 25: JavaScript on frontend and backend (in Russian

Что изменилось на фронтах

• Отказались от y5 в пользу jQuery –  Из важных частей y5 сделали плагины –  jQuery не нужно дополнительно обучать –  Нет расходов на поддержку y5 –  Огромное сообщество

• BEM –  BEMJSON –  Архитектура не изменилась –  Библиотека блоков не изменилась

Page 26: JavaScript on frontend and backend (in Russian

Был постепенный переход на jQuery

Page 27: JavaScript on frontend and backend (in Russian

Сейчас в проекте может быть это

+

Page 28: JavaScript on frontend and backend (in Russian

Back-

Page 29: JavaScript on frontend and backend (in Russian

Что изменилось на фронт-бэке

Page 30: JavaScript on frontend and backend (in Russian

Что изменилось на фронт-бэке

Page 31: JavaScript on frontend and backend (in Russian

и переехать на ноду

Нельзя просто так взять

Page 32: JavaScript on frontend and backend (in Russian

Проекты на XScript

Page 33: JavaScript on frontend and backend (in Russian

Что изменилось на фронт-бэке

• XScript – deprecated –  Старые проекты поддерживаются –  Новые пишутся на Node или XScript JS –  Стараются отходить от XML в сторону JS

• Node.js <3 –  Были проблемы с версиями –  Внутренний npm репозиторий –  Портировали важные модули XScript

Page 34: JavaScript on frontend and backend (in Russian

Что из ноды используем

• Портированные модули –  Работа с "особыми" куками –  Определение языка пользователя –  Определение девайса

• Express.js • Cluster • Promise: Q или When • Streams & Buffers

Page 35: JavaScript on frontend and backend (in Russian

RPS 1000*/core *в районе этого значения

Page 36: JavaScript on frontend and backend (in Russian

Tools

Page 37: JavaScript on frontend and backend (in Russian

-tools

Что изменилось в инструментах

Borschik and more…

Page 38: JavaScript on frontend and backend (in Russian

BEM tools

• Хэлперы для создания сущностей • Разработческий сервер • Сборка статики

– html, css, js блоков, bemhtml

https://github.com/bem/bem-tools

Page 39: JavaScript on frontend and backend (in Russian

Borschik

• Сборка текстовых файлов • Минимизация CSS и JS

– CSSO – UglifyJS

• Замена относительных путей • «Заморозка» картинок

https://github.com/veged/borschik

Page 40: JavaScript on frontend and backend (in Russian

Оптимизация графики: IMGO, SVGO

• IMGO –  Тонкая оптимизация растровых изображений –  Использует разные минификаторы

• SVGO –  Тонкая оптимизация SVG

https://github.com/svg/svgo https://github.com/imgo/imgo

Page 41: JavaScript on frontend and backend (in Russian

LMD – Lazy Module Declaration

LMD

Page 42: JavaScript on frontend and backend (in Russian

LMD – ленивая декларация модулей

• Организация модульности –  CommonJS/Modules 1.0

• Сборка CommonJS/Modules • Организация сборок

–  Сборок бывает очень много: dev, prod+ru, prod+…

• Встроенная аналитика –  Статическая (при сборке) –  Динамическая

https://github.com/azproduction/lmd

Page 43: JavaScript on frontend and backend (in Russian

Grunt.js – Makefile эры JS*

Page 44: JavaScript on frontend and backend (in Russian

Что же мы получили

• Практически 100% JavaScript –  Инструменты –  Node.js –  Makefile отчасти для сборки пакетов

• Использование народных средств –  jQuery –  Grunt.js –  Backbone, underscore…

• Open-Source – мы открыты! –  BEM, Borschik, CSSO, IMGO, SVGO, LMD

Page 45: JavaScript on frontend and backend (in Russian

Михаил Давыдов

JavaScript разработчик

[email protected] azproduction

Спасибо