国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【前端】重構方案了解一下

ningwang / 2127人閱讀

摘要:定義公共組件供各模塊或特定場景調用,復用度高第三方庫組件插件庫用于解決以下版本瀏覽器對新增標簽不識別,并導致不起作用的問題。

前端重構方案 前言

前端技術發展很快,很多項目面臨前端部分重構,很開心可以讓我進行這次項目前端的重構方案編寫,在思考的同時參考了網上很多資料,希望本篇重構方案有一定的完整性,可以帶給大家一些在面臨重構時有用的東西,同時希望路過的大牛小牛不領賜教,能給我略微指點下重構相關的點,在下感激不盡~

一、原項目梳理

首先對原來項目做一個大概的梳理,既然是重構,當然很多東西是可以繼續拿來使用的。

1.1頁面結構

我這邊負責的PC端的重構,所以先把頁面結構及之間的關系梳理了一遍,并用xmind畫好結構圖,重點功能做上標記,因為vue是漸進式框架,所以我會優先重構重要的部分
xmind結構圖我就不上了,職業操守還是要的

1.2項目結構

項目結構是針對代碼組織結構的,梳理了項目各重要的文件夾及文件并注明對應的內容或者作用。同樣的,使用xmind畫出結構圖,xmind圖略。

1.3前端框架、模板

使用公司內部人員自創框架C.F.F,自定義build文件,內嵌Smarty模板獲取后臺數據,利用{$xxx}獲取后臺數據,但是定義了很多全局變量存儲模板數據,造成占用更多內存、污染命名空間等問題。
定義公共組件供各模塊或特定場景調用,復用度高

1.4第三方庫、組件、插件

jquery: JavaScript庫
html5shiv:用于解決IE9以下版本瀏 覽器對HTML5新增標簽不識別,并導致CSS不起作用的問題。
Dialog : jquery彈窗插件
jCarousel : jquery 輪播插件 (重構版舍棄,原因不復雜的場景能原生實現盡量原生實現)
respond:為 IE6-8 以及其它不支持 CSS3 Media Queries 的瀏覽器提供媒體查詢的 min-width 和 max-width 特性,實現響應式網頁設計
sideToolbar:導航工具
echarts: 圖形工具
...

二、重構方案 2.1開發規范

命名規范

html/css/less/sass/scss/javascript編碼規范

代碼檢查工具 eslint

規范這個東西沒有絕對的對錯,只有同公司或者同部門來制定規范大家都保持一致,同事之間能很快讀懂相互的代碼,提高開發效率

2.2技術選型

2.2.1 開發模式:前后端分離

前后端分離開發早已成為趨勢,到現在新項目大多采用這種模式進行開發,項目完全重構的話當然首選此模式
好處:以前沒有前端這一職位之說,都是后端兼顧開發,數據庫、底層服務、接口,頁面一把梭,壓力大,而且精力有限不能在每個領域都做的出色。后來有切圖這一職,可以把頁面寫的更精美一些,通過模板和請求接口配合進行數據交互,前端都是緊緊耦合于后端,這種情況下開發,溝通成本,開發過程中進度依賴成本都是較高的。前后端分離后,分工更明確,各自專注做好自己領域的事,同時開工,不相互依賴,效率高
原理:(此圖來自某博客,地址忘記。 望博主看到能聯系我加上轉載出處,在此抱歉~)


開啟一個本地的服務器來運行自己的前端代碼,以此來模擬真實的線上環境;
利用nodejs的express框架來開啟一個本地的服務器,然后利用nodejs的一個http-proxy-middleware插件將客戶端發往nodejs的請求轉發給真正的服務器,讓nodejs作為一個中間層。
然后就是數據問題了,后端接口在開發中,前端需要數據怎么辦呢?mockjs了解一下,
API地址https://github.com/nuysoft/Mo... ,當后端設計出AP接口文檔后,我們就可以利用mockjs模擬出對應格式的假數據進行開發,等到接口完全完成之后,再進行接口聯調

2.2.2 MVVM框架:vue

Vue是一個漸進式框架,容易入手、容易協同,能夠快速靈活的開發迭代。同時也是目前主流三大框架里學習成本最低的,目前,公司也在主推vue作為首選框架,進行相關技術的培訓。
Vue社區相對熱度高,組件、庫、輪子多,資源整合鏈接:https://segmentfault.com/p/12...
體積小、自由度高、腳手架創建的項目自帶webpack打包構建工具
雖然vue是單頁應用,但是可以通過配置webpack進行多頁開發

2.2.3 css預編譯語言

使用css預編譯語言來寫css會提高編寫css效率(具體提高多少百分比效率可自行測試,我覺得找一段寫好的css,先用css寫一遍,再用less或者其他寫一遍計算耗時百分比,這里忽略寫樣式時候思考的時間進行測試)
預編譯語言可以定義變量(比如常用的顏色、字體、字號等)、嵌套寫法、可以繼承其他類的屬性、計算、內置函數等

2.2.4 常用類庫

圖形工具—echarts (對應場景 – xxx)
適配插件—flexible taobaoH5終端適配方案 (對應場景—xxx)
Lodash – JS函數庫 (對應場景—xxx)
ElementUI – UI庫 (對應場景—xxx)
One-Page-Nav – 導航插件 (對應場景—xxx)
具體場景我就不寫了,根據你們不同的業務需求去判斷需要哪些類庫插件之類的,預先決定好,以免半途做什么都要去花時間思考

2.3構建工具

既然選擇了vue框架,構建工具當然選擇vue自帶的webpack了,對于webpack有人說會配置項目就行,有人說要深入研究,這個看個人需求我覺得

2.4開發效率

PS一鍵切圖功能

emmet快速編寫HTML

#page>div.logo+ul#navigation>li*5>a{Item $}

按下tab鍵,上述代碼 等于

背景:原項目寫的純css

less/sass/scss 快速編寫css

比如

@base-size: 40px;
@theme-color: #ccc;
@my-selector: title;

.aa {
  font-weight: bold;
}

.@{my-selector} {
  font-size: @base-size;
  color: @theme-color;
  margin: 100/2px 200/10px;
  &-ok {
    color: green;
  }
  &-no {
    color: yellow;
  }
  > li{
    &:extend(.aa);
    &:hover {
      color: #fff;
    }
  }
}

編譯后為:

.aa,
.title > li {
  font-weight: bold;
}
.title {
  font-size: 40px;
  color: #ccc;
  margin: 50px 20px;
}
.title-ok {
  color: green;
}
.title-no {
  color: yellow;
}
.title > li:hover {
  color: #fff;
}

這里只寫了一點點,功能還有很多的
less官網選我選我
sass官網:選我選我

webpack:壓縮代碼、圖片,合并JS,檢測文件更新等自動進行

webstorm自帶取色器(其他IDE應該都有,自行找下)

寫顏色色值的地方可以點擊調出取色板(不限于css),可以選顏色也可以利用吸管取色(屏幕任意處 不限于IDE內部),也有取色的網站可以收藏到書簽工具文件夾里

Mockjs:上面有介紹mockjs,這里不再贅述,由于本人有過手寫假數據的悲慘經歷,故把mockjs列入可以提高開發效率行列,因為前后端分離后前后端同時開發,假數據已成必須

比如:

let template = {
    "anchorList|3-6":[{
      "id|1-100": 1,
      "name": "@cname",
      "date": "@date(yyyy-MM-dd)",
      biubiubiu: () => Mock.Random.string("abcdefghijklmnopqrstuvwxyz", 5),
      "arr|2-5": [{
        "age|10-20": 0
      }]
    }]
  }
  console.log(Mock.mock(template))

輸出:

模塊化、組件化開發:前后端解耦后,前端之間配合也可以解耦,各自負責不同的模塊開發,寫自己的組件,最后通信部分再協同

2.5性能優化

2.5.1 數據存取

☆ 盡量使用局部變量
☆ 對象成員的嵌套深度與讀取時間成正比,嵌套過深要進行優化

2.5.2 DOM

☆ 盡量減少DOM操作(訪問和修改都算)的次數
☆ 訪問元素時使用最快的API
☆ 使用事件委托來減少事件處理器的數量
☆ 減少重繪和重排的次數

2.5.3 算法和流程

☆ for循環、while循環、do-whild循環比for in 要快
☆ 優化循環體的復雜度
☆ 最小化屬性查找:
for(let i = 0, len = arr.length; i < len; i++){

...

}
☆ 當條件較少時 使用if-else更易讀,而當條件較多時if-else性能負擔比switch大,易讀性也沒switch好。
☆ 對于if else 概率越大的條件越靠前判斷 比如:

☆ 當計算量很大且重復的時候,用Memoization緩存計算結果

2.5.4 字符串拼接

比較下四中字符串拼接方法的性能:
A:str = str + "a"+"b"
B:str += "a" + "b"
C: arr.join("")
D:str.concat("b","c")
☆ Chrome65上測試的是A優于B優于C優于D
其他瀏覽器不確定

2.5.5 Ajax

☆ 服務端設置HTTP頭信息確保響應會被瀏覽器緩存
☆ 客戶端講獲取的信息存到本地避免再次請求(localstorage sessionstorage cookice)
☆ 設置HTTP頭信息,expiresgaosu告訴瀏覽器緩存多久
☆ 減少HTTP請求,合并css、js、圖片資源文件等或使用MXHR
☆ 通過次要文件用Ajax獲取可縮短頁面加載時間

這里只列了比較重要的一部分,安利一下我之前寫的性能優化總結傳送門

2.6模塊化組件化

模塊化:以前由CommonJs、AMD、CMD等實現,現在ES6的Module(原生模塊化)完全可以取而代之,靈活、高效是模塊化開發的好處,對于某個模塊我想輸出就輸出,想引入就引入,輸出引入也只需一個關鍵詞(export/import),而且ES6模塊語法支持暴露常量、單一接口、所有接口、混合暴露、取別名等等靈活高效是毋庸置疑的
配合webpack在構建的時候把資源整合打包壓縮自動處理了一些以前需要手動進行的性能優化問題了
組件化:解決復雜業務的痛點,把復雜的業務分為很多個組件分開開發管理以降低開發難度和維護成本。一個5000行的頁面和十個500行命名規范的組件哪個開發、維護簡單?
組件靈活隨加隨用,可復用避免重復開發,可組合使用

2.7前端安全

2.7.1 XSS

XSS是指瀏覽器錯誤的將攻擊者提供的用戶輸入數據當做JavaScript腳本給執行了
解決辦法:校驗用戶輸入,特殊字符進行轉義
Vue 雙花括號自帶過濾功能

2.7.2 本地存儲數據泄露

本地存儲的所有數據就都可能被攻擊者的JS腳本讀取到,所以敏感、機密信息都不建議在前端存儲
const常量 let 塊級作用域避免代碼習慣不佳導致的作用域混亂問題

2.8用戶體驗

☆ 優化加載速度,減少用戶等待時間
☆ 減少不必要的無謂的操作
☆ 動畫交互合理,短平快的交互或者動畫更適合知學寶,我們是功能型網站不是欣賞型網站,不需要太花里胡哨的動畫,那樣反而增加等待時間,適得其反
☆ 更賞心悅目的UI(字體、圖片、logo,按鈕、列表等)
☆ 處理好很多小的細節的地方,比如... 針對項目的地方就略了

關于用戶體驗這塊暫時沒找到比較權威的書,如果大家有覺得不錯的歡迎留言推薦~

end

寫的不是很細,但愿很多地方都覆蓋到了,歡迎留言補充~
注:內容有不當或者錯誤處請指正~轉載請注明出處~謝謝合作!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94779.html

相關文章

  • 前端窩 - 收藏集 - 掘金

    摘要:毫無疑問,設計模式于己于他人于系統都是多贏的設計模式使代碼編寫真正工程化設計模小書前端掘金這是一本關于的小書。 JavaScript 常見設計模式解析 - 掘金設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。毫無疑問,設計模式于己于他人于系統都是多贏的;設計...

    李文鵬 評論0 收藏0
  • 重構 - 改善代碼的各方面問題

    摘要:暴露接口如果是函數,就擴展,否則就是驗證數據使用金額校驗規則這樣運行能正常,也有擴展性性,但是對于代碼潔癖的來說,這樣寫法不優雅。 重構不是對以前代碼的全盤否定,而是利用更好的方式,寫出更好,更有維護性代碼。不斷的追求與學習,才有更多的進步。 1.前言 做前端開發有一段時間了,在這段時間里面,對于自己的要求,不僅僅是項目能完成,功能正常使用這一層面上。還盡力的研究怎么寫出優雅的代碼,性...

    AlphaWallet 評論0 收藏0
  • 騰訊前端求職直播課——面試篇

    摘要:主講人石小勇騰訊高級前端工程師,核心成員之一,現主要負責騰訊興趣部落的研發設計工作閑聊前端從移動時代開始,前后端分離之后,前端這個崗位才開始慢慢火起來一線城市前端需求量大,但合格前端很少大話面試面試如相親,為什么這么說五大要素顏王面試的第一 主講人:AlloyTeam@石小勇(騰訊高級前端工程師,AlloyTeam核心成員之一,現主要負責騰訊QQ興趣部落的研發設計工作) 1.閑聊前端 ...

    YFan 評論0 收藏0
  • 騰訊前端求職直播課——面試篇

    摘要:主講人石小勇騰訊高級前端工程師,核心成員之一,現主要負責騰訊興趣部落的研發設計工作閑聊前端從移動時代開始,前后端分離之后,前端這個崗位才開始慢慢火起來一線城市前端需求量大,但合格前端很少大話面試面試如相親,為什么這么說五大要素顏王面試的第一 主講人:AlloyTeam@石小勇(騰訊高級前端工程師,AlloyTeam核心成員之一,現主要負責騰訊QQ興趣部落的研發設計工作) 1.閑聊前端 ...

    gxyz 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<