JavaScript リピーター テンプレート コントロール
功能强大的模板引擎大都需要对模板进行语法解析,会有性能问题。通过把一个大的模板引擎根据不同呈现需求分隔成多个互相独立模板控件,可以降低处理复杂度提供处理性能,可以根据需求灵活组合这些模板控件得到一个可以定制的模板功能库。
一个模板控件规定了它的模板语法和js api,这是一个repeater控件的JS实现:
代码 | 名称 | 最新价 | 涨跌额 | 涨跌幅 | 开盘 | 最高 | 最低 | 昨收 |
---|
<script><br> <br> <br>//View<br>(function(ns){<br> <br> function init(){<br> varcontainer = document.getElementById("crossRate");<br> container.setAttribute("data-headertemplate", document.getElementById("crossRateHeader").text);<br> container.setAttribute("data-itemtemplate", document.getElementById("crossRateItem").text);<br> container.setAttribute("data-footertemplate", document.getElementById( "crossRateFooter").text);<br> }<br> <br> function render(dt){<br> varcontainer = document.getElementById("crossRate"),<br> headerhtml =container.getAttribute("data-headertemplate"),<br> rowhtml = コンテナ。 getAttribute("data-itemtemplate"),<br> footerhtml =container.getAttribute("data-footertemplate");<br> <br> var repater = new Repater(headerhtml,rowhtml,footerhtml);<br> var dataRow = []; <br> for(var i =0,n=dt.length; i<n; i++){<br> dataRow = dt[i].split(",");<br> repater.set("dataRow",dataRow);<br> repater.parse(); <br> }<br> container.innerHTML = repater.toHTML();<br> }<br> <br> ns.crossRate = {<br> init: init, <br> render: render, <br> fill: { <br> render(data);<br> }<br> } ;<br> ns.crossRate.init();<br>}(window));<br> <br> <br>//异步获取数据渲染データデータ<br>var datas = ["USDEUR0,USDEUR,美元欧元,0.7731,0.7732,0.7723,0.7734,0.77 17 ,0,22913,0.0000,0,0,0.7731,0.0000,0,0,-0.0008,-0.10%,0.0000,1,3848,0,-1,1,0.0000,0.0000,2012-05-10 13: 49:53,3","USDHKD0,USDHKD,美元港币,7.7625,7.7633,7.7621,7.7634,7.7617,0,14208,0.0000,0,0,7.7625,0.0000,0,0,-0.0004,-0.01%, 0.0000,2,2062,0,-1,0,0.0000,0.0000,2012-05-10 13:49:49,3","USDJPY0,USDJPY,美元日元,79.71,79.73,79.62,79.77,79.57, 0,25489,0.00,0,0,79.71,0.00,0,0,-0.09,-0.11%,0.00,1,4307,0,-1,-1,0.00,0.00,2012-05-10 13: 50:13,3","USDCHF0,USDCHF,美元瑞郎,0.9285,0.9287,0.9276,0.9289,0.9266,0,29637,0.0000,0,0,0.9285,0.0000,0,0,-0.0009,-0.10% ,0.0000,1,4960,0,-1,1,0.0000,0.0000,2012-05-10 13:50:02,3","GBPUSD0,GBPUSD,英镑美元,1.6134,1.6136,1.6138,1.6144,1.6121, 0,20808,0.0000,0,0,1.6134,0.0000,0,0,0.0004,0.02%,0.0000,2,5381,0,-1,0,0.0000,0.0000,2012-05-10 13:50:04 ,3"];<br> <br>//充填データツービュー<br>crossRate.fill(datas);<br> <br> <br>//Repater模板制御件 www.2cto.com<br>function Repater(headerhtml,rowhtml,footerhtml) {<br> var _this = this ;<br> var n = 0;<br> _this.cache = [];<br> _this.dic = {};<br> _this.header = headerhtml;<br> _this.row = rowhtml;<br> _this.footer = '</table>'; <br> if (headerhtml) _this.header = headerhtml;<br> if (rowhtml) _this.row = rowhtml;<br> if (footerhtml) _this.footer = footerhtml;<br> _this.set = function(tag, val) {<br> this.dic[ tag] = val;<br> };<br> <br> _this.parse = function(dic) {<br> var row = this.row,<br> dic = dic || this.dic,<br> re = /{$(w+)(?:[(d+)])?(?:|(w+))?}/g,<br> html;<br> html = row.replace(re, function(a, b, c, d) {<br> var val;<br> if (typeof dic[b] == "未定義"){<br> return b;<br> }<br> if ( dic[b].constructor == 配列) {<br> val = dic[b][c];<br> } else {<br> val = dic[b];<br> }<br> } if (リピーター[d] || ウィンドウ[d]) {//修饰符<br> val = (Repater[d] || window[d])(val);<br> }<br> return val;<br> _this.cache[n++] = ;<br> HTML を返す;<br> } ;<br> <br> _this.toHTML = function(args) {<br> var queue = _this.cache,<br> result;<br> _this.cache = [];<br> n = 0;<br> result = _this.header +キャッシュ.ジョイン("") + _this.footer;<br> for (i in args) {<br> if (args.hasOwnProperty(i)) {<br> result = result.replace("{$"+i+"}", args[i]);<br> } <br> }<br> return result;<br> };<br>}<br> <br></script>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Zustand非同期操作のデータの更新問題。 Zustand State Management Libraryを使用する場合、非同期操作を不当にするデータ更新の問題に遭遇することがよくあります。 �...
