重學前端

先來看個大綱

整個系列包含三個部分,即構建Web應用程序或頁面要用的最基本的三部分:HTMLCSSJavaScriptjavascript

HTML部分

  1. HTML語義:只用divspan是否是就夠了?
  2. HTML語義:一篇wiki文章究竟會用到哪些語義元素?
  3. 文檔元信息:你知道head裏一共能寫哪幾種標籤嗎?
  4. 連接:除了a標籤,還有標籤叫連接?
  5. 嵌入型元素:怎麼link一個CSS要用href,而引入JS要用src呢?
  6. HTML標籤:標籤總結
  7. HTML語言:dtd究竟是什麼?
  8. ARIA:可訪問性不止是給盲人用戶的特性

初看了一下提綱中的八個部分。細思了一下,本來自覺得相對了解HTML的我,有幾點仍是不敢確定、準確的說出答案。那麼從我本身的角度來看這幾點。css

HTML語義化

早期的前端開發者都會比較在乎和注重這方面。隨着時代的遷移,其實有不少同窗開始不太在乎這方面的細節。所以在不少網站通篇的只能看到div這樣的標籤元素。但事實上,像divspan這樣的標籤元素是沒有任何語義化的,他們僅僅是隻被運用於佈局上。並且在任何瀏覽器中,都沒法使用鍵盤讓其得到焦點,另外也可訪問性API也沒法進行任何通訊。事實上,構建一個具備語義化的頁面或應用程序,咱們除了使用具備語義化的HTML標籤以外,還須要在結構作一些考量,好比說,headerfootermainasideemstrong標籤,應該放在什麼位置,應該在什麼地方使用它們。html

在個人認知裏,一個具備語義化的頁面是要經得起HTML標記驗證服務的驗證。另外還有一種更土的方式,那就是當你的Web頁面在CSS裸奔的時候,結構清晰,並且不會影響用戶對網站的瀏覽。更爲高層次的呢?前端

寫出來的HTML結構要讓機器能夠讀懂,也要能讓人能夠讀懂!java

有關於HTML語義化相關的討論也較多,其中 @E0 大大在知乎上的回答就很詳細。有關於其餘的討論和文章,要是感興趣的話,能夠閱讀下面的幾篇文章:web

  • The practical value of semantic HTML
  • Semantics in HTML 5
  • semantic html
  • Semantic HTML
  • Accessibility Through Semantic HTML
  • Let’s Talk about Semantics

<head>能放些什麼標籤

<head>標籤是全部文檔元素的容器,它包含了文檔的所有信息。常見的信息主要包括:<meta><title><base><style><link><script><noscript>等標籤。而其中<meta>的信息量是最大的。好比:api

<meta charset="UTF-8">
<meta http-equiv="refresh" content="5;url="/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="description" content="150 words"/>
<meta name="keywords" content="your tags"/>
<meta name="robots" content="index,follow"/>
<meta name="author" content="author name"/>
<meta name="google" content="index,follow"/>
<meta name="googlebot" content="index,follow"/>
<meta name="verify" content="index,follow"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
<meta name="apple-mobile-web-app-title" content="標題">
<meta content="telephone=no" name="format-detection"/>
<meta content="email=no" name="format-detection"/>
<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL"/>
<meta name="HandheldFriendly" content="true">
<meta name="MobileOptimized" content="320">
<meta name="screen-orientation" content="portrait">
<meta name="x5-orientation" content="portrait">
<meta name="full-screen" content="yes">
<meta name="x5-fullscreen" content="true">
<meta name="browsermode" content="application">
<meta name="x5-page-mode" content="app">
<meta name="msapplication-tap-highlight" content="no">

有關於meta標籤更詳細的介紹能夠閱讀:xcode

  • Meta 標籤與搜索引擎優化
  • meta 標籤大全
  • HTML Meta標籤知多少
  • HTML Tags for SEO: to use or not to use?
  • Complete list of html meta tags/

連接:除了a標籤,還有標籤叫連接?

這個話題我比較期待。在HTML中除了<a>標籤,還有什麼標籤叫連接?在個人印象中,<area>標籤有點相似於<a>標籤,能夠作連接跳轉。可是不是這個答案,我將期待着。瀏覽器

怎麼link一個CSS要用href,而引入JS要用src呢?

這個問題真沒有細想過。前段時間恰好在哪翻到過這方面的討論,能夠找不到答案了。不過在stackoverflow網站上也有一個相似的問題。看了一個點贊較高的答案:性能優化

簡單點說,使用src表達的是該無事的內容能夠被替換,好比imgscriptiframe元素;href表達的是超連接,與引用文檔或外部資源創建關係,好比alink等元素。

其餘

另外幾條,相對而言接觸的比較多。特別是ARIA相關的方面。有關於ARIA相關的東西,在24 Accessibility網站有不少話題。另外在Web內容無障礙指南 2.0是ARIA方面最新的規範指南。

CSS部分

  1. 媒體、分頁、視口:除了屬性和選擇器,你還要知道這些帶@的規則
  2. 選擇器:爲何只有子元素選擇器,沒有父元素選擇器
  3. 佈局正常流:其實從畢昇開始,大家就在用正常流
  4. 佈局彈性盒:垂直居中爲何這麼難?
  5. 文本:baseline究竟是啥東西?
  6. 顏色與形狀:CSS是如何繪製顏色與形狀的?
  7. 動畫與交互:爲何動畫要用貝塞爾曲線這麼奇怪的東西?
  8. CSS屬性:CSS總結

對於CSS部分而言,本身相對接觸的比較多一點,若是要把CSS方面的東西講全,那足能夠講很久,甚至花一本書的章節來介紹,都不必定難闡述的完。簡單的列了一個大綱,差很少有26章節的內容可聊。本身也在根據這個大綱完善內容。相比之下,我在完善的內容是怎麼使用CSS,而@winter大大在聊的是爲何?好比其中:

  • 選擇器:爲何只有子元素選擇器,沒有父元素選擇器
  • 佈局彈性盒:垂直居中爲何這麼難?
  • 文本:baseline究竟是啥東西?
  • 顏色與形狀:CSS是如何繪製顏色與形狀的?
  • 動畫與交互:爲何動畫要用貝塞爾曲線這麼奇怪的東西?

上述幾個問題?好幾個都不知道是爲何?正好跟着大大的思路學習一下,大神是如何深刻理解這些。這將爲我之後深刻學習CSS將會有很大的幫助。對於貝塞爾曲線和顏色,向你們推薦一篇文章,介紹的很是詳細:

  • Bezier Curves from the Ground Up
  • Color: From Hexcodes to Eyeballs

JavaScript

  1. 類型:關於類型,有哪些你忽視的細節
  2. 對象:JavaScript是面向對象仍是基於對象
  3. 對象:JavaScript中,咱們真的須要模擬類嗎
  4. 函數:this有什麼用?應該怎麼用?
  5. 函數:JavaScript裏的閉包到底要怎麼用?適合用在哪裏?
  6. 事件循環與微任務:Promise裏的代碼爲何比setTimeout先執行
  7. 語句:try裏面放returnfinally還會執行嗎
  8. 語句:爲何1.toString會報錯
  9. 運算符與表達式:新加入的**運算符,好像有哪裏不同
  10. 語句,程序與表達式:在script標籤裏寫export爲何會拋錯
  11. 分號自動補全:到底要不要寫分號呢

對於JavaScript部分,一直是個人弱項,今年立個flag,但願能跟着把這方面的知識加強一些。

瀏覽器實現原與API

很早溫大就跟我說,要好好把瀏覽器的原理方面的知識理解透,這將有益學習和理解一些深層次的東西。但一直以來沒有進展。此次專欄中提到了:

  • 瀏覽器的工做原理:你最熟悉的瀏覽器,是怎麼寫出來的(上)
  • 瀏覽器的工做原理:你最熟悉的瀏覽器,是怎麼寫出來的(中)
  • 瀏覽器的工做原理:你最熟悉的瀏覽器,是怎麼寫出來的(下)
  • DOM:如何用JS操做文檔
  • CSSOM:如何獲取一個元素的準確位置
  • 事件:捕獲模型和冒泡模型究竟是怎麼來的
  • 其它一些API:API總集合

有關於瀏覽器原理相關的文章,在互聯網上也至關的多,其中有幾篇文章我以爲仍是不錯的,值得推薦給你們:

  • 瀏覽器的渲染原理簡介
  • 圖解瀏覽器的工做原理
  • 瀏覽器的工做原理:新式網絡瀏覽器幕後揭祕

要Google開發者網站上,2018年@Mariko Kosaka也推出了四篇文章,深刻的介紹了瀏覽器的工做原理:

  • Inside look at modern web browser (part 1)【譯文】
  • Inside look at modern web browser (part 2)【譯文】
  • Inside look at modern web browser (part 3)【譯文】
  • Inside look at modern web browser (part 4)

對於DOM和CSSOM,在18年仍是花了很多時間在學習,其中仍是有很多的收穫,但我想聽完這個課以後,再回過頭來對比以前學習的筆記,我想也會有較大的收穫吧。

前端綜合應用

  1. 性能:前端性能到底對業務數據有多大的影響
  2. 工具鏈:什麼樣的工具鏈才能提高團隊效率
  3. 持續集成:幾十個前端一塊兒工做,怎麼保證基本質量
  4. 搭建系統:大量的低價值需求如何應付
  5. 架構與基礎庫: 如何設計基礎庫

這是專欄的第四部分,我也很感興趣。期待專欄也早點出來,估計不少同窗都對這一部分很感興趣的吧。有關於性能方面的,我也推薦幾篇文章:

  • Front-End Performance Checklist 2019 [PDF, Apple Pages, MS Word]
  • 前端性能優化の備忘錄(2018版)
  • 前端性能優化の備忘錄(2017版)

最後說一點

很多同窗在說:

購買,這個課程是在交智商稅

就此問題,@winter也針對性的作了闡述。感興趣的能夠點擊這裏。我只想說,智者見知,仁者見仁

也有很多同窗在說:

這個專欄的內容太簡單了。

對而我言,雖然」很基礎「,但我還有不少都不知道,特別是其中的爲何?就拿我擅長的CSS來講吧,大綱中的八個,我就有一大半不知道爲何?這就是與大神的差距。

另外,我記得前段時間在Hacker News上提出這樣的一個問題」Stop Learning Frameworks「。平時也有同窗問我,應該不該該去學習JS框架。其實就我我的而言,我更強調先把基礎學好,若是工做是要用到框架,能夠邊學邊用,但對於基礎仍是要紮實一點。

相關文章
相關標籤/搜索