Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Express中将大型控制器拆分为多个文件?_Javascript_Node.js_Express_Model View Controller_Controller - Fatal编程技术网

Javascript 如何在Express中将大型控制器拆分为多个文件?

Javascript 如何在Express中将大型控制器拆分为多个文件?,javascript,node.js,express,model-view-controller,controller,Javascript,Node.js,Express,Model View Controller,Controller,我正在构建一个express应用程序,到目前为止,它使用了一个名为users的单一控制器文件。它包含各种与用户相关的功能,如注册/登录/获取个人信息,这些功能是使用模块导出的。导出,并且是路由器所必需的 问题是该文件现在变得相当大,我希望理想的文件夹结构如下所示: controllers/users/registration.js controllers/users/personalInfo.js 我如何做到这一点,使我仍然可以在路由器中只需要一个文件: var users = require

我正在构建一个express应用程序,到目前为止,它使用了一个名为
users
的单一控制器文件。它包含各种与用户相关的功能,如注册/登录/获取个人信息,这些功能是使用
模块导出的。导出
,并且是路由器所必需的

问题是该文件现在变得相当大,我希望理想的文件夹结构如下所示:

controllers/users/registration.js
controllers/users/personalInfo.js
我如何做到这一点,使我仍然可以在路由器中只需要一个文件:

var users = require('../controllers/users/?');
并且仍然可以访问每个控制器内的所有功能


另外,如果有更有效的方法,请让我知道。

不确定这是否是您想要的,但在我的项目中,使用多个函数,只需一次引用我的“训练营”控制器

const{
训练营,
训练营,
创建训练营,
更新博客营,
训练营,
getBootcampsInRadius,
bootcamp照片上传

}=需要('../controllers/bootcamp')
您需要一个
controllers/users/index.js
文件来手动重新导出所有子函数。或者,如果您正在使用webpack,您可以通过webpack的要求来实现手动工作的自动化。谢谢,这非常有用。我仍然有点不确定如何最好地构造我的控制器文件。比如说,我有两种型号的
用户
电子邮件
,其中一个用户可以有许多电子邮件。在用户控制器或电子邮件控制器中放置
getUserEmails()
函数更有意义吗?如果电子邮件属于用户,那么肯定
user.getUserEmails()
email.getUserEmail()
更有意义?或者情况并非如此?这是一个非常好的问题,但我个人会将“getUserEmails()”放在电子邮件控制器中,因为您试图获取的数据与电子邮件非常相关。然后,我会将“已验证用户”解析为电子邮件控制器中的参数,以获取该特定用户的用户电子邮件。如果你看一下我的“reviews.js”路由器,你可以看到我在做“.put”时是如何处理类似的事情的,比如说,当会员必须注册时,这个过程包括创建一个新的会员记录以及一个新的电子邮件记录。这个控制器的功能在哪里,因为它操纵两个模型?类似于
getAccountInfo()
,因为这将返回用户记录和相关电子邮件。