前端三大件的學習——wsdchong

前端三大件的學習

前言

之前做前端學習梳理的時候,總結了三塊知識。三大件+組件化、網絡基礎+性能優化、工程化。目前寫了後兩部分的筆記。今天寫第一部分的筆記。

最後落實到代碼的書寫上。今天梳理梳理HTML+CSS+JavaScript。

三大件

之前學習三大件的時候一直比較懵,說學會嗎,應該是沒學會,說沒學會吧,也能建網頁。但是隨着慢慢地學習,好像明白之前爲什麼會懵了,因爲學的內容和我想象中的內容不一樣。有兩點,一點是我想象中的網站是有後臺有交互的網站,但光學三大件做不到這些,還需要學後端(數據庫和服務器);一點是我想象中的網站很好看,很新穎,但是隻用三大件會很難實現,還需要學習框架。不過現在總算有了整體的認識,我覺得學習前端還需要架構和後端的知識,才能清楚定位前端。

瀏覽器的知識:從URL到頁面顯示的過程(Fetch階段和Render階段)。

HTML的語義化和div、CSS的選擇器和預編譯。

JavaScript的DOM控制和靜態數據類型。

HTML5

主要講常用標籤、HTML5語義化和div、本地存儲、SSR與CSR。

  • 常用標籤、HTML5語義化和div是基礎
  • 本地存儲和SSR與CSR是進階

常用標籤

從前後端交互的角度可以分爲靜態標籤(我定義的)和動態標籤。靜態標籤是不涉及交互的,如h1>p>img>canvas<ul<table<a;動態標籤是交互的內容,給後臺發生信息的標籤,如input type=“text”>;

div和語義化

語義化是用除div>標籤的標籤來顯示HTML文檔,這樣的優點有許多,如清晰的頁面結構、有利於SEO、便於開發與維護;不過通常情況下還是div一把梭,用得很爽,不用擔心默認樣式。

需要UI框架就是利於div標籤和類選擇器來設計的。使用UI框架只需要在類選擇器中填寫類就可以顯示想要的效果,十分舒適。

本地存儲

在HTML4的時候本地存儲是利用cookie,並且本地不能存數據庫。在HTML5中的本地存儲是web Storage,並且可以用indexedDB存儲數據庫。

相關資料如下:(根據題目搜到,可以自行搜索類似的)

借鑑《前端技術架構與工程》之性能筆記的從URL到頁面顯示能更好理解。

淺談session,cookie,token,webStorage區別

看完這篇 Session、Cookie、Token,和麪試官扯皮就沒問題了

看完這篇HTTP,跟面試官扯皮就沒問題了

看完這篇 HTTPS,和麪試官扯皮就沒問題了

除了web Storage外,HTML5 中的web worker(多線程併發)、文件API、fetchAPI、通信API(webSockets)、web組件、繪製圖形canvas、多媒體相關API都是重點,但是在這就沒具體展開了,可以根據這些關鍵詞搜。我是通過《HTML5與CSS3權威指南》作爲參考,懶得去官網找了。

SSR與CSR

《前端技術架構與工程》之編程語言筆記的HTML部分。裏面講的virtual DOM、預渲染、SEO值得借鑑。可以作爲基礎後面的部分,補充學習,便於理解MVVM框架。

CSS3

主要講CSS常用選擇器、盒子模型、響應佈局、預處理語言

  • 常用選擇器、盒子模型、響應佈局是基礎
  • 預處理語言是進階

選擇器+dev

CSS的class選擇器結合HTML的div標籤簡直六的一批。許多UI庫就是自己設置盒模型和響應佈局,我們去使用只需要把class填入即可。特別提高效率。如果以後熟練了,自己也設計一套自己常用的UI庫。

常用的選擇器有元素選擇器、ID選擇器、class選擇器。

CSS在HTML中的使用有外部樣式表、內部樣式表、內聯樣式表;大部分UI庫採用的就是外部樣式表,可以統一設計網站風格;內部樣式表專門設計當前HTML文檔的頁面,一般放在head中,在渲染的時候可以和HTML一起渲染;內聯樣式則是對HTML中元素的設計,專門針對一個元素。具體內容在菜鳥教程w3cschool或MDN中找。

盒子模型

設計元素的格式。

外邊距margin:bottom、left、right、top;完全透明,起清除周圍元素的作用

輪廓outline:width、style、color;起突出元素的作用

邊框border:width、style、color、spacing、collapse;可以指定元素邊框

內邊距padding:bottom、left、right、top;完全透明,起清除邊框內樣式的作用

響應佈局

我定義的。方便記定位、浮動、flexbox、滾動條、鏈接;

定位opsition:static、relative、absolute、fixed、sticky;比如定位導航欄

浮動float:left、right、none;比如走馬燈

彈性盒子flexbox:row、column、wrap

滾動條overflow:visible、hidden、scroll、auto、inherit

鏈接:link、visited、hover、active

預處理語言

CSS有不少缺點。如CSS沒有命名空間,選擇器中的表都是全局應用的;CSS沒有報錯基礎,只要運行後才能看到哪出錯了;各瀏覽器對CSS規範支持程度不一,爲了照顧兼容性,CSS會有大量兼容性的代碼,這使得CSS文件冗餘。

爲了彌補這些缺點,如less的預處理語言引入了變量、混合、模塊、繼承等特性,同時支持易於編寫和維護的嵌套語法。

不過預處理語法也有新的缺點,如大而全、難擴展;

最新的處理方法是CSS in JS,藉助JavaScript,使得CSS彌補了模塊體系,便於CSS的封裝和解耦,有命名空間,使得CSS有局部作用域。

JavaScript

主要講事件與輸出、數據類型、DOM、靜態類型、異步編程、ES

  • 事件與輸出、數據類型、DOM是基礎
  • 靜態類型、異步編程、ES6是進階

事件與輸出

既然有交互,那麼就會有事件和輸出,通常是HTML中的動態標籤輸入,然後JavaScript根據事件作出響應。這些就涉及到了JavaScript中處理的對象了。總共有四種對象(我定義的):JS對象、BOM對象、DOM對象、HTML對象;

事件有DOM中的事件和DOM中的Event事件;輸出主要有操作DOM的document、element、attribute對象和CSSStyleDeclaration、console對象、操作BOM的一些對象。

下面這是我根據《JavaScript權威指南(第6版)》附錄摘錄的。

JS對象是JavaScript語言裏的對象,主要有number、string、Boolean、underfined、symbol、num六種基礎數據類型、array、object、function三種引用數據類型。在下面這個表中還有描述時間的date對象、描述數學公式的math對象、描述正則表達式的RegExp對象、描述報錯的Error對象。

BOM對象是瀏覽器對象模型,主要有window對象、navigator對象、screen對象、history對象、location對象、存儲對象。

DOM對象是文檔對象模型,主要有Document、Element、Attribute三個操作HTML的對象,事件對象Event、控制檯對象console、CSS樣式對象CSSStyleDeclaration、以及collection對象。

HTML對象則是HTML對象中的標籤對象,也是DOM中的一種,但是我單獨拿出來了,方便記憶,如anchor、body、button、style等。

一、JS對象

Array對象:屬性(length)方法(fill、find、pop、push)

Boolean對象:屬性(constructor、prototype)方法(toString、valueOf)

Date對象:屬性(construct)、方法(getDate、setDate、toJSON)

Math對象:屬性(PI)、方法(asin、cos、pow、sqrt)

Number對象:屬性(NaN、MAX_VALUE)方法(toString)

String對象:屬性(用數組)、方法(search、tostring)

RegExp對象:pattern、modifiers、方括號、元字符、量詞、方法(test、toString)

全局屬性:屬性(infinity、NaN、undefined)函數(decodeURI)

運算符:算數、賦值、字符串、比較、條件、邏輯、位

Error對象:屬性(name、message)

二、BOM對象

Window對象:屬性(closed、history、location)方法(alert、close、scrollto)

Navigator對象:屬性(appname、useragent)、方法(javaenabled)

Screen對象:屬性(availHeight、colorDepth、height)

History對象:屬性(length)、方法(back、forward、go)

Location對象:屬性(hash、host、href、port、search)方法(reload)

存儲對象:屬性(length)、方法(key、clear)

三、DOM對象

Document對象:屬性(document.activeElement、document.cookie)

Element對象:屬性(element.getAttribute)

Attributes對象:屬性(attr.value)

Events對象:屬性(onclick、onkeydown、onerror、onsubmit、oncopy)

Console對象:方法(clear、error、log)

CSSStyleDeclaration對象:屬性(csstext、length)方法(item、removeProperty)

Collection對象:方法(item、length、nameditem)

四、HTML對象

Anchor對象:屬性(href、name、type)

Body對象:屬性(background、link、text)、事件(onload)

Button對象:屬性(disabled、form、name、type、value)

Canvas對象:屬性(fillstyle、shadowcolor、font)、方法(fill、scale、drawimage)

Form對象:屬性(action、length、name)方法(reset、submit)、事件(onreset、onsubmit)

Image對象:屬性(align、alt、border、src)、事件(onload、onerror)

Link對象:屬性(href、type)

Script對象:屬性(async、src、text、type)

Style對象:屬性(aligncontent、background、bottom、color、font、margin)

數據類型

在ES6中,變量用let定義、常量用const定義;ES6之前是var定義。

JavaScript中,數據類型分爲基礎類型和對象類型。

基礎類型有六種:數字、布爾、字符型、underfined、null、以及ES新特性符號;

對象類型分爲自定義類型和內置類型,自定義類型是object、內置類型有六種:array、date、error、function、object、RegExp。

類型轉換、標識符命名、運算符和表達式、控制流;這些根據關鍵詞查就可以。在這我就不展開了。

DOM

文檔對象模型,是HTML和XML文檔的編程接口。雖然上面講了部分DOM的知識,但是DOM的知識有許多,是前端開發的核心。

jQuery:降低開發者操作DOM的複雜度。以優秀的DOM操作聞名。

MVVM中的virtual DOM則是大幅度降低了DOM操作,提高性能。

靜態類型

在ES6之前的JavaScript採用的是var定義的動態類型,這種類型雖然靈活,對輕量級項目有絕對積極的作用,但是設計大型項目時會有巨大影響,如和類型相關的bug一般的在測試或者生產環境中爆發,如果採用靜態類型的話,就可以在編譯環境中提前發現。TypeScript是JavaScript靜態類型編程語言,可以幫助我們寫靜態類型的JavaScript。

異步編程

異步編程的好處是併發,提高響應。ajax和node.js都有類似的思路。

ES6

是新版本JavaScript語言標準,其新特性有變量與常量、類的引入、箭頭函數;

更新地址:GitHub

更多內容請關注:CSDNGitHub掘金

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章