前端架構應用概念 這篇介紹幾個前端架構應用概念。 1.I18N物件 2.PageConfig 3.JCache
I18N物件 1 2 3 4 5 6 7 8 9 10 11 12 13 主要是處理多國語言,因為有些彈出的訊息會需要用到多國語系,這邊跟Java一樣是可以帶參數的。 I18N.setResource({ 'form.text.sun' :"<%=langMessage.get(" form.text.sun") %>" , 'form.text.mon' :"<%=langMessage.get(" form.text.mon") %>" , 'form.text.tue' :"<%=langMessage.get(" form.text.tue") %>" , 'form.text.wed' :"<%=langMessage.get(" form.text.wed") %>" , 'form.text.thu' :"<%=langMessage.get(" form.text.thu") %>" , 'form.text.fri' :"<%=langMessage.get(" form.text.fri") %>" , 'form.text.sat' :"<%=langMessage.get(" form.text.sat") %>" , 'form.text.today' :"<%=langMessage.get(" form.text.today") %>" , 'form.text.close' :"<%=langMessage.get(" form.text.close") %>" });
PageConfig 1 2 3 4 5 6 7 8 主要用於一些server端的設定,讓js檔案能取得相關的資訊,如果沒有靠這個介接,會導致很多javascript會需要放到jsp。 <script type ="text/javascript" > if (typeof (PageConfig) == "undefined" ) { PageConfig = {}; } PageConfig.currencySymbol = '$' ; </script>
JCache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 如果需要重複拿某一個 dom element 來處理,記得使用 JCache 來取得 dom element,會比較有效率。 不然每 call 一次 $('#xxId' ) 都會搜尋整個 html document 重新把 id 為 xxId 的 dom element select 出來。 但是如果 dom element 會改變,就不能用 JCache,因為 JCache 會 cache 住舊版本的 dom element 另外, 綁定 onclick 因為只會執行一次,就可以不用 JCache。 例如 $('#search-btn' ).click(function () {...}); /*** JCache ***/ if (typeof (JCache) == 'undefined' ) { JCache = {}; } (function () { var pool = {}; JCache.get = function (element) { //Note:JCache.get('xxx' )可能回傳 null if (element == null || element.length == 0) { return null; } var result = pool[element]; if (!result) { try { result = $j (element); pool[element] = result; } catch (e) { console.error(e); } } return result; }; JCache.clone = function (element) { var obj = JCache.get(element); if (obj == null) { return null; } return obj.clone(); }; })();
const.js 1 這是仿照Java的enum做出的設計,讓設計上會更有彈性,大部分會跟server端的enum type 做對應
JSUtil.js 1 共用的工具類別,如果之後新瀏覽器javascript版本有提供相同功能,建議使用原生的