Intereting Posts
JavaScript-stringify для Node.js Проблема с запросом PUT с использованием Node.js (express), Angular и MongoDB MongoDB и MongoJS – не может заставить runCommand работать для текстовых запросов Обновление содержимого из файлов JSON с использованием модуля файловой системы в NodeJs асинхронная функция – ждать не ожидая обещания Ошибка: не удается найти модуль ‘webpack’ Сложите четыре изображения вместе с помощью Node.js и GraphicsMagick Поиск документа MongoDB через слово в описании поля в каждом продукте с помощью Mongoskin Как сортировать с суммой 2 полей в MongoDB Что определяет порядок вызова отложенной функции с использованием обещаний или setTimeout? Выберите ссылку для кукольника Как отключить мой express-сервер изящно, когда его процесс убит? Как остановить выполнение следующей функции с помощью async-ожидания? Как преобразовать код node.js в обычный браузер javascript? Синхронный mysql в Node.js

Различия между средой узла и средой браузера браузера

Мне всегда было немного досадно, что есть две основные сферы проектов javascript – Node и «браузер» – и в то время как большинство браузеров JS можно легко запускать внутри узла с помощью нескольких библиотек для DOM-материалов, если это необходимо, портирование узла вещи в браузер, как правило, запоздалая мысль.

Все это похоже на массу израсходованных ресурсов со стороны сообществ разработчиков, которые могут быть смягчены всеми разработчиками JS, которые просто разрабатываются для «наименее общего знаменателя» (браузера) и используют различные прокладки для использования функций, доступных только в узле или другом JS, помимо обычного старого браузера.

Это позволит не только вырезать много экосистемных трещин и сделать разработку в браузере более реалистичной, но и сделать ее банальной для предоставления суперверсии браузера … Посмотрите пример в браузере , который устанавливает HTTP-сервер внутри браузера, но потому что браузер фактически не может принимать HTTP-запросы, использует веб-порты, чтобы разговаривать с сервером-сервером прокси, который может.

Поэтому я хочу спросить, каковы реальные технические ограничения среды javascript веб-браузера против Node? Я думал, что Node – это просто «среда javascript, плюс http-сервер и локальная файловая система, минус DOM и хром». Существуют ли технические причины, по которым разработчики не могут перейти к описанному выше подходу, разрабатывая среду браузера JS (имеет ли это официальное название?) И использует прокладки для узла?

Код, который выполняется на клиенте, обычно имеет очень разные цели из кода, который выполняется на сервере. Однако, когда имеет смысл использовать некоторые функции libarary в обеих средах, их много, которые определяются с использованием универсальной формы AMD, которая делает их независимыми от платформы (например, Q ).

Основное различие между обеими средами заключается в том, что каждый из них подвергается строгим политикам безопасности и ограничениям (браузеру), в то время как другой не является. Браузер также является ненадежной средой для операций, связанных с безопасностью, таких как принудительное использование разрешений безопасности.

Я также добавлю комментарий @ jfriend00 здесь, так как я считаю, что это также очень важно, раскрывает другие отличия:

Самое большое практическое различие заключается в том, что вам необходимо создать приложение браузера для работы в установленной базе существующих браузеров, включая более старые версии (самый низкий общий знаменатель). При развертывании приложения-узла вы можете выбрать одну версию узла, для которой вы хотите разработать и развернуть. Это позволяет разработчикам узлов использовать самые последние самые большие функции в узле, которые не будут доступны в общей популяции браузеров в течение многих лет. @ jfriend00

Проекты, подобные браузеру, интересны, и я все для экспериментальной разработки, но действительно ли они полезны на практике? Библиотеки должны быть разработаны для среды, в которой они действительно полезны. Нет никаких преимуществ при создании всех библиотек в обеих средах. Мало того, что это в целом приведет к увеличению сложности кода, некоторые функции иногда не будут сглаживаться, что приведет к несогласованному API между платформами.