require関数

CommonJS系に沿う形のrequire関数

ECMAScript系の汎用モジュールは、
「require関数で呼ばれる」ということを意識した作りのものが多くなっています。

そこで、本来は、JScriptエンジンには、require関数は存在しませんが、
特別な対処として、hmJSにはnodejsの簡易版のようなrequire関数が実装されています。

hmJSのrequire関数の特徴

  • require("abc")

    まず、現在実行中のマクロと同じディレクトリに「abc.js」があれば、そのファイルを対象とします。

    もし現在のマクロと同じディレクトリに存在しなければ、「カレントディレクトリ」に「abc.js」があれば、それを対象とします。

    カレントディレクトリにも存在しないとすれば、どこかに「abc.js」というファイル名だけで読み込める(パスなどが通った)ファイルが存在すれば、それを対象とします。

  • 変数などを使って絶対パス

    require( hm.Macro.Var("macrodir") + "/" + "a.js")
    などとすると、「秀丸のマクロ用ディレクトリ(設定してない場合、秀丸本体のディレクトリ)」、

    require( hm.Macro.Var("currentmacrodirectory") + "/" + "a.js")
    などとすると、「秀丸実行中のマクロのディレクトリ、

    というような「フルパス相当の文字列」で呼び出すことも出来ます。

jsonも読み込める

node.jsのrequire関数が、jsonファイルを読み込むことが出来る(jsonの内容に従ったJavaScriptのオブジェクトになる)のと同様に、
hmJSのrequire関数も、jsonファイルを読み込むことが可能です。

var data = require("aaa.json");
console.log(data);