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

資訊專欄INFORMATION COLUMN

程序員練級(jí)攻略(2018):前端基礎(chǔ)和底層原理

widuu / 2794人閱讀

摘要:下面我們從前端基礎(chǔ)和底層原理開(kāi)始講起。對(duì)于和這三個(gè)對(duì)應(yīng)于矢量圖位圖和圖的渲染來(lái)說(shuō),給前端開(kāi)發(fā)帶來(lái)了重武器,很多小游戲也因此蓬勃發(fā)展。這篇文章受眾之大,后來(lái)被人重新整理并發(fā)布為,其中還包括中文版。

想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你!

這個(gè)是我訂閱 陳皓老師在極客上的專欄《左耳聽(tīng)風(fēng)》,我整理出來(lái)是為了自己方便學(xué)習(xí),同時(shí)也分享給你們一起學(xué)習(xí),當(dāng)然如果有興趣,可以去訂閱,為了避免廣告嫌疑,我這就不多說(shuō)了!以下第一人稱是指陳皓老師。

對(duì)于前端的學(xué)習(xí)和提高,我的基本思路是這樣的。首先,前端的三個(gè)最基本的東西 HTML5、CSS3 和 JavaScript(ES6)是必須要學(xué)好的。這其中有很多很多的技術(shù),比如,CSS3 引申出來(lái)的 Canvas(位圖)、SVG(矢量圖) 和 WebGL(3D 圖),以及 CSS 的各種圖形變換可以讓你做出非常豐富的渲染效果和動(dòng)畫(huà)效果。

ES6 簡(jiǎn)直就是把 JavaScript 帶到了一個(gè)新的臺(tái)階,JavaScript 語(yǔ)言的強(qiáng)大,大大釋放了前端開(kāi)發(fā)人員的生產(chǎn)力,讓前端得以開(kāi)發(fā)更為復(fù)雜的代碼和程序,于是像 React 和 Vue 這樣的框架開(kāi)始成為前端編程的不二之選。

我一直認(rèn)為學(xué)習(xí)任何知識(shí)都要從基礎(chǔ)出發(fā),所以我會(huì)有很大的篇幅在講各種技術(shù)的基礎(chǔ)知識(shí)和基本原理,尤其是如下的這些知識(shí),都是前端程序員需要一塊一塊啃掉的硬骨頭。

JavaScript 的核心原理。這里我會(huì)給出好些網(wǎng)上很不錯(cuò)的講 JavaScript 的原理的文章或圖書(shū),你一定要學(xué)好語(yǔ)言的特性和其中的各種坑。

瀏覽器的工作原理。這也是一塊硬骨頭,我覺(jué)得這是前端程序員需要了解和明白的東西,不然,你將無(wú)法深入下去。

網(wǎng)絡(luò)協(xié)議 HTTP。也是要著重了解的,尤其是 HTTP/2,還有 HTTP 的幾種請(qǐng)求方式:短連接、長(zhǎng)連接、Stream 連接、WebSocket 連接。

前端性能調(diào)優(yōu)。有了以上的這些基礎(chǔ)后,你就可以進(jìn)入前端性能調(diào)優(yōu)的主題了,我相信你可以很容易上手各種性能調(diào)優(yōu)技術(shù)的。

框架學(xué)習(xí)。我只給了 React 和 Vue 兩個(gè)框架。就這兩個(gè)框架來(lái)說(shuō),Virtual DOM 技術(shù)是其底層技術(shù),組件化是其思想,管理組件的狀態(tài)是其重點(diǎn)。而對(duì)于 React 來(lái)說(shuō),函數(shù)式編程又是其編程思想,所以,這些基礎(chǔ)技術(shù)都是你需要好好研究和學(xué)習(xí)的。

UI 設(shè)計(jì)。設(shè)計(jì)也是前端需要做的一個(gè)事,比如像 Google 的 Material UI,或是比較流行的 Atomic Design 等應(yīng)該是前端工程師需要學(xué)習(xí)的。

而對(duì)于工具類的東西,這里我基本沒(méi)怎么涉及,因?yàn)楸疚闹饕€是從原理和基礎(chǔ)入手。那些工具我覺(jué)得都很簡(jiǎn)單,就像學(xué)習(xí) Java 我沒(méi)有讓你去學(xué)習(xí) Maven 一樣,因?yàn)橹灰闳?dòng)手了,這種知識(shí)你自然就會(huì)獲得,我們還是把精力重點(diǎn)放在更重要的地方。

下面我們從前端基礎(chǔ)和底層原理開(kāi)始講起。先來(lái)講講 HTML5 相關(guān)的內(nèi)容。

HTML5

HTML5 權(quán)威指南 ,本書(shū)面向初學(xué)者和中等水平 Web 開(kāi)發(fā)人員,是牢固掌握 HTML5、CSS3 和 JavaScript 的必讀之作。書(shū)看起來(lái)比較厚,是因?yàn)槔锩娴拇a很多。

HTML5 Canvas 核心技術(shù) ,如果你要做 HTML5 游戲的話,這本書(shū)必讀。

對(duì)于 SVG、Canvas 和 WebGL 這三個(gè)對(duì)應(yīng)于矢量圖、位圖和 3D 圖的渲染來(lái)說(shuō),給前端開(kāi)發(fā)帶來(lái)了重武器,很多 HTML5 小游戲也因此蓬勃發(fā)展。所以,你可以學(xué)習(xí)一下。

學(xué)習(xí)這三個(gè)技術(shù),我個(gè)人覺(jué)得最好的地方是 MDN。

SVG: Scalable Vector Graphics

Canvas API

The WebGL API: 2D and 3D graphics for the web

最后是幾個(gè)資源列表。

Awesome HTML5 。GitHub 上的 Awesome HTML5,其中有大量的資源和技術(shù)文章。

Awesome SVG

Awesome Canvas

Awesome WebGL

CSS

在《程序員練級(jí)攻略(2018)》系列文章最開(kāi)始,我們就推薦過(guò) CSS 的在線學(xué)習(xí)文檔,這里再推薦一下

MDN Web Doc - CSS 。我個(gè)人覺(jué)得只要你仔細(xì)讀一下文檔,CSS 并不難學(xué)。絕大多數(shù)覺(jué)得難的,一方面是文檔沒(méi)讀透,另一方面是瀏覽器支持的標(biāo)準(zhǔn)不一致。所以,學(xué)好 CSS 最關(guān)鍵的還是要仔細(xì)地讀文檔。

之后,在寫(xiě) CSS 的時(shí)候,你會(huì)發(fā)現(xiàn),你的 CSS 中有很多看起來(lái)相似的東西。你的 DRY - Don’t Repeat Yourself 潔癖告訴你,這是不對(duì)的。所以,你需要學(xué)會(huì)使用 LESS 和 SaSS
這兩個(gè) CSS 預(yù)處理工具,其可以幫你提高很多效率。

然后,你需要學(xué)習(xí)一下 CSS 的書(shū)寫(xiě)規(guī)范,前面的《程序員修養(yǎng)》一文中提到過(guò)一些,這里再補(bǔ)充幾個(gè)。

Principles of writing consistent, idiomatic CSS

Opinionated CSS styleguide for scalable applications

Google HTML/CSS Style Guide

如果你需要更有效率,那么你還需要使用一些 CSS Framework,其中最著名的就是 Twitter 公司的 Bootstrap,其有很多不錯(cuò)的 UI 組件,頁(yè)面布局方案,可以讓你非常方便也非常快速地開(kāi)發(fā)頁(yè)面。除此之外,還有,主打清新 UI 的 Semantic UI 、主打響應(yīng)式界面的 Foundation 和基于 Flexbox 的 Bulma。

當(dāng)然,在使用 CSS 之前,你需要把你瀏覽器中的一些 HTML 標(biāo)簽給標(biāo)準(zhǔn)化掉。所以,推薦幾個(gè) Reset 或標(biāo)準(zhǔn)化的 CSS 庫(kù):Normalize 、MiniRest.css、 sanitize.css 和 unstyle.css。

關(guān)于更多的 CSS 框架,你可以參看 Awesome CSS Frameworks

接下來(lái),是幾個(gè)公司的 CSS 相關(guān)實(shí)踐,供你參考。

CodePen’s CSS

Github 的 CSS

Medium’s CSS is actually pretty f*ing good

CSS at BBC Sport

Refining The Way We Structure Our CSS At Trello

最后是一個(gè)可以寫(xiě)出可擴(kuò)展的 CSS 的閱讀列表 A Scalable CSS Reading List

JavaScript

下面是學(xué)習(xí) JavaScript 的一些圖書(shū)和文章。

JavaScript: The Good Parts ,中文翻譯版為《JavaScript 語(yǔ)言精粹》。這是一本介紹 JavaScript 語(yǔ)言本質(zhì)的權(quán)威圖書(shū),值得任何正在或準(zhǔn)備從事 JavaScript 開(kāi)發(fā)的人閱讀,并且需要反復(fù)閱讀。學(xué)習(xí)、理解、實(shí)踐大師的思想,我們才可能站在巨人的肩上,才有機(jī)會(huì)超越大師,這本書(shū)就是開(kāi)始。

Secrets of the JavaScript Ninja ,中文翻譯版為《JavaScript 忍者秘籍》,本書(shū)是 jQuery 庫(kù)創(chuàng)始人編寫(xiě)的一本深入剖析 JavaScript 語(yǔ)言的書(shū)。適合具備一定 JavaScript 基礎(chǔ)知識(shí)的讀者閱讀,也適合從事程序設(shè)計(jì)工作并想要深入探索 JavaScript 語(yǔ)言的讀者閱讀。這本書(shū)有很多晦澀難懂的地方,需要仔細(xì)閱讀,反復(fù)琢磨。

Effective JavaScript ,Ecma 的 JavaScript 標(biāo)準(zhǔn)化委員會(huì)著名專家撰寫(xiě),作者憑借多年標(biāo)準(zhǔn)化委員會(huì)工作和實(shí)踐經(jīng)驗(yàn),深刻辨析 JavaScript 的內(nèi)部運(yùn)作機(jī)制、特性、陷阱和編程最佳實(shí)踐,將它們高度濃縮為極具實(shí)踐指導(dǎo)意義的 68 條精華建議。

接下來(lái)是 ES6 的學(xué)習(xí),這里給三個(gè)學(xué)習(xí)手冊(cè)源。

ES6 in Depth,InfoQ 上有相關(guān)的中文版 - ES6 深入淺出。還可以看看 A simple interactive ES6 Feature list ,或是看一下 阮一峰翻譯的 ES6 的教程。

ECMAScript 6 Tools ,這是一堆 ES6 工具的列表,可以幫助你提高開(kāi)發(fā)效率。

Modern JS Cheatsheet ,這個(gè) Cheatsheet 在 GitHub 上有 1 萬(wàn) 6 千顆星,你就可見(jiàn)其影響力了。

然后,還有一組很不錯(cuò)的《You Don’t Know JS 系列》 的書(shū)。

You Don’t Know JS: “Up & Going”

You Don’t Know JS: “Scope & Closures”

You Don’t Know JS: “this & Object Prototypes”

You Don’t Know JS: “ES6 & Beyond”

接下來(lái)是一些和編程范式相關(guān)的文章。

Glossary of Modern JavaScript Concepts: Part 1 ,首先推薦這篇文章,其中收集了一些編程范式方面的內(nèi)容,比如純函數(shù)、狀態(tài)、可變性和不可變性、指令型語(yǔ)言和聲明式語(yǔ)言、函數(shù)式編程、響應(yīng)式編程、函數(shù)式響應(yīng)編程。

Glossary of Modern JavaScript Concepts: Part 2 ,在第二部分中主要討論了作用域和閉包,數(shù)據(jù)流,變更檢測(cè),組件化……

下面三篇文章是德米特里·索什尼科夫(Dmitry Soshnikov)個(gè)人網(wǎng)站上三篇講 JavaScript 內(nèi)在的文章。

JavaScript. The Core: 2nd Edition

JavaScript. The Core (older ES3 version)

JS scope: static, dynamic, and runtime-augmented

How JavaScript Works” 是一組非常不錯(cuò)的文章(可能還沒(méi)有寫(xiě)完),強(qiáng)烈推薦。這一系列的文章是 SessionStake 的 CEO 寫(xiě)的,現(xiàn)在有 13 篇,我感覺(jué)可能還沒(méi)有寫(xiě)完。這個(gè)叫 亞歷山大·茲拉特科夫(Alexander Zlatkov) 的 CEO 太猛了。

An overview of the engine, the runtime, and the call stack

Inside the V8 engine + 5 tips on how to write optimized code ,了解 V8 引擎。這里,也推薦 Understanding V8’s Bytecode 這篇文章可以讓你了解 V8 引擎的底層字節(jié)碼。

Memory management + how to handle 4 common memory leaks ,內(nèi)存管理和 4 種常見(jiàn)的內(nèi)存泄露問(wèn)題。

Event loop and the rise of Async programming + 5 ways to better coding with async/await ,Event Loop 和異步編程。

Deep dive into WebSockets and HTTP/2 with SSE + how to pick the right path ,WebSocket 和 HTTP/2。

A comparison with WebAssembly + why in certain cases it’s better to use it over JavaScript ,JavaScript 內(nèi)在原理。

The building blocks of Web Workers + 5 cases when you should use them ,Web Workers 技術(shù)。

Service Workers, their lifecycle and use cases ,Service Worker 技術(shù)。

The mechanics of Web Push Notifications ,Web 端 Push 通知技術(shù)。

Tracking changes in the DOM using MutationObserver ,Mutation Observer 技術(shù)。

The rendering engine and tips to optimize its performance ,渲染引擎和性能優(yōu)化。

Inside the Networking Layer + How to Optimize Its Performance and Security ,網(wǎng)絡(luò)性能和安全相關(guān)。

Under the hood of CSS and JS animations + how to optimize their performance ,CSS 和 JavaScript 動(dòng)畫(huà)性能優(yōu)化。

接下來(lái)是 Google Chrome 工程經(jīng)理 阿迪·奧斯馬尼(Addy Osmani) 的幾篇 JavaScript 性能相關(guān)的文章,也是非常好的。

The Cost Of JavaScript

JavaScript Start-up Performance

其它與 JavaScript 相關(guān)的資源。

JavScript has Unicode Problem ,這是一篇很有價(jià)值的 JavaScript 處理 Unicode 的文章。

JavaScript Algorithms ,用 JavaScript 實(shí)現(xiàn)的各種基礎(chǔ)算法庫(kù)。

JavaScript 30 秒代碼 ,一堆你可以在 30 秒內(nèi)看懂各種有用的 JavaScript 的代碼,在 GitHub 上有 2 萬(wàn)顆星了。

What the f*ck JavaScript ,一堆 JavaScript 搞笑和比較 tricky 的樣例。

Airbnb JavaScript Style Guide ,Airbnb 的 JavaScript 的代碼規(guī)范,GitHub 上有 7 萬(wàn)多顆星。

JavaScript Patterns for 2017 ,YouTube 上的一個(gè) JavaScript 模式分享,值得一看。

瀏覽器原理

你需要了解一下瀏覽器是怎么工作的,所以,你必需要看《How browsers work》。這篇文章受眾之大,后來(lái)被人重新整理并發(fā)布為《How Browsers Work: Behind the scenes of modern web browsers》,其中還包括中文版。這篇文章非常非常長(zhǎng),所以,你要有耐心看完。如果你想看個(gè)精簡(jiǎn)版的,可以看我在 Coolshell 上發(fā)的《瀏覽器的渲染原理簡(jiǎn)介》或是看一下這個(gè)幻燈片。

然后,是對(duì) Virtual DOM 的學(xué)習(xí)。Virtual DOM 是 React 的一個(gè)非常核心的技術(shù)細(xì)節(jié),它也是前端渲染和性能的關(guān)鍵技術(shù)。所以,你有必要要好好學(xué)習(xí)一下這個(gè)技術(shù)的實(shí)現(xiàn)原理和算法。當(dāng)然,前提條件是你需要學(xué)習(xí)過(guò)前面我所推薦過(guò)的瀏覽器的工作原理。下面是一些不錯(cuò)的文章可以幫你學(xué)習(xí)這一技術(shù)。

How to write your own Virtual DOM

Write your Virtual DOM 2: Props & Events

How Virtual-DOM and diffing works in React

The Inner Workings Of Virtual DOM

深度剖析:如何實(shí)現(xiàn)一個(gè) Virtual DOM 算法

以及兩個(gè) Vitual-DOM 實(shí)現(xiàn)供你參考:

Matt-Esch/Virtual-DOM

Maquette

網(wǎng)絡(luò)協(xié)議

High Performance Browser Networking ,本書(shū)是谷歌公司高性能團(tuán)隊(duì)核心成員的權(quán)威之作,堪稱實(shí)戰(zhàn)經(jīng)驗(yàn)與規(guī)范解讀完美結(jié)合的產(chǎn)物。本書(shū)目標(biāo)是涵蓋 Web 開(kāi)發(fā)者技術(shù)體系中應(yīng)該掌握的所有網(wǎng)絡(luò)及性能優(yōu)化知識(shí)。

全書(shū)以性能優(yōu)化為主線,從 TCP、UDP 和 TLS 協(xié)議講起,解釋了如何針對(duì)這幾種協(xié)議和基礎(chǔ)設(shè)施來(lái)優(yōu)化應(yīng)用。然后深入探討了無(wú)線和移動(dòng)網(wǎng)絡(luò)的工作機(jī)制。最后,揭示了 HTTP 協(xié)議的底層細(xì)節(jié),同時(shí)詳細(xì)介紹了 HTTP 2.0、 XHR、SSE、WebSocket、WebRTC 和 DataChannel 等現(xiàn)代瀏覽器新增的能力。

另外,HTTP/2也是 HTTP 的一個(gè)新的協(xié)議,于 2015 年被批準(zhǔn)通過(guò),現(xiàn)在基本上所有的主流瀏覽器都默認(rèn)啟用這個(gè)協(xié)議。所以,你有必要學(xué)習(xí)一下這個(gè)協(xié)議。下面相關(guān)的學(xué)習(xí)資源。

Gitbook - HTTP/2 詳解

http2 explained(中譯版)

HTTP/2 for a Faster Web

HTTP/2 的兩個(gè) RFC:

RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2) ,HTTP/2 的協(xié)議本身。

RFC 7541 - HPACK: Header Compression for HTTP/2RFC 7541 - HPACK: Header Compression for HTTP/2

新的 HTML5 支持 WebSocket,所以,這也是你要學(xué)的一個(gè)重要協(xié)議。

HTML5 WebSocket: A Quantum Leap in Scalability for the Web ,這篇文章比較了 HTTP 的幾種鏈接方式,Polling、Long Polling 和 Streaming,并引入了終級(jí)解決方案 WebSocket。你知道的,了解一個(gè)技術(shù)的緣由是非常重要的。

StackOverflow: My Understanding of HTTP Polling, Long Polling, HTTP Streaming and WebSockets ,這是 StackOverflow 上的一個(gè) HTTP 各種鏈接方式的比較,也可以讓你有所認(rèn)識(shí)。

An introduction to Websockets ,一個(gè) WebSocket 的簡(jiǎn)單教程。

Awesome Websockets ,GitHub 的 Awesome 資源列表。

一些和 WebSocket 相關(guān)的想法,可以開(kāi)闊你的思路:

Introducing WebSockets: Bringing Sockets to the Web

Websockets 101

Real-Time Web by Paul Banks

Are WebSockets the future?

小結(jié)

總結(jié)一下今天的內(nèi)容。我一直認(rèn)為學(xué)習(xí)任何知識(shí)都要從基礎(chǔ)出發(fā),所以今天我主要講述了 HTML5、CSS3 和 JavaScript(ES6)這三大基礎(chǔ)核心,給出了大量的圖書(shū)、文章以及其他一些相關(guān)的學(xué)習(xí)資源。之后,我建議你學(xué)習(xí)瀏覽器的工作原理和網(wǎng)絡(luò)協(xié)議相關(guān)的內(nèi)容。我認(rèn)為,掌握這些原理也是學(xué)好前端知識(shí)的前提和基礎(chǔ)。值得花時(shí)間,好好學(xué)習(xí)消化。

代碼部署后可能存在的BUG沒(méi)法實(shí)時(shí)知道,事后為了解決這些BUG,花了大量的時(shí)間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個(gè)好用的BUG監(jiān)控工具 Fundebug。

你們的點(diǎn)贊是我持續(xù)分享好東西的動(dòng)力,歡迎點(diǎn)贊!

交流

干貨系列文章匯總?cè)缦拢X(jué)得不錯(cuò)點(diǎn)個(gè)Star,歡迎 加群 互相學(xué)習(xí)。

https://github.com/qq44924588...

我是小智,公眾號(hào)「大遷世界」作者,對(duì)前端技術(shù)保持學(xué)習(xí)愛(ài)好者。我會(huì)經(jīng)常分享自己所學(xué)所看的干貨,在進(jìn)階的路上,共勉!

關(guān)注公眾號(hào),后臺(tái)回復(fù)福利,即可看到福利,你懂的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/108740.html

相關(guān)文章

  • 序員練級(jí)攻略2018):Java底層知識(shí)

    摘要:最黑科技的玩法就是字節(jié)碼編程,也就是動(dòng)態(tài)修改或是動(dòng)態(tài)生成字節(jié)碼。使用字節(jié)碼編程可以玩出很多高級(jí)玩法,其中最高級(jí)的玩法是在程序運(yùn)行時(shí)進(jìn)行字節(jié)碼修改和代碼注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);這個(gè)是我訂閱 陳皓老師在極客上的專欄《左耳聽(tīng)風(fēng)》,我貼出來(lái)是為了自己以后方便學(xué)習(xí)和記憶,同時(shí)也分享給你們一起學(xué)習(xí)...

    wean 評(píng)論0 收藏0
  • 序員練級(jí)攻略2018):技術(shù)資源集散地

    摘要:,美國(guó)著名程序員風(fēng)險(xiǎn)投資家博客和技術(shù)作家。,從年以來(lái),獲獎(jiǎng)的計(jì)算機(jī)科學(xué)方面的論文收集。截至年月,已收集超過(guò)萬(wàn)篇預(yù)印本。其中的分類可以認(rèn)為也是一個(gè)論文的集散地。 showImg(https://segmentfault.com/img/bVbjVFa?w=1142&h=640); 這個(gè)是我訂閱 陳皓老師在極客上的專欄《左耳聽(tīng)風(fēng)》,我整理出來(lái)是為了自己方便學(xué)習(xí),同時(shí)也分享給你們一起學(xué)習(xí),當(dāng)...

    Lorry_Lu 評(píng)論0 收藏0
  • 前端練級(jí)攻略(第二部分)

    摘要:是文檔的一種表示結(jié)構(gòu)。這些任務(wù)大部分都是基于它。這個(gè)實(shí)踐的重點(diǎn)是把你在前端練級(jí)攻略第部分中學(xué)到的一些東西和結(jié)合起來(lái)。一旦你進(jìn)入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進(jìn)行操作。它是在前端系統(tǒng)像今天這樣復(fù)雜之前編寫(xiě)的。 本文是 前端練級(jí)攻略 第二部分,第一部分請(qǐng)看下面: 前端練級(jí)攻略(第一部分) 在第二部分,我們將重點(diǎn)學(xué)習(xí) JavaScript 作為一種獨(dú)立的語(yǔ)言,如...

    BWrong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<