В статье пойдет речь о похожести Node.js на JavaScript. Можно ли считать Node отдельным языком, или это просто надстройка для JS?
Внимание Butthurt.
Эта статья не поможет опытному Node.js разработчику, но позволит лучше ориентироваться остальным.
Рассмотрим три самых типичных мнения.
Node.js всего лишь серверная реализация V8 от Google? – Сложно спорить что это не так. Это равносильно тому что сказать, RoR это всего лишь модуль WEBrick, или PHP – модуль Apache. Node.js полноценный язык основанный на JS.
Node.js это просто JS исполняемый на сервере? – Как упоминалось ранее, Node конечно основан на JS, но имеет ряд существенных отличий. Нельзя взять JS программиста и сказать, «сегодня ты будешь писать под Node!», именно это я считаю дает право называть его другим языком программирования. К примеру, несмотря на то что операторы if, case, for есть в 99% языков, мы не говорим, что все языки одинаковы?
Node.js глючная, нестабильная хрень, очередной изврат гугла – С этим тоже не поспоришь. Ко мне, как разработчику, сама мысль запустить JS на сервере могла прийти только в неадекватном состоянии. Однако, всему свое назначение. Мы привыкли что сложное веб приложение это нагромождение кучи модулей, для comet-а мы подымаем nginx(или аналог), для кеширования мы запускаем mongo, для обмена данными между скриптами мы сохраняем их где-то в бд. Node дает нам все это в одном флаконе. Я могу создать расписание без cron, могу отправить сообщение в чат другому юзеру, не выходя при этом за пределы одного скрипта, но любая ошибка в коде – положит все, в этом его гениальность, в этом его маразм.
В чем же схожесть и различия Node.js и просто JS?
Давайте начнем со схожести:
- Идентичный синтаксис.
- Большая масса идентичных операторов.
- У обоих модель наследования Prototype.
- Node, как и обычный JS асинхронен, единственный широко известный, асинхронный, язык. Что делает их еще больше похожими друг на друга, но непохожими на другие языки, и сложными для изучения типичному си-стайл программисту.
Скорей всего список схожести можно еще продолжить, схожесть этих двух языков очевидна и без углубленных сравнений. Намного тяжелее ситуация с отличиями.
Конечно Node.js есть функции и модули присущие только ему, но не углубляясь в детали, можно выделить всего одно существенное отличие, порождающее все остальные:
- Акцент назначения.
Именно эта слабо понятное выражение все меняет. Node.js акцентирован совсем на другое окружение. То, что допустимо в JS, абсолютно недопустимо в Node, правила хорошего кода меняются кардинально. Так же меняется и построение кода. Чаше всего в JS мы работаем с DOM, создаем визуальные эффекты, подгружаем что-то AJAX-ом. В Node — полноценное веб приложение, где в одном скрипте работает много юзеров, обычно есть база данных и многое другое. Как я ранее упоминал, нельзя взять JS программиста и сказать, «сегодня ты будешь писать под Node!», а потому Node по праву можно считать другим языком программирования, имеющего в основе обычный JS.
Автор: edli007