-
ID:myFw0H さんの質問

テンプレートエンジン(SmartyやERBのような)を使ってHTMLを出力している案件で、JavaScript側にテンプレートエンジンが出力するデータを渡したい場合、どういった方法がスタンダードなんでしょうか?

自分で思いつくのは直接scriptタグ内で変数宣言(*1)する場合と、HTMLのmicrodata等の属性として持たせておく(*2) 2パターンかなと思ったのですが、皆さんの意見を聞いてみたいです。

(*1)
<script>
var id = ’テンプレートエンジンの出力タグ’;
var uid = ’テンプレートエンジンの出力タグ’;
</script>

(*2) <body data-id="テンプレートエンジンの出力タグ’ data-uid="テンプレートエンジンの出力タグ">

例1の場合、宣言した変数を使用するJSの読み込み場所によって、onloadイベントを待つ必要がでてくるのと、グローバル空間なのがイマイチな気がしています。

例2の場合、DOMContentLoadedのタイミングで取得できるので、こっちでいいかなとも思うのですが、その場合bodyタグでいいのかなという所です。変数用の<div id="js-vars"></div>みたいな要素を作るのもありなのかなとも。

上記2パターンに対しての意見と、他にもこういう方法があるというのがあれば教えて頂きたいです。

よろしくお願いします。

みんなの回答 2 件

ID:yIAvXL さんの回答

あまり考えずに1の方法をしていました。
別の方法としては、js自体をSmarty化する方法がありますね。

ID:myFw0H

なるほど。JS自体をSmartyで吐き出せば各ページ毎の振り分けも一元管理できるかもしれませんね。

ID:X0hRsX さんの回答

PHPでHTMLを作ると修正とかスマホ対応が面倒なので、JSONを返してJavaScript側でUnderscoreとかのテンプレートライブラリを利用して出力する。

ID:myFw0H

少し質問の意図とは違いますが、その場合セキュリティ等で考慮すべき事などありますか?

ID:6jTuno

補足するとここでJS側に渡さなければいけない変数は、JSONを返してもらうAPIにリクエストを送る際に必要となるIDなども想定されます。

最終更新日:2013-05-22 (2,236 views)

関連するトピックス

ページ上部に戻る