Почему JavaScript на сервере

?

Заменить PHP на JavaScript, есть ли для этого веские причины?

Один и тот же язык на сервере и клиенте

Дело не только в простоте или простоте обучения. Это факт, что переход от одного языка к другому облегчает возникновение ошибок, но преимущество одного языка выходит за рамки. Это позволяет перенести обработку на выбор клиента или сервера. Те же функции с теми же библиотеками.
Можно поместить код на клиент, чтобы облегчить нагрузку на сервер, так как у клиента есть неиспользованные ресурсы. Наоборот, мы передадим код на сервер, чтобы защитить источник, если он является владельцем, или сократить время загрузки, отправив только результаты клиенту.

Evolution des voitures Sedan: Tucker, Cadillac, Tesla pour illustrer le passage de PHP à JavaScript

Производительность (сравниваются Node.js и PHP)

JavaScript и PHP являются динамическими и интерпретированными языками. Но у первого есть очень успешный JIT-компилятор. Мне не нужно проводить тесты, чтобы это доказать, другие уже сделали это, и исследование показало, что Node.js может быть в пятьдесят раз быстрее PHP (SHIFT 06/2014: сайт сейчас закрыт). Это нормально, JIT бесконечно быстрее .
Разрыв, безусловно, сокращается с помощью HHVM от Facebook, виртуальной машины JIT. Но это не PHP, который можно найти на всех серверах.

Неограниченные библиотеки без компиляции

Одним из преимуществ является количество библиотек, которые можно включить в проект, особенно на GitHub. Они могут быть написаны на любом языке (добавляются команды экспорта) и связаны с JS с командой require.
PHP также позволяет привязывать библиотеки, написанные на языке C, но необходимо включить расширения в INI-файле, что является избыточным для распространения среди пользователей, не являющихся программистами .

Динамическое веб-приложение

Если ты хочешь использовать контент-менеджер для портального сайта или блога, PHP остается незаменимой. В JS есть менеджеры, но они не на уровне Wordpress или Drupal. С другой стороны, для онлайн-приложения есть фреймворки, сделанные для HTML. Например, Angular, Ember, которые предлагают двухнаправленное привязывание данных.
Разница в том, что CMS рассматривают HTML как код для создания, а фреймворки - как интерфейс, с которым можно взаимодействовать.
Таким образом, пока CMS в PHP подходит для редакционного контента, для оригинального приложения с новыми функциями фреймворк дает больше свободы.
Но CMS в JavaScript будут развиваться в свою очередь.

Офлайн и мобильные

Я никогда не видел, чтобы сайт Wordpress или Joomla работал в офлайн-режиме. Теоретически PHP-программа может работать на клиентском компьютере, как это делает Java со своими эпплетами (это не очень хорошая ссылка), но предполагает наличие PHP-интерпретатора. Такого ограничения для JS не существует, оно присутствует на всех постах, в браузере.
Оффлайн-режим особенно приветствуется на мобильных устройствах, чтобы избежать трудоемкой загрузки во время каждого сеанса, а также сэкономить ограниченную пропускную способность этих устройств.

В заключение, модель LAMP (Linux, Apache, MySQL, PHP) была разработана и популяризирована для эпохи настольных компьютеров и программного обеспечения и сети статических страниц, дополненных, конечно, Ajax, но это всего лишь динамическая рустина на статической системе.
Это не обязательно оптимально для современных устройств, мобильных устройств, онлайн-приложений, работающих в автономном режиме.

Обновление 11 мая 2013 г.: Изменение абзаца о библиотеках. По итогам комментариев пользователей к английской версии статьи мне нужно кое-что уточнить. У PHP была команда dl для включения внешних библиотек, которая была удалена вместе с версией 5.3. Вместе с командой включает или требует включить другие источники PHP в текущий файл.
Команда require от Node.js позволяет связать программу с внешними библиотеками на JS или другом языке, это не сравнится.

Обновление 13 мая 2013 г.: Прочитав комментарии читателей (на английском и HN), я понимаю, что на самом деле преимущество JS над PHP не в списке функций, а в опыте, который они предоставляют. Я сделал несколько онлайн-приложений на PHP (хотя, как мы думаем), и сейчас сожалею, что не выполнил их в JS с Node, потому что все было бы намного проще, а результат лучше. Это стало причиной этой статьи, и это требует других .

Вторая часть: CMS в JavaScript на сервере. Сравнение Ghost (JavaScript) и Worpdress (PHP).