FileI/OとかCharsetとかその辺の話をテキトーに
JSmartyではコンパイラクラスで毎回毎回動的にテンプレート関数を作っているのでJemplateのようにあらかじめコンパイルしたものを読込む方式にもできたほうがいいのではないかと思う。IISやAJAJAでサーバーサイドでコンパイルしたテンプレートをクライアントサイドで読込むのも素敵だと思うしコマンドラインでローカルでコンパイルできるようにしておくのもありだと思う。
加えてSmartyの世界ってまだまだEUC頑張っているので単純にSmartyのテンプレートを読み込もうとした場合Charsetの対応が必要になってくる(--;かなりめんど。
ADODB.Streamを使う(読む|書く)
サーバーサイド(IIS)で動かすときに便利。というかIISならEUC使わなくねぇ?あと書込みもすきなCharsetで出来るので問題無。でも、HTAにしたときある条件下でファイル書込みのときに警告でるから好きでない。
stream = new ActiveXObject('ADODB.Stream'); stream.charset = '_autodetect'; // 自動判別 stream.type = 2; stream.open(); stream.loadFromFile('hoge.txt'); stream.position = 0; text = stream.readText(); // こちらで変数textに代入 stream.close();
FileSystemObjectを使う(読む|書く)
読み書きOK!ただしANSIとUNICODEの対応。HTAにしたときでも警告でないから好み。
fso = new ActiveXObject('Scripting.FileSystemObject'); txt = fso.createTextFile('hoge.txt'); txt.write('Hello'); txt.close();
XMLHttpRequestを使う(読む)
あぁ文字コードが…以下rya