我为Grafana创建了几个脚本化仪表板。我即将创造另一个。我创建了各种实用程序函数,并从脚本复制到脚本。我宁愿采用良好的编程习惯并导入代码而不是复制粘贴。
可以这样做吗?如果是这样,怎么会这样做?
是的,这可以做到。 This link建议可以使用SystemJS.import(),虽然我没有尝试过。
This github repo使用不同的技术提供了一个详细的例子。虽然在slim Grafana scripted dashboard doc中没有提及,但是某些版本的lodash.com(commit to include lodash)和jquery似乎可用于所有脚本化仪表板。
这个repo的所有者anryko已经找到了如何使用这两个库来引用你自己的实用程序脚本,就像你正在谈论的那样。
所有脚本化仪表板都有一个主脚本; getdash.sh是anryko的主要脚本,如README.md上的破折号URL所示:
http://grafanaIP/dashboard/script/getdash.js
如果你看一下getdash.sh的结尾,你会看到这行引用了其他用户(你)提供的脚本中的代码:
var dash = getDashApp(datasources, getDashConf());
例如:
以下是getdash.js使用jquery和lodash加载源文件的部分:
// loadScripts :: [scriptSourceStr] -> Promise([jQuery.getScript Result])
var loadScripts = function loadScripts (scriptSrcs) {
var gettingScripts = _.map(scriptSrcs, function (src) {
return $.getScript(src);
});
return Promise.all(gettingScripts);
};
这是上面的_.map的lodash文档。
函数scriptedDashboard()(也在getdash.js中)调用上面的loadScripts(),传递给源文件的路径,如下所示:
loadScripts([
'public/app/getdash/getdash.app.js',
'public/app/getdash/getdash.conf.js'
]).then(function () {
说实话,我还没有进一步深入研究,看看这一切是如何使实用程序代码“可参考”的。