web前端雜記:深入瞭解原理,擴充套件學習
在前端學習裡面,很多人都是注重學習程式碼(html,css,js)。或者是一些框架,庫(jquery,vue,react),或者是各種工具(webpack,gulp)。在以往的文章裡面,或者自己和別人交談,都有建議過別人多練,不要悶頭就寫程式碼,多深入瞭解當中的原理,學習其中的思想。但是除了程式碼方面的知識之外,還有哪一些是作為一個前端,應該擴充套件學習的呢?下面簡單羅列和整理了一下最學習經驗
下面的知識,可能不需要太過於深入,詳細的掌握,但是必須要有所瞭解,這樣在開發上遇到問題,解決問題的時候即使不是如虎添翼,也是錦上添花。
2.http,https
前端而言,不可避免的要和介面打交道。除了和後臺對介面,請求資料,渲染頁面,之外。對http的請求,也是要有一個瞭解,比如http協議,請求方式,請求過程,結果狀態碼等。瞭解這些,對開發的時候可能遇到的問題,就可以大概知道問題是怎麼產生的,更快的知道怎麼解決,避免。
2-1.請求
首先一個請求,包含有請求頭,請求行,請求正文。具體是怎樣境,看下面的程式碼
如上所述
method和url就是這個請求的請求行(這裡是請求行部分資訊,其實請求行還包括http協議的版本等資訊)。headers中的屬性就是請求頭,裡面的屬性,全部包含在請求的 header裡面,是服務端獲取客戶端版本,快取等資訊的一個途徑。data對應的就是請求正文,也就是平常所說的引數。
2-2.響應
在請求發出去,並且響應已經回來的時候,就時候資訊可分為響應行,響應頭,響應正文。
響應行
引用看雲的一個請求作為例項,如下程式碼就是這個請求的響應行,返回請求的http協議及版本,狀態碼,請求狀態等描述資訊。
響應頭
響應頭和請求頭格式一致,返回版本,快取等資訊。
響應正文
平常接觸最多的就是響應正文,也就是日常開發需要用到的資料。開發者拿到這些資料之後,再進行相應的處理。
2-3.關於https
關於 https 。下面可以先了解下 http 的缺點,https就是http基礎上做的加密處理。
1.通訊使用明文不加密,內容可能被竊聽 2.不驗證通訊方身份,可能遭到偽裝 3.無法驗證報文完整性,可能被篡改
3.響應狀態碼
上面提到響應狀態碼,在這裡也簡單寫下。在前端方面,請求介面可能會接觸到各種情況,常見的有下面幾個,應該怎麼解決,就是具體問題,具體分析。
對web前端這門技術感興趣的小夥伴可以加入到我們的學習圈來,程式設計工作第六個年頭了,與大家分享一些學習方法,實戰開發需要注意的細節。784-783-012 秋裙。從零基礎開始怎麼樣學好前端。看看前輩們是如何在程式設計的世界裡傲然前行!不停更新最新的教程和學習方法(web前端系統學習路線,詳細的前端專案實戰教學影片),有想學習web前端的,或是轉行,或是大學生,還有工作中想提升自己能力的,正在學習的小夥伴歡迎加入。我們會一起結伴同行 學習前端我們是認真的
4.前端方面的安全性
4-1.XSS
XSS(Cross Site Scripting)是跨站指令碼攻擊,為了區分CSS,所以縮寫為XSS。XSS攻擊方式是往Web頁面插入惡意的 JavaScript 程式碼,當使用者瀏覽網頁的時候,插入的程式碼就是被執行,從而達到攻擊的目的。
其中應用比較多的一個就是,在網頁一些公用的互動區域。比如搜尋的文字框,除了可以輸入一些關鍵字,還可以輸入一些 JavaScript 程式碼,一旦程式碼點選搜尋,程式碼就會被執行,達到攻擊的目的。如下例子
在文字框中輸入以上程式碼,然後點選提交,就會把使用者的cookie彈出來。
XSS防範
1.將重要的cookies標記為HTTP ONLY,讓JavaScript程式碼無法呼叫,只有http能呼叫。或者將重要的資訊儲存在session裡面。
2.只允許使用者輸入我們期望的資料。如消費金額框只能輸入數字和小數點。
3.對資料進行加密處理。
4.過濾或者移除特殊的HTML標籤,過濾JavaScript程式碼等。
4-2.CSRF
CSRF的防禦
1.在表單裡增加Hash值,以認證這確實是使用者傳送的請求,然後在伺服器端進行Hash值驗證。
2.驗證碼:每次的使用者提交都需要使用者在表單中填寫一個圖片上的隨機字串。
3.修改,增加重要資訊,比如密碼,個人資訊的操作,儘量使用post。避免使用get把資訊暴露在url上面。
4-3.反爬蟲
和之前的防護XSS和CSRF攻擊目的不一樣,反爬蟲是為了防止網站重要的資料被別人拿走,比如電商的交易額,電影網站的票房統計,音樂網站的評論等。
5.渲染過程,原理
1.瀏覽器透過DNS對URL進行解析,找出對應的IP地址;
2.向IP地址發起網路請求,進行http協議會話:客戶端傳送報頭(請求報頭),服務端回饋報頭(響應報頭)
3.伺服器根據請求,交給後臺處理,處理完成後返回檔案資料,瀏覽器接收檔案資料(HTML、JS、CSS、圖象等);返回一個頁面(根據頁面上的外鏈的URL重新傳送請求獲取)
4.瀏覽器接收檔案完畢,對載入到的資源進行語法解析,以及相應的內部資料結構(網頁渲染)
6.跨域
跨域這方面,平常接觸的不多,我們這邊遇到也是讓後臺允許跨域(跨域資源共享),但是這個跨域,也是一個繞不開的話題,受限於篇幅,下面簡單進行講解。
6-1.情形分析
6-2.解決方案
網上的針對跨域的解決方案有很多,大家參考著看就好。雖然羅列這麼多,但是我只用過兩種。
1、 jsonp
2、 document.domain + iframe
3、 location.hash + iframe
4、 window.name + iframe
5、 postMessage
6、 跨域資源共享(CORS)
7、 nginx代理
8、 nodejs中介軟體代理
9、 WebSocket協議
7.效能最佳化
這裡只講個大概,具體操作得靠自己自行問搜尋引擎。
7-1.首屏最佳化
按需載入,非首屏圖片使用預載入或懶載入,DNS,壓縮程式碼,合併圖片,減少請求等。
7-2.演算法最佳化
減少沉餘的程式碼,控制迴圈的次數,避免巨大函式等。
8.SEO
作為前端開發者,在SEO方面接觸得應該不少。前端方面,注意SEO的點也不少。下面簡單寫下,在我開發的專案裡面,也有幾個專案是需要做SEO的,個人的建議如下幾點:
8-1.meta標籤
可定義關鍵詞、網站描述
8-2.語義化html標籤
一方面是,利用html標籤,達到語義化的目的,比如列表使用ul,ol。表格使用table等,不建議什麼元素都使用div。
另一方面是儘可能使用html5提供的具有語義化的標籤。
以前寫法
建議寫法
8-3.html巢狀級別不宜過多
這一點就是儘量使html做到扁平化,避免巢狀過多,但是這點相對而言,難度比較大。
8-4.img標籤四大屬性不能省
alt屬性是為了讓圖片因網速慢、src引用錯誤、瀏覽器禁用影像、使用者使用螢幕閱讀器等情況,未成功顯示時候,仍可以顯示文字,讓使用者可大概知道這張圖片大概是什麼。
width和height是為了防止因為圖片無法顯示,造成頁面重新渲染,或者佈局錯亂。
8-5.h1-h6標籤的使用
1.一個頁面建議只出現一個h1標籤,而且一般是放在網頁log上面使用。
2.h2標籤一般用於詳情頁的主標題。詳情頁沒有logo,標題使用h1。如有副標題,使用h3。
3.h1-h6標籤自帶權重,如果只為了設定字型大小,或者區分樣式,不適合使用h1-h6。
8-6.其它方面
關於SEO的其他方式,在網上看到有這樣的方法,但是我自己在開發上面沒嘗試過這樣做,這裡就簡單羅列下,大家參考下。
避免 iframe 標籤
重要內容謹慎使用 display:none;
a標籤儘量新增title屬性
利用佈局,把重要內容HTML程式碼放在最前
使用”rel=nofollow”屬性,集中網站權重
9.堆、棧?
棧(stack)會自動分配記憶體空間,會自動釋放。堆(heap)動態分配的記憶體,大小不定也不會自動釋放。
基本型別:Undefined、Null、Boolean、Number 和 String,這5中基本資料型別可以直接訪問,他們是按照值進行分配的,存放在棧(stack)記憶體中的簡單資料段,資料大小確定,記憶體空間大小可以分配。
如下例子
如果修改了b
雖然b一開始是透過a賦值,但是a和b是獨立的儲存在棧記憶體裡面,修改其中一個,不會對另一個有任何影響。
引用型別:即存放在堆(heap)記憶體中的物件,變數實際儲存的是一個指標,這個指標指向另一個位置。
如下例子
如果修改了b
b透過a賦值,a和b就共用了一個堆記憶體,修改了a或者b,都直接修改了堆記憶體的值,就會對另一個產生影響。
10.響應式和自適應
關於這兩個的概念,現在沒怎麼聽說了。可能是因為現在主流的就是PC和手機是分開兩個專案的原因,也可能是因為這兩個概念更應該是設計圖的工作。上一次和別人談論這個問題,還是在一年前,那個時候我還是切圖仔。
但是關於這兩個概念的區別,大家知道一下就好,下面看兩張圖片估計就差不多懂了。
簡單來說:
自適應:一個網頁,根據螢幕寬度的改變而改變。程式碼只有一套。在個別的螢幕上,排版這個比較醜,但是設計,開發成本低。
響應式:一個網頁,根據螢幕的寬度的改變而展示不同的效果,程式碼基本是兩套以上。在所有螢幕上都展示很好的效果,但是設計,開發成本高。
11.小結
之所以要發這麼一片,總結這一些概念,是因為我和別人交談的時候,遇到這些總是有一個是是而非的概念。所以最近就抽空看了下這些概念,也和大家分享下這一些知識。這些概念知識,可能只是瞭解一下,大概知道就好,有些可能要深入瞭解下,這個就看個人所需了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2662379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel深入學習7 – 框架的擴充套件Laravel框架套件
- 學習筆記----擴充套件歐幾里德筆記套件
- C#學習筆記(補充)——擴充套件方法、事件C#筆記套件事件
- swift學習筆記4——擴充套件、協議Swift筆記套件協議
- Swift學習筆記(二十六)——擴充套件Swift筆記套件
- 雜湊擴充套件攻擊套件
- sql中的擴充套件學習SQL套件
- 擴充套件中國剩餘定理(EXCRT)學習筆記套件筆記
- C#學習筆記-方法引數、擴充套件方法C#筆記套件
- 瞭解 OPcache 擴充opcache
- Web儲存(Web Storage)擴充套件EStorageWeb套件
- 雜湊表擴充套件—點陣圖套件
- ES6學習筆記4--字串的擴充套件筆記字串套件
- 數論學習筆記 (4):擴充套件歐幾里得演算法筆記套件演算法
- Flask學習日誌(五) - Flask擴充套件Flask套件
- 高擴充套件性的學習路線套件
- 《從零開始學Swift》學習筆記(Day 49)——擴充套件宣告Swift筆記套件
- C# 2008 學習筆記 - 擴充套件函式C#筆記套件函式
- Web前端效能雜記Web前端
- 深入瞭解Synchronized原理synchronized
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- PHP的Mhash擴充套件函式的學習PHP套件函式
- 學習PHP中YAML操作擴充套件的使用PHPYAML套件
- es6陣列擴充套件的學習陣列套件
- 從EventBus學習擴充套件Weex事件機制套件事件
- Scikit-learn可擴充套件學習簡介套件
- 負載均衡的原理(垂直擴充套件 Scale Up、橫向擴充套件 Scale Out)負載套件
- 閃現, 請求擴充套件, 藍圖, 中介軟體(瞭解)套件
- zkw 線段樹-原理及其擴充套件套件
- 再學Blazor——擴充套件方法Blazor套件
- PHP中非常好玩的Calendar擴充套件學習PHP套件
- 深入瞭解Zookeeper核心原理
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 【記錄】安裝 maxminddb 擴充套件套件
- [記錄] 安裝 maxminddb 擴充套件套件
- [WPF]標記擴充套件(Markup Extension)套件
- 可擴充套件性筆記一套件筆記
- Solon詳解(六)- Solon的校驗擴充套件框架使用與擴充套件套件框架