現在の JavaScript はダイナミックインポートが可能。
下記ページで Chrome や Safari で動くと解りますね。
全モダンブラウザで使えるJavaScriptのdynamic import(動的読み込み) – Qiita
GNOME の Gjs は imports 関数があるので関係ないんだけど。
そういえば macOS の JXA はファイル分割ができないのが困る。
コレを利用してクラス毎に分割できるかな。
1 2 3 4 5 6 7 8 | #!/usr/bin/osascript import ( './sub.js' ) .then((module) => { console.log ( 'Start!' ); const sub = new module.Sub(); sub.subMethod(); }); |
main.js
1 2 3 4 5 | export class Sub { subMethod() { console.log ( 'this is Sub Class Method' ); } } |
sub.js
なんでだよ!
Promise だと認識はしているけど動作しないってことみたい。
JavaScriptCore が全部やってくれるってわけじゃないんかい。
Gjs でも同じかな?
console.log を print に書き換えて実験。
1 2 3 4 5 6 7 | #!/usr/bin/gjs import ( './sub.js' ) .then((module) => { const sub = new module.Sub(); sub.subMethod(); }); |
main.js
1 2 3 4 5 6 7 8 | export class Sub { constructor(app) { print ( 'Hello' ); } subMethod() { print ( "this is Sub Class Method" ); } } |
動いたのでコンストラクタも入れてみた、普通に Class ですね。
いや Gjs は imports を使ったほうが簡単ですけど。
というか、Apple は内製スクリプトには本当にヤル気が無いなって。