Node.js 组件如何相互作用?
我正在使用express和组件方法编写一个项目。 我有以下文件结构:Node.js 组件如何相互作用?,node.js,Node.js,我正在使用express和组件方法编写一个项目。 我有以下文件结构: components user index.js userModel.js userRouter.js auth index.js authRouter.js authController.js 据我所知,我的组件不应该直接链接,也就是说,在授权期间为了检查现有用户而连接authController.js文件中的用户组件是错误的 authController.js: const pas
components
user
index.js
userModel.js
userRouter.js
auth
index.js
authRouter.js
authController.js
据我所知,我的组件不应该直接链接,也就是说,在授权期间为了检查现有用户而连接authController.js文件中的用户组件是错误的
authController.js:
const passport = require('passport')
const VKontakteStrategy = require('passport-vkontakte').Strategy;
const config = require('config')
passport.use(new VKontakteStrategy({
clientID: config.get('auth.vk.clientID'),
clientSecret: config.get('auth.vk.clientSecret'),
callbackURL: `${config.get('domain')}/api/web/auth/vkontakte/callback`
},
function(accessToken, refreshToken, params, profile, done) {
console.log(profile)
User.findOrCreate({ vkontakteId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
module.exports = passport
问题是,在这种情况下,如何连接这两个组件?这里有一个漂亮的
MVC
层。MVC的“问题”在于它没有处理逻辑以及将它放在哪里(这是一件好事,因为这种设计模式应该根据您的逻辑进行调整,而不是相反)
我建议添加一个业务逻辑
层(在components目录旁边)
对于authController.js
,您可以使用getByAuth(username,password)
,使用剩下的方法,您可以在userController.js
中实现一个CRUD API。MVC的“问题”在于它没有处理逻辑以及将它放在哪里(这是一件好事,因为这种设计模式应该根据您的逻辑进行调整,而不是相反)
我建议添加一个业务逻辑
层(在components目录旁边)
对于authController.js
,您可以使用getByAuth(username,password)
,使用其余的方法,您可以在userController.js
中实现CRUD API?您可以使用“require”语句从组件B访问组件A的方法。您所说的“connect”这些组件是什么意思?您可以使用“require”语句从组件B访问组件A的方法。
business_logic
user
userService.js // <--- Expose a well defined API for user
userRepository.js // <--- DB stuff
components
user
index.js
userModel.js
userRouter.js
auth
index.js
authRouter.js
authController.js
- create(user)
- delete(userId)
- update(userId, user)
- getById(userId)
- getAll(query)
- getByAuth(username, password)