Всем привет,

Как и многие, я долго писал на 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)


  1. VaaL2004
    16.04.2015 12:43

    learn.javascirpt.ru — лежит. Хабраэффект?


    1. walkman7
      16.04.2015 12:47

      Похоже что то с DNS DNS_PROBE_FINISHED_NXDOMAIN


    1. iliakan Автор
      16.04.2015 12:54
      +7

      Правильно было бы learn.javascript.ru, была опечатка в посте, уже поправил.


      1. iliakan Автор
        16.04.2015 13:02
        +1

        P.S. А я-то думаю, почему нагрузка CPU всё ещё никакая ;)


  1. Crandel
    16.04.2015 13:54
    +6

    Большое спасибо Вам за учебник, именно он помог мне пару лет назад освоить javascript. Все очень хорошо и основательно поясняется


  1. keslo
    16.04.2015 14:53

    Спасибо за ваши труды. Начал изучение JS именно с вашего учебника. По образованию совсем не программист, но ваш учебник вселил уверенность что все по плечу. Включая и JS :-) Недавно заметил новый сайт еще до этого поста. У него есть одна отличительная особенность в использовании:
    Сайт не перегружается в браузере при переключении вкладок или переключении между приложениями на iPad, твоюжмать этот пэд!
    Что не может не радовать. А переключаться приходится, чтобы попробовать код в деле.


    1. iliakan Автор
      16.04.2015 16:30
      +2

      Раз вы с ipad, кстати, то наверно вам будет удобно листать свайпами. Подсказки какой-то нет, которая об этом говорит, подумаем, как её сделать.


      1. keslo
        16.04.2015 16:36

        Оу! Я это заметил, но не сразу, а случайно. Хотел перелистнуть на другое приложение, но получился свайп. Теперь пользуюсь этим. Выходит быстрее, чем перегружать страницу полностью.