gpt4 book ai didi

javascript - 使用 require ('some_module.js' 时运行脚本 - 好的做法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:49 24 4
gpt4 key购买 nike

我正在谈论服务器端js(使用node.js和require.js)我有三个文件

//1) app.js - main entry point:
//=======================================================
var myservice = require('./myservice');

rt.register('someKey', require('./XYZhandler').handler);

//2) myservice.js:
//=======================================================
var handlers = {};

exports.register = function(key, handler) {
handlers[key] = handler;
};

//3) and finally XYZhandler.js:
//=======================================================
exports.handler = function() {
//...do something
};

因此,在上面的设置中,我拥有在 app.js 中实际执行显式的所有脚本

我的替代方案是:

//1) app.js - main entry point:
//=======================================================
var myservice = require('./myservice'),
rt = require('./XYZhandler');

//2) myservice.js: unchanged from above

//3)and finally XYZhandler.js:
//=======================================================
require('./myservice').register(function() {
//...do that same thing
};

在后一个设置中,我在 XYZhandler.js 中有脚本,该脚本实际上在 requirejs 第一次遇到它时执行(请注意,XYZhandler.js 不导出任何内容)。我(作为一名 Java 开发人员)将其比作静态初始化器。但以上哪种做法被认为是更好的做法呢?谢谢。

最佳答案

第一种方法更好,因为它正确解耦。

在第二种方法中,XYZhandler.js 依赖于 myservice.js。如果 yourhandler.jshishandler.js 想要注册 XYZhandler.js,它们也必须被硬编码。很快,您的所有模块将相互依赖,您将无法单独重用它们,这就是首先将这些函数抽象为模块的全部要点。

这是一个外观上的差异,但我可能会这样写你的第一个例子:

//1) app.js - main entry point:
//=======================================================
var myservice = require('./myservice');
var myhandler = require('./XYZhandler').handler;

rt.register('someKey', myhandler);

一步加载模块,然后初始化它们有助于我理清它们的关系。

希望有帮助!

关于javascript - 使用 require ('some_module.js' 时运行脚本 - 好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com