Лучшая практика: Typescript: пусть клиент расширяет приложение с помощью пользовательского кода - PullRequest
0 голосов
/ 18 марта 2020

у нас есть основанная на angular 9 прикладная среда, которая дает заказчику возможность настроить приложение с полями и макетами. Это работает довольно хорошо.

Но теперь мы подошли к тому моменту, когда клиент хочет реализовать специальные функции, такие как «Он вводит значение в текстовое поле, и должен быть запущен запрос на стороннее программное обеспечение для загрузки». новые данные и автозаполнение других значений ".

Мы могли бы реализовать любое возможное взаимодействие или позволить создавать собственные фрагменты в javascript.

Но в прошлом у меня было много плохого опыта с эти базовые javascript фрагменты, потому что они не обладали необходимой стандартной функциональностью, такой как машинопись.

1) Есть ли способ, как пользователь может создавать собственный код во время выполнения с помощью машинописи, а не плоскости? потому что я хочу знать, есть ли другой способ?

2) Альтернативный вопрос: может ли пользователь разработать приложение angular и добавить его в качестве плагина во время выполнения? Что-то вроде расширения или пользовательских функций, которые будут добавлены на портал для клиента, который не является частью базовой платформы?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Дело в том, что у нас есть размещенное облачное приложение, где у нас есть стандартная реализация, которая уже скомпилирована и развернута в docker контейнере.

Теперь у клиента должна быть возможность расширить функциональность, добавив скрипты и модули. Как это часто бывает в WordPress. Там, где у вас стандартная реализация, и если вам нужен другой редактор wysiwyg, вы устанавливаете плагин.

Я знаю, что единственный способ внедрения кода - через javascript, но я просто хотел спросить, есть ли другое решение для этого что не приведет к повторному развертыванию всего приложения.

0 голосов
/ 18 марта 2020

Я не знаю, правильно ли я понимаю ваш вопрос, но с моей точки зрения, единственный способ, которым другой пользователь хочет взаимодействовать с основным проектом Angular, - это he create a library с помощью команды ng generate library my-lib. (https://angular.io/guide/creating-libraries)

Оттуда он может создать новый модуль, а затем кто-то другой импортирует эту новую библиотеку в основной проект и все.

Новая библиотека может быть поддержан "клиентом", и он может выпустить новую версию, если библиотека размещена в репозитории npm и из основного приложения просто необходимо npm i customer-lib@latest

Я ответил на ваш вопрос?

...