2

Grafana 用のスクリプト化されたダッシュボードをいくつか作成しました。もう一つ作る予定です。私が作成し、スクリプトからスクリプトにコピーしたあらゆる種類のユーティリティ関数があります。私はむしろ、良いプログラミング手法を採用して、コピー&ペーストするよりもコードをインポートしたいと思っています。

それはできますか?もしそうなら、どのようにそれを行うでしょうか?

4

1 に答える 1

2

はい、これは可能です。 このリンクは、 SystemJS.import()を使用できることを示唆していますが、試したことはありません。

この github リポジトリでは、別の手法を使用した詳細な例が提供されています。スリムな Grafana スクリプト ダッシュボード ドキュメントには記載されていませんが、一部のバージョンの lodash.com (コミットして lodash を含める) と jquery は、すべてのスクリプト ダッシュボードで使用できるようです。

このリポジトリの所有者である anryko は、これら 2 つのライブラリを使用して、あなたが話しているように独自のユーティリティ スクリプトを参照する方法を見つけました。

すべてのスクリプト化されたダッシュボードにはメイン スクリプトがあります。getdash.shは、README.md のダッシュ URL に示されているように、anryko のメイン スクリプトです。

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 doc は次のとおりです。

関数 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 に答える