メインモジュールの定義と動作

仕様

アプリケーション起動時に実行されるスクリプトを定義したファイルをメインモジュールと呼びます。メインモジュールは次の要件を満たす必要があります:

  • app_res ディレクトリ上に存在する
  • ファイル名が main.js である

アプリケーションの一連の起動時処理において、ユーザスクリプトが実行可能になった時点で、メインモジュールが(Alier.import() により)インポートされます。

メインモジュールが副作用を持つ場合、インポートの時点でその影響を受ける。

メインモジュールからエクスポートされた機能(変数、関数、クラス)は、main() 関数を除き、グローバルスコープ上に展開されます(例えば A というクラスをエクスポートしている場合、ユーザスクリプトの立場において、それは window.AglobalThis.A として参照可能と見なせます)。


設計

メインモジュールの機能が自動的にグローバルスコープ上に展開されるという仕様は、メインモジュールが Alier フレームワーク側からインポートされる唯一のユーザスクリプトであることによります。

他のモジュール(サブモジュール)はユーザによってインポートされ、したがって機能の公開や利用をインポート時に選択できますが、メインモジュールはフレームワークがインポートするためその時点ではユーザ側に選択権が与えられません。

ユーザがメインモジュール上に定義された機能を公開するかどうかは、したがって、ユーザによるエクスポートよってのみ制御されます。

もしフレームワークがインポートしたメインモジュールを公開しないことを選ぶなら、ユーザはメインモジュール上の機能を公開する手段を失うため、基本的に、フレームワークはメインモジュールの機能をすべて公開する必要があります。

ただし main() 関数に関してはサブモジュールから参照されたり呼び出されることがないため、 main() 関数に限り、フレームワークはそれを公開しないことを選べます(実際の仕様では main() は外部から参照されない)。