javascript — системы, похожие на NakedObjects?

Некоторое время назад я прочитал книгу Голые предметы и был взволнован идеями. Писать только мою основную бизнес-логику и автоматически генерировать пользовательский интерфейс? Запишите меня!

Кроме того, потенциал выходит за рамки этого. Это может быть отличным инструментом в области моделирования. Благодаря способности напрямую вызывать свои объекты, каждый может непосредственно использовать свои доменные объекты, после чего можно обнаружить …

  • Дефекты
  • Полезные шаблоны взаимодействия (для реализации пользовательского интерфейса, особенно уместно, если придерживаться мнения, что пользовательский интерфейс в основном «создает сценарии для объектов домена»)
  • Новые возможности.

С этой целью меня интересуют любые системы, похожие на Naked Objects. Я проделал некоторую работу, такую ​​как поиск хитов по строкам, таким как «Direct Manipulation UI», но не нашел ничего полезного.

Знаете ли вы о какой-либо работе в этом направлении? Я бы предпочел что-то на PHP или JavaScript, и это не предполагает, что я использую Linux. Я знаю о NakedPHP и Spiro (не могу найти документацию для этого), но они обе в основном являются реализациями Naked Object для PHP и javascript, соответственно.

Знаете ли вы о каких-либо других системах?

5

Решение

Как соавтор книги «Голые предметы», я хотел бы добавить свою точку зрения.

Нередко людям действительно нравится концепция шаблона обнаженных объектов, но не нравится конкретный пользовательский интерфейс. Вы не сказали, как давно вы смотрели на реализацию, или действительно, какую. Две основные реализации с открытым исходным кодом (есть несколько других, но менее установленных):

  • Naked Objects Framework, для платформы .NET
  • Apache Isis, для платформы Java

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

Совсем недавно Дэн Хейвуд и я значительно продвинули идею обнаженных объектов с введениемRestful Объекты спецификация — ультрачистый REST API, который работает для любой модели с расширенным доменом. Обе реализации двух голых объектов теперь также реализуют спецификацию Restful Objects. Дело в том, что с помощью API RO теперь относительно легко спроектировать новые, радикально отличающиеся пользовательские интерфейсы (универсальные или полностью индивидуальные), которые взаимодействуют с серверной реализацией RO. Другими словами, относительно легко создать свою собственную реализацию концепций обнаженных объектов на стороне клиента, повторно используя любую из двух основных реализаций на стороне сервера.

Spiro, о котором вы упомянули, является нашей первой попыткой создать библиотеку строительных блоков для создания такого интерфейса с использованием JavaScript (на самом деле TypeScript) и Angular.js. И классная особенность использования спецификации RO заключается в том, что вы можете запускать один и тот же клиент для любой реализации сервера. Я рекомендую вам внимательно посмотреть на это.

8

Другие решения

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

Кажется, они лучше подходят …

Метавиджет особенно интересен. Он поддерживает JavaScript и прост в использовании. Вы можете просто предоставить ему свою модель предметной области (объект JSON), и он может сгенерировать для нее пользовательский интерфейс. Кроме того, он не захватывает вашу страницу, поэтому может существовать в уже существующем пользовательском интерфейсе и позволяет настраивать пользовательский интерфейс.

Они также включают страницу сравнения с аналогичными продуктами.

Еще один интересный BlueJ; это образовательная платформа, основанная (идея?) на голых объектах, но может использоваться для небольших проектов. По сути, вы можете графически создавать экземпляры вашего класса через контекстное меню, затем вы можете проверять и вызывать результирующие методы объекта тем же способом (потенциально создавая больше объектов в процессе).

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

Я все еще исследую их, особенно объектные, и открыт для других предложений.

2

По вопросам рекламы [email protected]