Feathers: 请支持 CRUD 的 GUI

创建于 2016-03-19  ·  57评论  ·  资料来源: feathersjs/feathers

现在我们对服务有完整的 CRUD 操作,但没有 GUI。 如果我们有简单的 Web 应用程序供用户输入,那就太好了。 也许通过教程或通过代码自动生成器。 羽毛将成为任何项目的疯狂种子 :dancer:

Discussion Proposal

最有用的评论

也许我们可以使用它: https ://github.com/ForestAdmin/lumber

所有57条评论

@takaaptech感谢您的建议! 我们在@feathersjs/core-team 中讨论了很多次。 它绝对应该是一个可选插件,但肯定是可行的。 我将暂时将其放在 3.0 里程碑上。

@ekryski 非常感谢! 羽毛真的很厉害!

嘿,我喜欢为 CRUD 操作提供一个简单的 GUI 的想法,我想了解更多关于您计划如何解决这个问题的信息。 您是否不需要像 JSON Schema 这样的东西来标准化模型定义,而与底层使用的 ORM 无关? 我一直在根据模式自动生成 GUI 方面做了大量工作,并且用它们的字段公开这些模式是至关重要的。 考虑数据验证(最大长度、字符串正则表达式等)、属性编辑器(日期、日期时间或日期类型字段上的时间编辑)等也是有意义的。

用它们的关联来实现这些模式定义(基于简单的、与浏览器兼容的 JSON,而不是像 bookshelf 那样的典型主干样式扩展)并为不同的 ORM 编写模式适配器是否有意义?

这也将使实现 swagger 和在 ORM 之间切换变得更容易,因为您不需要重写模型。

编辑:我觉得考虑多少羽毛需要与数据无关是非常重要的。 但我看到您在实现数据同步、离线功能等方面付出了很多努力。因此,我认为羽毛需要更多地与数据模型联系起来,尤其是当您考虑客户端功能时。

我认为它应该与Strapi提供的类似。 看看他的studioadmin panel

https://www.youtube.com/watch?v=UOQszbaZfSc

Strapi 与水线紧密耦合,因此更容易实现此功能。

顺便说一句,parse 也提供了这个,称为 parse-dashboard (https://github.com/ParsePlatform)。 再一次,在 ORM 之间进行选择没有像羽毛那样的灵活性。

迫不及待地想知道如果他们真的决定提供这个功能,羽毛将如何解决这个问题。

我看到的一个解决方案是将功能拆分为两种类型的模块:

  • 完成主要工作的羽毛插件,例如显示 GUI
  • 用于管理 ORM 的插件适配器

所以我们会有一个独特的插件和许多适配器,每个 ORM 一个。

我们在这里有几个想法,我认为这有不同的部分:

1) 一个 UI 界面,可以直观地组合您的 API。 我认为随着钩子和服务的流动,这里有相当大的潜力。
2) 一个单独的管理界面,可让您使用 API 和浏览服务。 有点像邮递员,但专门用于羽毛。
3) 在应用程序中生成 CRUD 管理后端。 这可能是最困难和最棘手的事情。 您必须为不同的前端框架生成不同的实现(除非在 Feathers 之上有一个“官方”前端堆栈),并且生成器很难维护和调试。

真的很想从不写 CRUD。 对于它的价值,我已经在我自己的项目中使用tcombtcomb-formfeathers-tcombfeathers-action这样做了。 在business-stack中一起查看。 会推荐。 :)

@ahdinosaur 太棒了。 @daffl我想我们可能想看看这些东西。 至少feathers-tcomb什么的。 这正是我认为我们应该处理验证的方式,无论我们使用什么来完成此操作,我们都必须有一些模型/资源定义才能自动生成 API 文档和 CRUD UI。 feathers-swagger本质上只是将猫鼬模型定义提供给 Swagger。

鉴于我们有这么多不同的 DB 和 ORM,我们必须决定如何对其进行切片。 我可以看到像 tcomb 这样的东西非常有价值,但它是否违背了使用 ORM 的目的? 这不一定是一件坏事,但我认为在你的模式/模型/资源定义(无论你想怎么称呼它)中保持一致很重要,无论下面的数据库如何。 使数据库易于交换很重要,所以我不喜欢使用 Sequelize 模型、猫鼬模型的想法,但是对于使用 Tcomb 或其他东西的其他数据库。

对于管理员的 UI 部分或我同意的内容:

A) 支持当今的前端风格需要大量的工作
B) 如果我们实现了一个前端,比如说在 React 中,那么在它旁边使用一个替代的就不容易了。

所以它可能需要是一个固执己见的前端(这仍然是可选的),但如果你不想使用 React,那就太糟糕了。 如果我们可以让它超轻量级,以便人们可以轻松复制并让社区创建不同的前端,那么它可能会非常好用。

受 Django 的启发,我一直在寻找带有 CRUD-GUI 或某种管理员的东西。 我一直在尝试为一堆模型生成 JSON 模式的想法。 使用这些模式,您应该能够生成验证代码、猫鼬 [1] 和其他模型的模式。 使用模式和类似于 ng-admin[2] 的方式将管理员固定在羽毛上似乎相对简单。

我认为这种方法的优点是不需要专门为羽毛编写代码。(除了 JSON 模式生成器和一些生成的胶水)不必担心“当天的味道”,羽毛会在真正重要的地方保持固执己见,它提供的 REST 和 Socket.io 接口。

只是我的 2 美分,如果有人对此感兴趣,我想在接下来的 2~3 周内为此建立一个原型。

[1] json-schema 到猫鼬的转换器: https ://www.npmjs.com/package/json-schema-to-mongoose
[2] ng-admin,CRUD 管理员: https ://github.com/marmelab/ng-admin

@AndreSteenveld我去年开始从事类似的工作。 你可以在这里看到我放在一起的内容: https://github.com/marshallswain/AmityApp。 它基本上围绕创建我称之为 Amity 适配器的功能,它们是特定于处理数据库类型的羽毛服务的集合。 我只制作了 MongoDB 版本。

https://github.com/marshallswain/amity-mongodb

amity-mongodb让您可以管理整个 MongoDB 服务器。 它使用了几个羽毛服务:

由于一切都使用 Feathers 服务,因此当您添加/删除数据库和集合时,它会实时更新。

我还没有将amity服务器升级到 Feathers 2.0。 欢迎您从它那里挽救一切。 :)

我让它完全模块化,所以如果你愿意,你可以在 amity 适配器之上构建你自己的 UI。

你可能已经知道 ng-admin。 我喜欢他们处理特定后端的方式。 我不喜欢 angular 所以我几乎把它移植到 riot.js

我还要抛出一个看起来不错的替代方案,称为http://forestadmin.com/。 它是付费和托管的,但可以在本地免费工作。 创建者告诉我,如果你只是在 Forest 中间件之后加载 Feathers 中间件,它就可以开箱即用。 我很快就会试一试。

@ekryski @SeyZ
那是免费软件吗?

@josx - 我们为 1 位用户提供免费计划 :)

如果您已经尝试/使用过/看过它——StrongLoop API 框架会为您的 RestFUL 服务生成一个非常漂亮的 Web UI……我猜现在是http://loopback.io (在 IBM 收购 Strongloop 之后)。 无论如何,那里可能有一些值得闪闪发光的东西......

@ekryski - 查看了forestadmin.com,但我看不到它在哪里/如何在本地免费工作? 我们正在考虑使用 feathersjs 来建立我们的下一代企业(在没有 Internet 访问的防火墙之后)所以希望任何东西/一切都可以在本地托管.. :)

@sjmcdowall - 您可以使用 Forest 包将它安装在您的应用程序上,具体取决于您使用的 ORM: SequelizeMongoose甚至Loopback

您可以在 localhost 环境 ( http://localhost... ) 上试用 Forest,因为数据直接从您的浏览器传输到您的应用程序,而无需通过 Forest。

1个管理员用户完全免费👍

这是一个好主意。 Strapi 和 Treeline(Sails 背后的同一团队)都实现了这一点。

@ekryski Forest Admin 对你有多好? 它需要很多摆弄吗? 我们一直在构建自己的自定义管理 UI 来响应,但是如果 Forest 开箱即用,那么消除工作量会很好吗?

@Mentioum我在项目中对 mongoose 没有运气,我们的时间非常紧迫,所以去了 ng-admin。 试图与森林队解决问题,不管是森林、羽毛还是我只是愚蠢。 本周晚些时候应该有一些时间再给它一次适当的机会。 肯定会回来报告的。

@Mentioum 请允许我插话,我正在与@SeyZ在 Forest 上合作。 我们将与@ekryski 一起调查这个问题。 无论如何,如果您有兴趣尝试 Forest,请随时与 Sandro 或我联系(电子邮件是 [email protected]),我们将一起解决任何问题。

我已经让 Forest 使用 Sequelize 为 FeathersJS 开发一个附带项目,因此问题可能仅限于猫鼬。 这是 app.js 文件的要点,该文件仅经过调整以添加 Forest。

对不起,但我不明白在像森林这样的管理员上工作的意义在于它不是免费软件/开源。
我认为我们最好在 ngadmin o 上进行类似的工作。

谢谢@ekryski

谢谢@VinzGhyz。 那真是太好了,但不,谢谢。 直到我知道它可以与 mongoose 一起工作之前,我没有时间承诺它,因为我们已经有了一个我们正在维护自己的工作解决方案。 我们切换的唯一原因是工作负载为 0 / 工作负载比我们当前的解决方案少。

我会注意看看会发生什么。

(我知道我之前已经提到过它,但我实际上认为 KeystoneJS 有一个很棒的自动生成的管理员,它具有基于 ElementalUI(react)的非常可靠的选项) @JedWatson可能会对解决这个问题的最佳方法有一些很好的洞察力。

@Mentioum感谢您的提及,我想这就是 KeystoneJS 所拥有的😀

实际上,我们正在讨论如何更多地关注 Keystone 真正强大的两个核心概念:Keystone 列表和管理 UI。 我已经有一段时间没有深入研究 Feathers 了,但我所看到的看起来很棒,而且它专注于一个稍微不同的领域。

我们的下一个主要版本即将推出(希望在第二天左右发布一个测试版),它已经进行了一年的重写,包括完全反应/redux UI 和新的 API。 如果感兴趣的话,我肯定愿意与 Feathers 合作,找出如何减少一些交叉并使我们的项目兼容。

我们也希望在不久的将来从与 mongoose 的硬连接中解放出来,如果我们能够在连接到 API / 数据存储的方式上提供适当的灵活性,这可能会使它更加适合.

Feathers 团队 - 如果您想进一步探索,请随时与我们联系。

@JedWatson太棒了。 我们应该完全合作。 很高兴看到新版本。 实际上,我一直希望/思考我们如何破解 Keystone 以将 Feathers 作为后端。

@Mentioum我和你在同一条船上。 太忙了。 Hopefull 本周将能够抽出半小时左右的时间来看看我是否能让 Forest 工作。

ng-admin 给我们留下了深刻的印象(尽管我不是 Angular 的忠实粉丝)。 但是,您最终在客户端仍然需要做很多样板/冗余来支持您已经在模式服务器端定义的东西。

将基石放在羽毛上将是黄金! 我会为此做出贡献。

@JedWatson @ekryski @daffl

没问题,我用 Keystone 做了很多东西(我是粉丝)(和羽毛一样):

http://161london.com (客户端工作)
http://thenidocollection.com (客户工作)
http://headstartapp.com (当前启动)

我们正在使用 Feathers 作为一种简单的方法来弹出许多小服务,这些服务为实际的 Headstart 应用程序提供动力(所有 React 和 React Native atm - 一些使用 Electron 为讨厌“浏览器应用程序”的公司包装它)。

这可能有点牵强,但是如果您真的在考虑 keystone 具有某种 ORM,那么使用羽毛作为与 keystone 一起运行的微服务会不会更酷,而您只是使用它?

这样,keystone 仍然可以拥有其“交钥匙”解决方案,该解决方案使用 mongoose 生成所有内容,但是如果您想要更花哨,您可以为特定列表启动一些 Feathers 微服务,您可以为特定的 Feathers 服务提供端点。

我相信你们对如何构建它有更好的想法。 (Obs,您可以使用 Keystone 中的快速路由来完成此操作,但是您将没有自动生成的管理员 :))

现在真的有小小的 Dockerstack 梦想:

雷迪斯,
蒙哥达,
基石,
羽毛微服务1,
羽毛微服务,
PSgress,
弹性搜索
等等等等……
……

无论如何,不​​用说这是否会成为一件事……我会为此做好准备。

大家好。 如果您已经开始构建这个项目,您能否提供一个指向您的存储库或其他任何内容的链接,以便人们可以关注它?

+1 想看一些模式示例,使用带有羽毛的梯形校正。

拥有自动生成的后端当然是个好主意。

对于使用 GraphQL 的开发者来说,这可能是一个很好的解决方案: GraphQL 自动生成 CMS

我有一个我已经从事了一段时间的项目,它可能有用/感兴趣:NodeMDA 是一个代码生成引擎,它采用 UML 模型并生成源代码。 您可以为“实体”和“服务”等高级概念建模,并为您生成整个堆栈。 我刚刚为它完成了一个插件,它在服务器端使用 Feathers 生成一个完整的应用程序,在客户端使用 React + Material-UI。 您建模的每个实体都有一个完整的 CRUD 编辑器。

整个框架是 MIT 许可的,但它目前没有自己的建模工具。 我目前正在为我的建模应用程序使用 StarUML,但这只是因为它价格低廉,并且它的元数据存储在 JSON 中,而不是 xml 文档(如 XMI)中。 虽然 StarUML 是一种商业产品,但它们确实有一个免费的无限评估期(它的 nag ware)。 我与 StarUML 没有任何关系——只是他们的建模工具满足了我的迫切需求。 然而,NodeMDA 确实支持可插拔阅读器。 我有一个长期的路线图来编写一个快速而肮脏的 UML 类编辑器,这样人们就可以使用它而无需支付任何费用。

我曾经为一个 Java MDA 项目 (AndroMDA) 做贡献,我想在 Node 世界中拥有类似的东西,所以我一直在研究 NodeMDA。 引擎本身的表现相当不错。 创建新插件以不同方式甚至以不同语言生成代码非常容易。 我喜欢说“它固执己见,但思想开放”。

由于它在后端执行 Feathers,因此您可能会立即发现它很有用,或者它可能为其他事情提供了一个很好的起点。 看看这个:

https://www.npmjs.com/package/nodemda

羽毛插件在这里:

https://www.npmjs.com/package/nodemda-feathers-react

feathers-react-default-model

也许我们可以使用它: https ://github.com/ForestAdmin/lumber

admin-on-rest做一些事情会很棒

如果有人有兴趣。 我已经开始研究evolutility-ui-react的一个分支,以添加对羽毛 API 的支持。 我实际上才刚刚开始,但基本的 CRUD 适用于简单模型,部分适用于二进制文件......原始代码库可以使用一些重构,我需要添加对/测试一堆字段类型的支持,但是它可能对某人有用。 我将在接下来的几周内推动更多的变化。

关于问题

支持当天的前端风格

我相信Svelte很好地解决了这个问题( github )。 用它制作的一切都是通用的,并成为无框架的 vanilla JavaScript。

我强烈推荐它,因为它是面向未来的,并且总是可以与“当时”的任何技术互换

@ddela-cr 我已经开始了一个项目来为 admin-on-rest 编写一个自定义的羽毛休息客户端。
请检查它,欢迎贡献...

https://github.com/josx/aor-feathers-client

我们为https://github.com/josx/aor-feathers-client发布了一个新版本,并且我们在https://github.com/Cambalab/test-feathers-admin上有了工作证明

由于我在这个相同的话题上挣扎了很长一段时间,我也想分享我使用ng-admin的方法( admin-on-rest的哥哥基于普通的 AngularJS)。

我提取了使ng-adminng-admin.jwt-auth与 Feathers 一起使用所需的最低配置,并将其变成了精心制作的存储库: https ://github.com/beevelop/feathers-admin-starter

@beevelop 干得好!

几天前,我用 ng-admin 做了几乎相同的操作(但您的版本完成了更多功能)。 这是一个带有(feathers app、ngadmin 和 admin-on-rest)的 repo

也许我们可以使用 ng-admin 和 admin-on-rest + feathers 改进 sam 示例。

大家好,

每个框架都需要为管理界面重新发明轮子。 有一个“羽毛管理员”、一个“laravel 管理员”、一个“rails 管理员”等等。很疯狂,不是吗? 这就是我发布 Lumber (https://github.com/ForestAdmin/lumber) 的原因 - 它不是插入您的应用程序,而是专门为管理员生成一个新的(换句话说,它生成一个管理员微服务) .

您如何看待这个解决方案?

@SeyZ在我的项目中不可行,因为我们决定控制所有软件。 因此,如果它不是免费软件,我将无法购买服务。

同样从开发人员的角度来看,我认为您做了出色的工作,但对社区没有用。

您可能会认为一种以自由软件为核心的商业模式。
只是我的2美分。

@josx Lumber 是完全开源的,Forest 是一项自动为您提供出色 UI 的服务(我希望 :D)。 当然,一切都是完全免费的!

看看admin-on-rest 的更新版本。 看起来很神奇。

我认为现在这里有一些很好的解决方案,所以我现在要关闭它。 核心团队没有在做任何正式的事情,也没有在短期内这样做的计划。

这个问题越来越冗长,但我不想锁定它以防出现新问题。 如果您遇到尚未提及的您认为合适的内容,请随时发布! 如果这开始只是一个讨论板,或者我们开始看到很多相同的事情,我们将锁定线程。

感谢大家的所有投入! 你们正在使社区变得惊人! ❤️

在任何规模的项目中,您将需要创建一个管理页面。 也许我们应该在文档中创建一个页面,其中包含指向不同库的链接以创建 GUI 管理页面? 我很高兴有一个开箱即用的解决方案,但我们至少可以推荐最优质的解决方案。

@kulakowka在启动器堆栈部分之后向生态系统页面添加一个部分是最有意义的。 https://docs.feathersjs.com/v/auk/ecosystem/readme.html

也存在基于 Loopback 和 Angular 的等效解决方案。 它被称为Colmena-cms (以前称为 Loopback Angular Admin)。

将 Feathers 与admin-on-rest结合起来最有意义,因为我们需要主要专注于在两者之间建立桥梁,而无需专注于如何呈现管理页面。

对于这种依赖羽毛和 admin-on-rest 的新解决方案,我们需要一种允许轻松更新这两个依赖项的方法。

我认为构建和维护这样的解决方案应该比 Colmena 花费更少的精力。

我过去曾为 colemena-cms 做出过贡献,但这只是为了回送。 这就是为什么在休息时拥有像管理员这样的应用程序是羽毛的完美选择。

看看我们正在开发的 aor 插件。 https://github.com/josx/aor-feathers-client

有人成功地使用了 forestAdmin 吗?

@loiclouvet我已经有一段时间没有尝试过了,但我过去成功地让 Forest 沿着羽毛工作。 很想今天再试一次并在这里发布一个完整的工作示例: https ://github.com/forestadmin/forest-examples

免责声明:我是 Forest 的创始人。

@SeyZ经过几次尝试,我用羽毛(使用猫鼬)设置了 Forest,一定会试一试!

我刚刚添加了一个工作示例,将Forest Admin集成到 Feathers: https ://github.com/ForestAdmin/forest-examples/tree/master/examples/feathers/sql-database

如果您有任何问题,请不要犹豫;)

@SeyZ我用猫鼬设置了Forest admin,据我了解,它绕过了羽毛钩并直接注入到mongodb中,对吗?

@nadbm您完全正确,所以我认为 Forest admin 不太适合 Feathers。 就个人而言,我尝试并采用了 admin-on-rest !

由于关闭后最近没有任何活动,因此此问题已自动锁定。 请打开一个新问题,其中包含指向此问题的链接以获取相关错误。

此页面是否有帮助?
0 / 5 - 0 等级