Что такое изоморфное приложение?

Я читал несколько разных статей о том, что такое изоморфное приложение, почему этот тип архитектуры лучше и так далее. Но у меня все еще есть некоторая неуверенность в том, что подразумевается под этим термином.

Как бы вы определили, что такое "изоморфное приложение", не вдаваясь в подробности?


person Eduard    schedule 28.12.2017    source источник
comment
Это взаимозаменяемость между платформами Javascript, которые вы отметили в этом вопросе, т.е. они используются как на сервере, так и на клиенте.   -  person Adrian    schedule 28.12.2017


Ответы (1)


В последнее время их также называют universal. Я не уверен, что все приложение называется изоморфным/универсальным, но вы, безусловно, можете иметь части базы кода, которые являются универсальными.

Изоморфный/универсальный код — это код, который выполняется как на клиенте (браузере), так и на сервере (NodeJS). Поскольку они оба являются JavaScript, это возможно, если:

  1. вы не упомянули window, document или какие-либо другие методы только для браузера
  2. вы не упоминаете server, fs или какие-либо другие методы только для узла.
  3. Если вам нужно сделать это в некотором коде, который должен быть универсальным, вы должны обернуть его в функцию, которая либо имитирует требуемый метод в альтернативной среде, либо заключает его в условные выражения, чтобы приложение не аварийно завершилось.

Примером может служить console.log, который будет работать как в NodeJS, так и в любом браузере, наряду с большинством других методов es6 в современных браузерах.

Я использую инструменты сборки (например, веб-пакет), чтобы затем помочь создавать/экспортировать функции в отдельных файлах, чтобы у нас был bundle, подобный client-app.js, который включен в файл HTML и доступен только для браузера js. Затем сервер может начать использовать server-app.js, который является пакетом только для сервера. Оба пакета могут быть созданы с использованием одного и того же universal исходного кода.

person peter.mouland    schedule 28.12.2017
comment
Думаю, это ответ на мой вопрос. Спасибо, сэр! - person Eduard; 28.12.2017