Mer*_*erc 12 modularity mongoose mongodb node.js express
更新1:我在这一方面取得了很大进展.关于允许用户上传模块的想法,我几乎放弃了(至少现在,但可能是长期).但是,我正在开发一个结构,以便可以定义和加载几个模块.一个模块将被初始化,设置自己的路由,并有一个"公共"目录供Javascript使用.我看到的越多,我越发现我能够(应该)移动现在系统范围内的调用在一个名为"系统"的模块中.
更新2:我在这方面取得了巨大进展.我即将在GitHub上提交大量代码,这将允许人们使用Node和Express进行真正的,非常好的模块化编程(使用暴露客户端和服务器端代码的模块).敬请期待.
更新3:我把这个东西改写成一个注册模块并使它们能够通过事件/钩子系统进行通信的系统.它非常好.我已经有很多代码了 - 我只是将它移植到新系统中.欢迎在GitHub上查看该项目:https://github.com/mercmobily/hotplate)
更新4:这很好.事实证明,我对作为客户端和服务器的模块的想法确实有效.
更新5:模块越来越接近可用的东西.我实现了一个新的器会考虑到一个init()函数将invokeAll是什么() -和将确保提供钩子模块将被载入第一.这使得电热板达到了一个全新的水平.
更新6:Hotplate现在接近12000行代码.到2月的某个时候它完成时,我想它将接近20000行代码.它做了很多东西,这一切都是从StackOverflow开始的!我需要它来开发我自己的SaaS,所以我真的需要在二月份之前完成它(这样我就可以冲刺到七月并完成第一个版本的BookingDojo).谢谢大家!
我正在写一些可能会成为一个非常大的软件的东西.简短的故事是它是nodejs + Express + Mongodb/Mongoose + Dojo(客户端).
注意:本文中的问题标记为[Q1],[Q2]等.
来自Drupal背景(并且知道它是如何进化的,我想避免的东西),我有点像模块怪物.目前,我已经完成了应用程序的样板(hotplate:https://github.com/mercmobily/hotplate).它完成了所有无聊的工作(用户,工作空间,密码提醒等),并且它缺少了很多部分.
我想提出一种设计,允许模块以与Drupal类似的方式(但可能更好).那是:
最初的架构可能是这样的:
[Q1]:这有些含糊不清吗?
问题:
我想让这个充满活力.我希望当场需要模块.通过动态要求,这应该很容易做到.
server/node.js会有一个被调用的函数,但是这个函数感觉/看起来很像路由器本身
[Q2]你有关于这一个的具体提示吗?
这些似乎并不太令人担忧.但是,当你谈到安全性时,真正的问题出现了.
隐私.这是一个讨厌的.目前,所有调用都将通过workspaceId对mongoDb进行正确的查询.我想以某种方式强制执行,以便模块无法清楚地访问数据库,因此每个模块都无法访问属于其他工作区的数据
用户定义的模块.我很乐意让用户上传自己的模块(也许可以让其他用户使用).但是,这实际上意味着允许人们上传将由节点本身执行的代码!你会怎么做?
[Q3]您如何处理这些隐私/安全问题?有没有办法在某种节点沙箱中运行用户上传的代码?如何访问文件系统等?
谢谢!
最后,我自己回答了这个问题 - 这很难.答案:hotplate,https://github.com/mercmobily/hotplate
它完成了我上面描述的大部分内容.更重要的是,使用hotPlate(使用hotPage和hotClientPages,默认情况下可用),你可以编写一个模块,
状态:我接受了这个答案,因为我已经完成了Hotplate的"核心"开发,这就是这个答案的重点.我仍然需要"做"事情(例如,一旦我编写了文档,我将确保"hotplate"是模块中唯一的目录,没有示例服务器).但是,基础就在那里.就"核心"而言,它只是真正错过了故事的"认证"方面(这需要大量的思考,因为我想做到这一点,以便它与数据库无关并与护照接口).Dojo小部件是一个很好的奖励,虽然这个框架可以与任何东西一起使用(事实上,骨干特定的代码将是sweeeeet).
什么样的热板不做:
什么样的热板不做,是让用户能够上传模块,然后将其加载到应用程序中.这非常棘手.客户端不会那么糟糕(用户可以定义要上传的Javascript,并且可能有一个模块可以做到这一点,不用担心).然而,服务器端充其量是棘手的.有太多东西可能出错(客户端可能会上传阻塞的代码,或者他们可以开始阅读文件系统,他们可以访问完整的数据库,等等).这些问题的解决方案是可能的,但它们都不容易(例如,您可以保留用户的节点环境并使其在不同的端口上运行,等等)但仍会存在一些问题.但是,总有希望.
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |