2017年jsconf在柏林舉行,為期2天,5月7日-8日。jsconf在前端領域是相當有影響力的,可以通過jsconf的分享内容了解前端技術驅勢及發展方向。今年重點在以下幾個方面:移動端的性能、各種nodejs編寫的提高前端工程化效率的工具、reactjs的周邊工具,angularjs已不被提起。es6已大面積興起,es6+babel是最佳拍檔。

會議舉辦還是相當專業的,分為主會場和一個分會場,以一段音樂party開場,主持人也用唱的方式表述了jsconf的開場宣詞。每個topic的時間是30分鐘,絕不拖堂,每個topic的演講嘉賓都會控制在25-27分鐘左右,整個會場嚴格按照議程進行,友善聽衆聽取提前規劃的參會議程。今年的特點是女性演講嘉賓偏多,而且都特别漂亮。在演講嘉賓分享後聽衆都會給予持續半分鐘的熱烈掌聲(可能與文化有關,在國内很少聽到有如此熱烈和長時間的掌聲)。
下面詳細講解下其中比較有意思的topic:
根據最新的2017年的資料顯示,移動端的webpage平均需要16秒可以互動,19秒全部加載完成,js大小為420kb左右。之是以這麼慢的原因是處理過程需要三大步:
1)、初始化請求-->傳回html
2)、根據傳回的html請求css、js、images--->傳回css、js、images
3)、解析css、js、images再顯示。
在web端解析時間占12.4%,編譯時間占8.3%;移動端解析占13.2%,編譯時間占10.2%。
如果要縮短可互動的等待時間,以下建議可以采納:
3)、使用babel-plugin-lodash加載需要的最小化的module。
4)、prpl模式或http/2:
http/2(或稱http2.0):
5)、requestidlecallback:requestidlecallback是2017年1月31日w3c定義的标準,使用requestidlecallback函數實作延遲圖檔的加載。
函數式程式設計的三大特點:
1):“immutable data 不可變資料”:預設上變量是不可變的,如果你要改變變量,你需要把變量copy出去修改,可以讓你的程式少很多bug。
2):“first class functions(讓你的函數就像變量一樣來使用)”:你的函數可以像變量一樣被建立,修改,并當成變量一樣傳遞,傳回或是在函數中嵌套函數。如javascript的prototype。
3):“尾遞歸優化”:即是遞歸調用放在方法末尾的遞歸方式。
本topic講解了“不可變的資料結構”在js中的應用。使用mori工具,他的優勢是共享此變量,而不是copy,性通上會比較有優勢。下面看下具體代碼示例:
開源社群的工具或系統組成了軟體生态系統,而被依賴的軟體如果代碼變更結果可能是破壞性的,例如:删除、重命名 可能會在整個生态系統中産生波動,進而導緻許多軟體包維護者和使用者的返工。變更的原因主要是:新功能,消除技術債務,提高效率和修複錯誤。不同的開發商和不同的社群對于誰應該支付變更的成本和時間有不同的态度。
1) eclipse:向後相容降低維護人員的成本,平台穩定,開發者門檻較高。自2001年以來超過1600個擴充。代碼中的方法使用棄用制,而不是删除,已棄用的方法保留>10年。
3) nodejs: 一個比喻“上個星期的教程今天已經不适應”,門檻較低,社群沒有審查或測試要求,自2009年以來超過25萬個npm包,并且仍在快速增長。npm平台有一些不尋常的特征,即一個包的多個修訂版本可以在同一個項目中共存。開發人員可以輕松快速地釋出和使用包,社群對于快速變化而言是開放的,并且具有實驗api的文化,直到它們是正确的。草根推動,重點強調工具建設和社群。
是以各個開源社群采用什麼樣的行動與其“價值觀”高度穩合。eclise與nodejs形成了鮮明對比,一個是以穩定向後相容為價值觀,一個是以草根、使開發者輕松快速釋出和使用包為價值觀,你的社群主張什麼價值觀呢?