前端每周清單第 34 期:Vue 現狀盤點與 3.0 展望,React 代碼遷移與優化,圖片優化詳論...

作者:王下邀月熊 編輯:徐川

前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID:frontshow),及時獲取前端每周清單。

新聞熱點

國內國外,前端最新動態

  • Microsoft 宣發面向 iOS 與 Android 平臺的 Microsoft Edge:為了保證 Windows 用戶各平臺使用體驗的一致性,Microsoft 于本周發布了針對于 iOS 與 Android 平臺的 Microsoft Edge 瀏覽器以及針對 Android 平臺的 Microsoft Launcher;不過目前各平臺上的 Edge 瀏覽器仍然使用的是操作系統默認的渲染引擎,即 iOS 系統上的 Webkit 引擎與 Android 的 Chrome 引擎,因此開發者們也無需擔心需要針對移動版的 Microsoft Edge 進行適配。

  • Firefox 56 正式發布:本周 Firefox 56 版本正式發布,其搭載的新一代 Quantum 引擎帶來了大幅度的性能提升、全新的交互界面、升級版本的開發者工具等諸多特性與優化。除此之外,Firefox 56 還提供了便捷的截圖功能,允許使用者對于網頁截圖編輯并且快速保存到云端;同時引入了 <link rel="preload"> 以提供資源預加載功能,并且允許使用者通過 -headless 指令來啟動無界面化的瀏覽器。

  • Mocha 4.0.0 發布:本周 Mocha 4.0.0 版本正式發布,其不再支持 Node.js Pre-v4.0.0 及之前的版本,不再支持 npm v2.15.11 以及之前的版本,并且計劃不再支持 Bower;除了版本的兼容性之外,Mocha 不再會強制測試完畢后退出,并且優化了輸出顯示。

  • iView 2.4 版本發布:iView 是基于 Vue.js 構建的界面組件與插件庫,其包含了 TalkingData 開發的一系列面向中間層與后端業務邏輯的解決方案;iView 提供了基礎組件、表單組件、視圖組件、導航組件、圖表與其他多種類型的組件。

開發教程

步步為營,掌握基礎技能

  • 8 個關鍵的 React 技術選型:自 2013 年 React 開源以來,React 技術棧也發生了急劇的變化與更新,現在搜索到的不少文章可能也都過時了;本文則是對于現在進行 React 開發所需要的技術棧進行了盤點。首先是開發環境,create-react-app 以 65% 獨占鰲頭;在類型系統上,有 42% 的開發者選擇了 PropTypes,34% 的開發者選擇了 TypeScript。而在狀態管理上,48% 的使用 Redux,11% 的使用了 MobX;越來越多的開發者也選擇使用 CSS 或 SASS 設置樣式,選擇用 HoC 或者 Render Props 來復用邏輯。更多 React 相關資料查看這里。

  • Vue.js 2 與 Vue.js 3 中響應式實現的對比:Vue.js 核心團隊已經在討論 Vue.js 3 中核心的響應式實現方式,在保證 API 一致的情況下,其內部實現方式可能會發生變化,本文即是對兩種響應式實現方案進行對比。Vue.js 2.0 的響應式主要依賴 Object.defineProperty,其具有較好地瀏覽器兼容性,但是其無法直接監聽數組下標方式變更以及動態添加的屬性;而 Vue.js 3 中則計劃使用 ES6 Proxy 來實現響應式監聽,其能夠簡化源代碼、易于學習,并且還能帶來更好地性能表現。更多 Vue.js 相關資料查看這里。

  • HTTPS 工作原理簡述:本文是對于 HTTPS 協議原理的簡要介紹,隨著越來越多的站點全站化 HTTPS,我們也有必要去了解 HTTPS 的相關知識。本文首先概述了 HTTPS 的機制原理,然后介紹了 Diffie-Hellman 算法,接下來介紹了電子證書、Asymmetric Key Encryption、電子簽名、證書校驗等內容;更多 HTTPS 相關資料查看這里。

  • CSS Grid 中的技巧與絆腳石:CSS Grid 為我們帶來了新的布局方式,不過在實際使用的過程中也存在著很多的問題,本文即是對這些技巧與絆腳石進行盤點。本文首先分析了 CSS Grid 相較于 Flexbox 的優勢,然后討論了 CSS Grid 與 Flexbox 各自的適用場景、自適應尺寸的 CSS Grid、如何利用 CSS Grid 實現瀑布流、如何添加背景與邊距色、如何進行嵌套布局、如何調試等內容;更多 CSS 相關資料查看這里。

工程實踐

立足實踐,提示實際水平

  • React, 內聯函數與性能:很多關于 React 性能優化的文章都會談及內聯函數,其也是常見的被詬病為拖慢性能表現的元兇之一;不過本文卻是打破砂鍋問到底,論證了內聯函數并不一定就會拖慢性能,過度的性能優化反而會有損于應用性能。作者從自己的實踐談起,首先討論了內聯函數可能拖慢性能的兩個原因:內存分配與垃圾回收、shouldComponentUpdate;作者認為使用內聯函數反而能夠減少組件初始化時的耗時,而 shouldComponentUpdate 或者 PureComponent 也并非所有的情況都能起作用,我們也是應該因時而異。更多 React 相關資料查看這里。
  • Angular 性能優化建議:Oasis Digital 一直在使用 Angular 來構建大型軟件項目,而在多年的實踐中,特別是在構建性能敏感的應用過程中,工程師們總結了很多的經驗教訓;本文即是他們分享的三個最為重要的性能優化相關的建議。本文首先討論了對于運行時性能的定義與指標構成,然后分析了如何提升事件的響應速度、如何最小化變化檢測的范圍、如何最小化 DOM 操作這三個優化策略。更多 Angular 相關資料查看這里。

  • 響應式圖片基礎:圖片是現代網站的重要組成,其能夠增強網頁的表現力與感染力;不過用戶往往不愿意過久地等待圖片加載,因此選擇合適的圖片尺寸能夠大大提升用戶體驗。作者在本文中闡釋了響應式圖片的基本概念以及常見的設置響應式圖片的方法;本文首先討論了如何選擇合適的方式來設置響應式圖片、如何選擇合適的分割點、像素與百分比的對比、瀏覽器中 size 屬性的作用、利用 CSS 使得圖片更加流暢等待。更多性能優化相關資料參考這里。

深度閱讀

深度思考,升華開發智慧

  • Vue.js 現狀盤點與未來規劃:本文不是一篇教程,而是以時間線敘述的方式來介紹 Vue.js 的創建與發展,Vue.js 技術社區的現狀以及未來 3.0 版本的規劃。本文首先介紹了 Vue.js 的創建初衷與設計理念,然后介紹了 Vue.js 目前的各種資源:學習資料、周報、論壇、社區等等,還有 Vue.js 相關的 Weex 這樣的原生擴展。最后本文還討論了 2.0 版本中對于測試套件、TypeScript 支持、ESLint 優化等提升,以及 3.0 版本中對核心的響應式機制、對于舊版本瀏覽器的支持等規劃。更多 Vue.js 相關資料查看這里。

  • V8 引擎中針對 ES2015 Proxy 進行的優化:Proxy 是 ES2015 的重要組成部分,其也被逐步地應用到眾多的項目或者庫中,譬如 jsdom、Comlink RPC 等;近日來 V8 團隊也在致力于提升 Proxy 在 V8 中的性能表現,本文主要分享了 V8 中 Proxy 的性能提升范式,也有助于開發者了解 Proxy 的實現原理。本文首先分析了老版本的 Proxy 實現原理與工作機制,然后討論了優化的解決方案以及現實環境下的性能對比;更多 V8 相關資料查看這里。

  • 圖片優化中的必知必會:截止 2017 年,圖片仍然是網絡帶寬最大的占用者,參考 HTTP Archive 的統計數據,所有抓取的網頁數據中有超過 60% 的流量是 JPEG、PNG 以及 GIF 等圖片資源;Addy Osmani 則在本書中非常詳細地闡述了圖片壓縮中必知必會的知識。本書首先拋出了觀點:所有的圖片都應該進行合適地壓縮,所有的壓縮都應當是自動化地進行,接下來本書依次介紹了如何判斷圖片是否需要壓縮、如何選擇合適的圖片格式、JPEG 的格式介紹與壓縮技巧、WebP 介紹與瀏覽器的支持情況、SVG 壓縮技巧、避免重復壓縮、雪碧圖、緩存、預加載等等內容;更多性能優化相關資料參考這里。

  • 大型代碼庫遷移到 React 16 過程中學到的知識:在 Facebook 正式發布了 React 16.0 版本之后,新的 Fiber 渲染流帶來了更多的性能提升;本文則是來自 Discord 的工程師分享的它們將原有應用升級到 React 16.0 版本的經驗。本文首先分析了新版本中帶來的譬如 ErrorBoundary 等一系列的特性變化,分享了 Discord 內部關于是否有必要升級的討論;然后介紹了利用 jscodeshift 來修正 PropTypes、如何安全移除原有內部 API 的使用、如何升級依賴,以及 React Native 中需要進行的升級工作等內容。更多 React 相關資料查看這里。

開源項目

樂于分享,共推前端發展

  • Vuera: Vuera 是同時兼容 React 與 Vue.js 組件的集成框架,它允許開發者在 React 中引入 Vue.js 組件,或者在 Vue.js 中引入 React 組件。Vuera 算是非常不錯的實驗性嘗試,不過其具體的性能表現如何還有待觀察。

  • Nest: Nest 是基于 TypeScript 的用于構建高性能、可擴展的 Node.js 應用的框架,其同時整合了面向對象編程 OOP 與函數式編程 FP 以及函數響應式編程 FRP 優秀理念。Nest 提供了類似于 Angular、Express 這樣著名框架的接口,內置了 WebSocket、響應式微服務支持、管道等多種功能特性。

  • Sentineljs: SentinelJS 是輕量級的,允許通過 CSS 選擇器設置監聽目標,并且動態監測新 DOM 節點創建的庫;它能夠在監控到新的 DOM 節點創建完畢之后自動調用回調函數。SentinelJS 相較于其他解決方案,使用了動態定義的 CSS Animation 規則中的 animationstart 事件來監聽某個元素是否存在,能夠獲得比 Mutation Observer 更好地性能表現。

巔峰人生

  • 欲修煉成架構師,必先……:本文是互聯網老兵陳美珍(Frank)分享的其對于架構師的看法與理解,以及成為架構師所需要各方面能力的討論。作者首先分析了什么是架構師以及架構師在團隊中的定位,然后討論了架構師與傳統領域專家的異同,最后分享了其認為架構師應該具備的各項能力,從基礎的邏輯、抽象、想象,到空杯、好奇、實踐的心態,以及技術架構與組織架構等待。

前端之巔

「前端之巔」是 InfoQ 旗下關注前端技術的垂直社群,加入前端之巔學習群請關注「前端之巔」公眾號后回復“加群”。投稿請發郵件到 editors@cn.infoq.com,注明“前端之巔投稿”。

前端之巔微信底圖-5.jpg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454905.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454905.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454905.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1.three.js世界的4大要素

一、三大組件 在Three.js中&#xff0c;要渲染物體到網頁中&#xff0c;我們需要3個組建&#xff1a;場景&#xff08;scene&#xff09;、相機&#xff08;camera&#xff09;和渲染器&#xff08;renderer&#xff09;。有了這三樣東西&#xff0c;才能將物體渲染到網頁中去。…

架構設計 例子和實踐

系統設計說明書(架構、概要、詳細)目錄結構 雖然這些文檔一般來說公司都是有模板的&#xff0c;但我寫這些文檔以來基本上是每寫一次就把目錄結構給改一次&#xff0c;應該說這是因為自己對這些文檔的理解開始加深&#xff0c;慢慢的越來越明白這些文檔的作用和其中需要闡述的東…

activiti 批量 mysql_Activiti6系列(3)- 快速體驗

一、部署啟動activiti####1、部署&#xff0c;將兩個war包拷貝到Tomcat下即可。![](https://img2018.cnblogs.com/blog/1755845/201908/1755845-20190802010532367-2002399291.png)2、啟動tomcat&#xff0c;訪問http://127.0.0.1:8080/activiti-app默認賬號密碼&#xff1a;ad…

【啟動】Windows上啟動圖形化軟件,報錯: 無法啟動此程序,因為計算機中丟失api-ms-win-crt-runtime-1-1-0.dll...

今天在安裝了jetbrains官網上的ToolBox軟件后&#xff0c;沒有辦法啟動起來&#xff0c;報錯如下&#xff1a; 無法啟動此程序&#xff0c;因為計算機中丟失api-ms-win-crt-runtime-1-1-0.dll 嘗試重新安裝了并沒有什么用&#xff0c;現在來解決方法&#xff1a; 直接找到官方的…

論文: YOLO9000-Better,Faster,Stronger

論文閱讀&#xff1a; YOLO9000-Better,Faster,Stronger YOLOv2 是經過改造之后的YOLO Batch Normalization&#xff1a;在所有的conv layer后加了BN之后提高了2% mAP&#xff0c;BN可以幫助regularize模型&#xff0c;這樣的話就可以放棄 dropout。 High Resolution Classifi…

怎么ie取消要打開或保存來自_取消認證后,發票抵扣就這么簡單!

點擊標題下「中財訊集團」可快速關注3月1日起&#xff0c;取消增值稅發票認證的納稅人范圍擴大至全部一般納稅人。一般納稅人可以自愿使用增值稅發票選擇確認平臺查詢、選擇用于申報抵扣、出口退稅或者代辦退稅的增值稅發票信息。具體如何操作呢&#xff1f;掌握以下步驟&#…

Google發布文檔數據庫Firestore

Google發布了Cloud Firestore&#xff0c;它是用于移動、網絡和服務器應用程序的文檔數據庫。\\去年我們曾報道過Google Firebase&#xff0c;它是一種用于移動和網絡開發的數據庫&#xff0c;提供實時的和離線的數據訪問&#xff0c;與許多Google服務相集成。他們現在推出了一…

好的軟件架構設計

什么是架構 前言&#xff1a;軟體設計師中有一些技術水平較高、經驗較為豐富的人&#xff0c;他們需要承擔軟件系統的架構設計&#xff0c;也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用&#xff0c;以及系統中邏輯的、物理的、系統的重要決定的作出。在很多公…

HihoCoder 1323 回文字符串

回文字符串 思路 動態規劃&#xff1a; 可以有三種修改決策 將開頭和結尾字符改成一樣在開頭加一個和末尾相同的字符在末尾加一個和開頭形同的字符代碼&#xff1a; #include <stdio.h> #include <iostream> #include <string.h> using namespace std; char …

python線程狀態_Python線程

1. 線程基礎1.1. 線程狀態線程有5種狀態&#xff0c;狀態轉換的過程如下圖所示&#xff1a;1.2. 線程同步(鎖)多線程的優勢在于可以同時運行多個任務(至少感覺起來是這樣)。但是當線程需要共享數據時&#xff0c;可能存在數據不同步的問題。考慮這樣一種情況&#xff1a;一個列…

JavaScript中錯誤正確處理方式,你用對了嗎?

JavaScript的事件驅動范式增添了豐富的語言&#xff0c;也是讓使用JavaScript編程變得更加多樣化。如果將瀏覽器設想為JavaScript的事件驅動工具&#xff0c;那么當錯誤發生時&#xff0c;某個事件就會被拋出。理論上可以認為這些發生的錯誤只是JavaScript中的簡單事件。 本文將…

文件分割機

文件分割與合并 要求&#xff1a;實現對大文件的分割與合并。 按指定個數切&#xff08;如把一個文件切成10份&#xff09;或按指定大小切&#xff08;如每份最大不超過10M&#xff09;&#xff0c;這兩種方式都能夠。 程序說明&#xff1a; 文件分割&#xff1a;把一個文件分割…

mysql pow函數怎么用_pow函數怎么用

PHP pow函數表示指數表達式。pow函數怎么用&#xff1f;php pow()函數 語法作用&#xff1a;pow()函數的作用是將一個數進行n次方計算后返回語法&#xff1a;pow(X,Y);參數&#xff1a;X表示要做處理的數字Y表示指定n次方中的n數值說明&#xff1a;返回X的Y次方冪&#xff0c;如…

【IntelliJ IDEA】添加一個新的tomcat,tomcat啟動無法訪問歡迎頁面,空白頁,404

第一部分&#xff0c;添加一個tomcat 1.先把Toolbar 和 Tool Buttons顯示出來 2.選擇Edit Configurations 3.添加一個新的tomcat server進來 解決no artifacts configured問題&#xff0c;就是沒有項目加入里面 先添加一個沒有的項目 啟動之后找不到 頁面 第二部分&#xff0c…

回文數-時間變換-判斷郵箱

class huiwenshu public class huiwenshu {public static void main(String[] args) {System.out.println("輸入...");Scanner in new Scanner(System.in);String number in.next();boolean flag true;for(int i0;i<number.trim().length()/2;i){if(!String.va…

mac eclipse tomcat mysql_mac下使用eclipse+tomcat+mysql開發 j2ee(一)

在這里是使用eclipse&#xff0b;tomcat&#xff0b;mysql的方式。1、軟件下載(1) eclipse我使用的是mac&#xff0c;因為本人是蘋果客戶端開發者&#xff0c;所以目前只有蘋果機器了。首先下載eclipse for mac&#xff0c;選擇mac 64位&#xff0c;下載eclipse-jee-kepler-SR1…

社交系統ThinkSNS-plus(TS+)V1.0發布!

2019獨角獸企業重金招聘Python工程師標準>>> 需要購買源碼的同志們&#xff0c;依然隨時可以聯系我們手機&#xff1a;18108035545&#xff08;同微信&#xff09;&#xff1b;電話&#xff1a;028-82884828 &#xff1b;QQ&#xff1a;3298713109&#xff1b; 從決…

《軟件架構設計》一書目錄

第一部分 軟件架構概念與思想篇 1 第1章 解析軟件架構概念 3 1.1 軟件架構概念的分類 3 1.1.1 組成派 4 1.1.2 決策派 5 1.2 軟件架構概念大觀 5 1.2.1 Booch、Rumbaugh和Jacobson的定義 5 1.2.2 Woods的觀點 6 1.2.3 Garlan和Shaw的定義 6 1.2.4 Perry和Wolf的定義 …

.net 讀取mysql數據庫配置文件_.NETCore添加及讀取默認配置文件信息

這里的默認配置文件指的是項目中的appsettings.json文件&#xff0c;我們可以把一些配置信息保存在里面&#xff0c;比如數據庫連接信息。來吧&#xff0c;看例子&#xff1a;1、先在appsettings.json文件中寫入數據庫的連接信息&#xff1a;{"Logging": {"LogL…

年齡層統計SQL

-- 處理名單丟失SELECT u.user_id u_userid,o.user_id o_userid,o.* FROMtb_gh_orders o LEFT JOIN tb_gh_user u ON o.user_id u.user_id WHERE o.course_id 128 AND o.order_state 1 ;-- 年齡段統計SELECT T1.*,CONCAT(LEFT (T1.C1 / T2.C2 * 100, 5), %) P FROM(SELECT C…