Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 模块化编程和节点大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
更新1:我在这方面做了很多进展.我几乎放弃了(至少现在,但也许长期)允许用户上传的模块的想法.但是,我正在开发一个结构,以便可以定义和加载几个模块.一个模块将被初始化,设置自己的路由,并且有一个’public’目录供 Javascript服务.我看到的越多,我意识到我可以(应该)也移动现在系统的呼叫在一个称为“系统”的模块中.

更新2:我已经取得了巨大的进步.我即将在GitHub上提交大量的代码,这将使人们能够使用Node和Express来做真正的,非常好的模块化编程(使用模块暴露客户端和服务器端代码).请继续关注

更新3:我重写了这个东西作为一个系统注册模块,并使他们通过事件/挂钩系统进行通信.它非常好地来了我已经有很多代码已经很好了 – 我只是把它移植到新的系统上.随便看看GitHub上的项目:https://github.com/mercmobily/hotplate)

更新4:这很好.事实证明,我关于一个模块是客户端和服务器的想法是真的正常工作.

更新5:该模块越来越接近可用的东西.我实现了一个新的加载程序,它将虑到init()函数将invokeAll() – 并且将确保提供该钩子的模块将被首先加载.这将打开电热板到一个全新的水平.

更新6:热板现在接近12000行代码.到了二月份的某个时候,我想象将会有近20000行的代码.它做了很多东西,这一切都从StackOverflow开始!我需要它来开发自己的SaaS,所以我真的需要在2月之前完成(@R_974_9447@冲刺到7月,完成BookingDojo的第一个版本).谢谢大家!

我写的东西可能会变成一个相当大的软件.简短的故事是nodejs Express Mongodb / Mongoose Dojo(客户端).

注意:本文中的问题标记为[Q1],[Q2]等

来自Drupal的背景(并且知道它是如何演化的,我想避免的),我是一个模块怪胎.目前,我已经完成了应用程序的样板(电热板:https://github.com/mercmobily/hotplate).它做的所有无聊的东西(用户,工作区,密码提醒等),它缺少相当多的东西.

我想提出一个可以让Drupal类似的模块(但可能更好)的设计.那是:

>模块可以定义新路由并处理它们
>模块安装在系统范围内,然后每个工作区都可以启用它们的列表

最初的架构可能是这样的

>一个“modules”目录,每个模块有一个目录
>每个模块都有一个用于Javascript侧面的“public”文件的目录
>每个模块都有public / startup.js,它将被包含在应用程序的javascript中
>每个模块将具有server / node.js,如果需要,服务器将被服务器包含在运行中
>将定义一条路线,像/app/:workspacEID/modules/MODULE_NAME/.*这样的中间件可以检查该工作区是否启用了MODULE_NAME,如果是,则使用传递的参数调用模块的函数

[Q1]:这是否含糊不清?

问题:

>我想让这个动态.我想要现场需要的模块.这应该是足够容易的,通过要求事情飞行.
> server / node.js会有一个调用函数,但是这个函数感觉/看起来很像路由器本身

[Q2]你有什么具体的提示吗?

这些似乎并没有太多的关注.但是,当谈到安全性时,真正的问题就是出现.

>隐私这是一个讨厌的一个.目前,所有的电话都会对workspacEID进行mongoDb过滤.我想强制执行某些方式,以便模块无法清楚地访问数据库,以便每个模块无法访问属于其他工作区的数据
>用户自定义模块.我希望能够让用户上传自己的模块(也可能让其他用户可以使用它们).但是,这样做有助于人们上传节点本身执行的代码!你会怎么样呢?

[Q3]您将如何处理这些隐私/安全问题?有没有办法例如在一个节点沙箱中运行用户上传代码?如何访问文件系统等?

谢谢!

解决方法

最后,我自己回答了这个难题.
答案:电热板,https://github.com/mercmobily/hotplate

它大部分是我上面描述的.更重要的是,使用hotPlate(使用hotPage和hotClientPages,认可用),您可以编写一个模块

>定义一些路线
>使用UI定义“public”目录
>定义加载该模块时必须加载的特定CSS和JS文件
>如果需要,可以添加路由特定的JS

状态:
我正在接受这个答案,因为我完成了开发Hotplate的“核心”,这就是这个答案.我仍然需要“做”事情(例如,一旦我写了文档,我将确保“热板”是模块中唯一的目录,而没有一个示例服务器).但是,基础是在那里.在“核心”方面,只是真的错过了这个故事的“认证”方面(这将需要很多思,因为我想让它与数据库无关,并与护照进行接口). Dojo小部件是一个很好的奖金,然这个框架可以用于任何东西(实际上骨干特定的代码将是sweeeeet).

什么电热板不做:

什么电热板不做,是给用户上传模块的能力,然后将其加载到应用程序中.这是非常棘手的.客户端不会那么糟(用户可以定义Javascript来上传,也可能有一个模块来做,不用担心).然而,服务器端最好是棘手的.只有太多的东西可能会出错(客户端可能会上传一段阻塞的代码,或者他们可以开始读取文件系统,他们可以访问完整的数据库,等等).这些问题的解决方案是可行的,但是它们都不容易(例如,您可以笼罩用户的节点环境并使其运行在不同的端口上)等等,但是一些问题仍然存在.但是,总有希望.

大佬总结

以上是大佬教程为你收集整理的node.js – 模块化编程和节点全部内容,希望文章能够帮你解决node.js – 模块化编程和节点所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。