日別アーカイブ: 2022/08/28

Dinamic Import: Gjs and JXA

現在の 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

osa

なんでだよ!
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");
    }
}

gjs

動いたのでコンストラクタも入れてみた、普通に Class ですね。
いや Gjs は imports を使ったほうが簡単ですけど。
というか、Apple は内製スクリプトには本当にヤル気が無いなって。