Скорость это не единственное, что привлекает людей в Node.js, смотрите ответ разработчика Django о том, какие преимущества он видит в Node.js по сравнению с Python https://www.quora.com/What-are-the-benefits-of-dev...
Двойное двоеточие используется для обращения к статическим методам, константам и перегруженным методам класса. Статический метод это метод, который можно вызывать на самом классе, без создания его экземпляра. Соотвественно статические методы не могут обращаться к свойствам созданного объекта, потому что его нет. MyClass::myStaticMethod();
Если метод не статический, то вызвать его можно только через создание экземпляра класса: new MyClass()->myMethod();
Сергей: асинхронность в Node.js как и многопоточность реализована на уровне С++, а С++ код там пишут люди не глупые. Так что задумываться об этих вещах вам не стоит.
Сергей Савостин: Код PHP это текстовые файлы, которые можно засунуть в гит. Если что-то рухнет, лезем в гит и смотрим, какие были последние изменения и где. А если это какие-нибудь триггеры в базе данных, то надо сравнивать с предыдущим бэкапом, который может быть неделю назад делался.
Алексей Уколов: Если человек принимающий картинку знает о том, что ее будут пытаться защитить от копирования он может вообще трафик сниффить через какой-нибудь Wireshark и тут уже ничего не поможет.
Сухроб Хусамов: классы не используют, потому что они только недавно стали стандартом языка. Middleware это чисто експрессовская фича, есть куча разработчиков не использующих Express. Как правильно организовать модели в Express выходит за рамки документации. Express разрабатывался с целью дать разработчику самому выбрать и построить архитектуру приложения.