jquery.tmplの不具合
概要
jquery.tmpl.js はJavaScriptのテンプレートエンジンだ。
勝手はJQueryの公式サイトにものっていたが、現在はメンテナンスされておらず、公式からも削除された。
https://github.com/BorisMoore/jquery-tmpl

新規開発でjquery.tmplを使用してはいけない。
しかし、既存のシステムで使用されており、変更できない場合もあり、今回は、その場合に発生する不具合について説明する

不具合

大量のデータを扱った場合、Chromeでスタックオーバフローを起こす。
http://stackoverflow.com/questions/15908000/maximum-call-stack-size-exceeded-error-in-chrome-using-jquery-templates

大量データを扱った場合、メモリを食いつぶしブラウザがクラッシュする。
tmplではtmplで指定したデータを各要素のjQuery.dataに保持している。
この値は$('hoge').tmplItem()で取得できる。
この機能は通常なら有用だが、大量にデータを扱う場合にメモリーを食いつぶし、ブラウザがクラッシュすることになる。
このことはすでにtmplの問題として報告されている。

このバグはjquery.tmplの問題として報告されており、修正はされていない。
https://github.com/BorisMoore/jquery-tmpl/issues/80

修正後のファイル
以下のファイルは上記の不具合に対応したものである。
http://needtec.sakura.ne.jp/release/jquery.tmpl.js

以下のように使用すれば、データを保持しないようにしている。
$('#id').tmpl(datas,undefined,undefined,false).appendTo('#id2');

なお、フラグとかを付与せず、一括で保持しない場合は、build関数でstoreTmplItemsを呼ばないようにすれば、データは保持しない。



by mima_ita | 2014-06-13 21:32 | JQuery
<< Node.jsのサイトへのIp... Jadeで処理を共通化する >>


検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ