Как и многие, я долго писал на Node.JS только высокопроизводительные сервисы, но когда в 0.11 сделали генераторы и несколько моих коллег подтвердили, что они работают на production, решил сделать на этой платформе новый учебник JavaScript.
Удобство генераторов для асинхронного JS-кода сложно переоценить. При желании он становится «плоским», меньше букв, чем чистые promise/async.
Хотелось сделать движок быстрым, простым в разработке и иметь возможность запускать некоторые модули и на сервере и на клиенте.
Получилось, если не напутал при подсчёте, около 24000 строк кода (без сторонних node_modules).
Написанный движок сайта имеет открытый исходный код. В репозитарии github.com/iliakan/javascript-nodejs можно посмотреть и позаимствовать различные аспекты реализации.
Есть:
— Авторизация через социальные сети.
— Отправка почты и рассылок через Mandrill API.
— Сборка стилей и скриптов на webpack.
— Приём оплаты посредством Paypal, Webmoney, Интеркассы, Яндекс.Денег.
— Логирование через bunyan
— Deploy через PM2
— Многое другое, что нужно для real-life проекта.
Увидеть в действии можно на learn.javascript.ru, ну или поднять локально под Mac/Linux.
Код написан одним человеком, и с расчётом на то, что этот один человек будет его поддерживать. Поэтому минимум документации, и тесты я писал только там, где посложнее. С другой стороны, если вы хотели взглянуть, как может выглядеть сайт на io.js / koa.js — вот он перед глазами.
Собирался написать пост о его особенностях, основных архитектурных решениях, но он получился таким длинным, что пришлось отказаться от этой идеи. Если будут вопросы, то постараюсь на них ответить.
Комментарии (8)
Crandel
16.04.2015 13:54+6Большое спасибо Вам за учебник, именно он помог мне пару лет назад освоить javascript. Все очень хорошо и основательно поясняется
keslo
16.04.2015 14:53Спасибо за ваши труды. Начал изучение JS именно с вашего учебника. По образованию совсем не программист, но ваш учебник вселил уверенность что все по плечу. Включая и JS :-) Недавно заметил новый сайт еще до этого поста. У него есть одна отличительная особенность в использовании:
Сайт не перегружается в браузере при переключении вкладок или переключении между приложениями на iPad,твоюжмать этот пэд!
Что не может не радовать. А переключаться приходится, чтобы попробовать код в деле.iliakan Автор
16.04.2015 16:30+2Раз вы с ipad, кстати, то наверно вам будет удобно листать свайпами. Подсказки какой-то нет, которая об этом говорит, подумаем, как её сделать.
keslo
16.04.2015 16:36Оу! Я это заметил, но не сразу, а случайно. Хотел перелистнуть на другое приложение, но получился свайп. Теперь пользуюсь этим. Выходит быстрее, чем перегружать страницу полностью.
VaaL2004
learn.javascirpt.ru — лежит. Хабраэффект?
walkman7
Похоже что то с DNS DNS_PROBE_FINISHED_NXDOMAIN
iliakan Автор
Правильно было бы learn.javascript.ru, была опечатка в посте, уже поправил.
iliakan Автор
P.S. А я-то думаю, почему нагрузка CPU всё ещё никакая ;)