single-spa с несколькими версиями одной и той же библиотеки (React) или Framework, как работать - PullRequest
0 голосов
/ 30 апреля 2020

За последние несколько дней я проходил через один спа-центр, и очень просто настроить и интегрировать приложения или библиотеки frmawork (Angualar) (приложение React / redux).

Но у меня есть один хотя сомневаюсь,

{
  "name": "single-spa-simple-example",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    ...
    "single-spa": "^4.3.4",
    "single-spa-react": "^2.10.2",
    "single-spa-vue": "^1.4.0",
    "single-spa-angular":"4.0.1",
    "vue": "^2.6.10"
  },
  "scripts": {
    "start": "webpack-dev-server --open",
    "build": "webpack --config webpack.config.js -p"
  },

Рассмотрим сегодня у меня 10 или более приложений React и пару месяцев после того, как мне нужно будет работать над последним приложением React (например, React-18), тогда как включить этот проект в это В существующем проекте single-spa, поскольку у нас есть только один пакет. json файл и одна папка node_modules, у нас не может быть двух разных версий одного и того же имени пакета в пакете. json файл.

И я не хочу работать с существующим приложением React.

  1. Существующие приложения должны работать в той же версии, в которой они были созданы, и в новом приложении React с версиями. Также следует запустить. возможно ли это в одном спа-салоне?

  2. Если у одного SPA есть один пакет. json файл, у меня есть еще одно сомнение, подумайте, у меня есть простое приложение, имеющее реагирование-16 и угловое9 приложение, и по какой-то причине, я хочу, чтобы библиотека говорила как XYZ, как для React, так и для angular проектов, но им нужны разные версии X. js

  3. У кого-нибудь есть идея реализации вроде

Single-SPA
   |-AngularApp1
   |    | /src
   |    |-node_modules
   |    |-package.json (version 6)
   |
   |-AngularApp2
   |    | /src
   |    |-node_modules
   |    |-package.json  (version 9)
   |
   |-React
   |    | /src
   |    |-node_modules
   |    |-package.json 

1 Ответ

0 голосов
/ 30 апреля 2020

Это распространенная проблема, с которой сталкиваются при работе с микроинтерфейсами, хотя не существует однозначного лучшего решения.

Действительно, вам нужно разделить исходный код на несколько пакетов NPM с их собственными package. json, чтобы разные приложения могли иметь разные версии зависимостей (React, XYZ lib). Затем вы можете скомпилировать каждое приложение в пакет и запустить эти пакеты в Single-Spa. Но есть еще проблемы. Ваш общий размер сайта будет расти, так как вы не можете полностью разделить зависимости, которые одинаковы. Вы также по-прежнему не можете запускать несколько приложений React в одном представлении одновременно, если они не используют одну и ту же версию React.

Существуют также инструменты, помогающие с этим, например, Lerna, но вам может не понадобиться эта сложность еще. Есть и другие способы создания микро-интерфейсов, таких как микросервисы, которые возвращают серверную часть, обработанную HTML, поэтому интеграция не должна происходить во время сборки, как с Single-Spa, а во время выполнения. Это, как и все остальное, имеет свои плюсы и минусы.

Так что вы можете подумать, стоит ли запускать несколько разных версий React? Возможно, и вашим пользователям, и вашим разработчикам лучше попробовать обновить их до последних версий в старых приложениях. Поскольку они являются микро-интерфейсами, они должны быть меньше, что означает, что обновление должно быть проще. Это также обеспечивает меньший объем загружаемого пакета и не требует дополнительной серверной инфраструктуры. Но вам нужно сотрудничать между всеми приложениями для одновременного обновления. У каждого подхода есть своя задача.

...