Grafana 用のスクリプト化されたダッシュボードをいくつか作成しました。もう一つ作る予定です。私が作成し、スクリプトからスクリプトにコピーしたあらゆる種類のユーティリティ関数があります。私はむしろ、良いプログラミング手法を採用して、コピー&ペーストするよりもコードをインポートしたいと思っています。
それはできますか?もしそうなら、どのようにそれを行うでしょうか?
Grafana 用のスクリプト化されたダッシュボードをいくつか作成しました。もう一つ作る予定です。私が作成し、スクリプトからスクリプトにコピーしたあらゆる種類のユーティリティ関数があります。私はむしろ、良いプログラミング手法を採用して、コピー&ペーストするよりもコードをインポートしたいと思っています。
それはできますか?もしそうなら、どのようにそれを行うでしょうか?
はい、これは可能です。 このリンクは、 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 () {
正直に言うと、これらすべてがどのようにしてユーティリティ コードを「参照可能」にするのか、まだ詳しく調べていません。