2

我为 Grafana 创建了几个脚本仪表板。我即将创建另一个。我从一个脚本到另一个脚本创建和复制了各种实用函数。我宁愿采用良好的编程实践并导入代码而不是复制粘贴。

可以这样做吗?如果是这样,一个人会怎么做?

4

1 回答 1

2

是的,这是可以做到的。 这个链接表明可以使用SystemJS.import(),虽然我没有尝试过。

这个 github repo提供了一个使用不同技术的详细示例。尽管在精简的Grafana 脚本仪表板文档中没有提到它,但某些版本的 lodash.com(提交以包括 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 () {

老实说,我还没有进一步深入了解这一切如何使实用程序代码“可引用”。

于 2017-12-29T23:36:21.273 回答