JS優化系列 乙個通用公告系統的實現

2021-08-30 04:08:13 字數 2355 閱讀 2089

之前一篇《【js優化系列】從乙個計時器的寫法**js多種實現方式的優劣》的討論讓我學到不少東西,現在再來一篇,拋磚引玉。

站點的很多頁面經常需要發一些公告,而每次發公告都需要開發同學手工來操作是很麻煩的,而且經常不夠實時。因此寫了乙個通用公告系統,希望能將這份工作交由產品同學來操作。這裡只寫了「小黃條」一種形式的公告,其他形式實現方法類似。實現了可以「定時自動關閉」,「所有頁面每次開啟都顯示小黃條」,「僅在第一次開啟的頁面顯示一次」,「使用者手動關閉後不再顯示」功能。以此基本能滿足日常運營需求。

先將**和實現方式貼出,邀請大家一起**優化。

/*** 通用公告系統

* * @package pub_notice.js

* @author jessezhang * @date 2009-08-15

* @version 1.0.0

*/var lib = lib || {};

lib .pubnotice = (function()

var $ = lib ;

/*** 小黃條

*

* @access public

* @param json 小黃條屬性

*/function yellowtips(json)

yellowtips.prototype = (function()

/*** 顯示小黃條

* * @access public

*/

function show()

/*** 隱藏小黃條的介面

* * @access public

*/

function hide() , this._timeout);

} else

} /**

* 內部實現隱藏小黃條

* * @access private

*/ function _hide()

/*** showtype : 顯示方式

* 1:所有頁面每次開啟都顯示

* 2:只在第一次開啟的頁面顯示一次

* 3:使用者手動關閉後不顯示

** cookievalue : cookie儲存的狀態

* 1:已經顯示過

* 2:使用者手動關閉

*/ function _checkshowtype()

return

})()

/*** 浮出層,建設中...

* */

function floatlayer(obj){}

/*** 彈出視窗,建設中...

* */

function openwindow(obj){}

/*** 將設定的url轉化成驗證頁面位址的正規表示式

* * @access private

* @param url 設定的url

* @return 驗證頁面位址的正規表示式

*/function _regurl(url) else );

} else

return ret;

});return new regexp(regstr);

} }/**

* 判斷當前頁面的url是否符合要求

* * @access public

* @param str 設定的驗證url的字串

*/function checkurl(str),

, ] for(var i=0; i目前的實現方式是,所有頁面都在自身載入完成之後去載入這段**。**會通過頁面的url來判斷是否顯示公告,以及顯示哪幾條公告。而設定的時候有兩種方式,一種是輸入特定頁面的完全url,另一種是通過正則來匹配。在本實現中以傳入的url是否以「^」符號其起始來判斷是否當正則來處理(這種方式好壞大家可以一起**),如「^表示發布到vip.lib.com網域名稱下的所有頁面,「或者「表示僅僅發布到lib首頁乙個頁面。

這裡的**將由管理後台生成,若沒有沒有公告,則所有**為空,以節省流量。

在本例中應該有很多地方可以優化的,希望大家一起**優化。比如_regurl()這個函式的實現,我並沒有做很多的考慮,肯定有很多可以優化的地方。還有實現方式上也有很多地方值得**,比如這樣做所有頁面都多了個請求,所有頁面都會引入所有的公告內容,這樣實現是否是最好的。**是由管理後台生成的,那麼產品同學輸入內容的,在後台輸出的時候是不是需要過濾處理那些特殊字元,等等。。。還有很多其他需要周全考慮的地方。

希望大家一起來**,讓**達到最「優雅」。當然大家的**不僅僅是**上,還可以是整個公告實現的方式上的。

【本人發帖拋磚引玉,希望能夠引出更多的「玉」來,希望所寫的每一段**都能夠得到一種最「優雅」的實現方式。以後本人會丟擲更多的「磚」,希望能引來更多的「玉」,以供大家一起學習進步】

乙個不起眼的公告

非常抱歉,已經好久沒更新了。不應該這樣但確實事出有因。原因主要有 一 專案時間太緊。寫文章確實很費時間,我寫的這幾篇文章都是我自己實踐過,然後才放上來的。需要總結,需要實踐,需要思考,所以很耗精力。二 專案開發思路改變了。之前我們專案組討論的是大部分使用native組建,然後極少數變動較大的組建使用...

乙個關於js 優化的問題

在我們遍歷陣列 for 迴圈的時候,通常習慣的寫法是這樣 for var i 0 i myarray.length i 但是在這段 中,有乙個十分明顯的問題,就是每次在迴圈的時候,都會計算一邊 myarray.length 的值,這就意味著每次都要實時查詢dom,而dom的操作又是十分昂貴的。在這個...

乙個通用的makefile(一)

最近在編寫android編譯系統時,需要遍歷每乙個目錄下每乙個資料夾下的makefile,網上的方法有些繁瑣 就直接貼上自己遍歷子目錄深度為1 for temporary 之後會繼續更新 下面是我的乙個簡單例項工程 資料夾目錄層次 獲取當前目錄下的子目錄名字 2 subdir shell ls l ...