[雜談]了解一些額外知識(shí),讓前端開發(fā)錦上添花,雜談錦上添花

    勸了別人無數(shù)次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑

    在前端學(xué)習(xí)里面,很多人都是注重學(xué)習(xí)代碼(html,css,js)。愛掏網(wǎng) - it200.com或者是一些框架,庫(jquery,vue,react),或者是各種工具(webpack,gulp)。愛掏網(wǎng) - it200.com在以往的文章里面,或者自己和別人交談,都有建議過別人多練,不要悶頭就寫代碼,多深入了解當(dāng)中的原理,學(xué)習(xí)其中的思想。愛掏網(wǎng) - it200.com但是除了代碼方面的知識(shí)之外,還有哪一些是作為一個(gè)前端,應(yīng)該擴(kuò)展學(xué)習(xí)的呢?下面簡單羅列和整理了一下最近學(xué)習(xí)的資源。愛掏網(wǎng) - it200.com如果大家還有其它的推薦,歡迎在評(píng)論區(qū)留言。愛掏網(wǎng) - it200.com

    下面的知識(shí),可能不需要太過于深入,詳細(xì)的掌握,但是必須要有所了解,這樣在開發(fā)上遇到問題,解決問題的時(shí)候即使不是如虎添翼,也是錦上添花。愛掏網(wǎng) - it200.com

    前端而言,不可避免的要和接口打交道。愛掏網(wǎng) - it200.com除了和后臺(tái)對接口,請求數(shù)據(jù),渲染頁面,之外。愛掏網(wǎng) - it200.com對http的請求,也是要有一個(gè)了解,比如http協(xié)議,請求方式,請求過程,結(jié)果狀態(tài)碼等。愛掏網(wǎng) - it200.com了解這些,對開發(fā)的時(shí)候可能遇到的問題,就可以大概知道問題是怎么產(chǎn)生的,更快的知道怎么解決,避免。愛掏網(wǎng) - it200.com

    2-1.請求

    首先一個(gè)請求,包含有請求頭,請求行,請求正文。愛掏網(wǎng) - it200.com具體是怎樣境,看下面的代碼

    axios({
      method: 'post',
      url: '/user/12345',
      headers:{
        'Content-Type':'application/x-www-form-urlencoded'  
      },
      data: {
        firstName: 'Fred',
        lastName: 'Flintstone'
      }
    });
    復(fù)制代碼

    如上所述

    methodurl就是這個(gè)請求的請求行(這里是請求行部分信息,其實(shí)請求行還包括http協(xié)議的版本等信息)。愛掏網(wǎng) - it200.comheaders中的屬性就是請求頭,里面的屬性,全部包含在請求的header里面,是服務(wù)端獲取客戶端版本,緩存等信息的一個(gè)途徑。愛掏網(wǎng) - it200.comdata對應(yīng)的就是請求正文,也就是平常所說的參數(shù)。愛掏網(wǎng) - it200.com

    2-2.響應(yīng)

    在請求發(fā)出去,并且響應(yīng)已經(jīng)回來的時(shí)候,就時(shí)候信息可分為響應(yīng)行,響應(yīng)頭,響應(yīng)正文。愛掏網(wǎng) - it200.com

    響應(yīng)行

    引用看云的一個(gè)請求作為實(shí)例,如下代碼就是這個(gè)請求的響應(yīng)行,返回請求的http協(xié)議及版本,狀態(tài)碼,請求狀態(tài)等描述信息。愛掏網(wǎng) - it200.com

    Request URL:https://www.kancloud.cn/yunye/axios/comment?article_id=234845&page=1
    Request Method:GET
    Status Code:200 OK
    Remote Address:117.23.61.221:443
    復(fù)制代碼

    響應(yīng)頭

    響應(yīng)頭和請求頭格式一致,返回版本,緩存等信息。愛掏網(wǎng) - it200.com

    響應(yīng)正文

    平常接觸最多的就是響應(yīng)正文,也就是日常開發(fā)需要用到的數(shù)據(jù)。愛掏網(wǎng) - it200.com開發(fā)者拿到這些數(shù)據(jù)之后,再進(jìn)行相應(yīng)的處理。愛掏網(wǎng) - it200.com

    2-3.關(guān)于https

    關(guān)于 https 。愛掏網(wǎng) - it200.com下面可以先了解下 http 的缺點(diǎn),https就是http基礎(chǔ)上做的加密處理。愛掏網(wǎng) - it200.com

    1.通信使用明文不加密,內(nèi)容可能被竊聽 2.不驗(yàn)證通信方身份,可能遭到偽裝 3.無法驗(yàn)證報(bào)文完整性,可能被篡改

    2-4.相關(guān)資料

    關(guān)于http與https就簡單說到這里,詳細(xì)的推薦看下下面的資料。愛掏網(wǎng) - it200.com

    HTTP教程

    HTTP協(xié)議【詳解】——經(jīng)典面試題

    一個(gè)故事講完https

    上面提到響應(yīng)狀態(tài)碼,在這里也簡單寫下。愛掏網(wǎng) - it200.com在前端方面,請求接口可能會(huì)接觸到各種情況,常見的有下面幾個(gè),應(yīng)該怎么解決,就是具體問題,具體分析。愛掏網(wǎng) - it200.com

    狀態(tài)碼 意義
    200 請求成功
    400 參數(shù)錯(cuò)誤
    403 拒絕或者禁止訪問(無權(quán)限訪問)
    404 地址不存在
    405 客戶端請求中的方法被禁止(一般是請求方式錯(cuò)誤)
    500 服務(wù)器報(bào)錯(cuò)
    502 請求超時(shí),無效網(wǎng)關(guān)
    503 服務(wù)器超載或者維護(hù),無法響應(yīng)

    3-1.參考資料

    詳細(xì)的狀態(tài)碼請參考下面內(nèi)容。愛掏網(wǎng) - it200.com

    HTTP狀態(tài)碼

    4-1.XSS

    XSS(Cross Site Scripting)是跨站腳本攻擊,為了區(qū)分CSS,所以縮寫為XSS。愛掏網(wǎng) - it200.comXSS攻擊方式是往Web頁面插入惡意的 JavaScript 代碼,當(dāng)用戶瀏覽網(wǎng)頁的時(shí)候,插入的代碼就是被執(zhí)行,從而達(dá)到攻擊的目的。愛掏網(wǎng) - it200.com

    其中應(yīng)用比較多的一個(gè)就是,在網(wǎng)頁一些公用的交互區(qū)域。愛掏網(wǎng) - it200.com比如搜索的文本框,除了可以輸入一些關(guān)鍵字,還可以輸入一些 JavaScript 代碼,一旦代碼點(diǎn)擊搜索,代碼就會(huì)被執(zhí)行,達(dá)到攻擊的目的。愛掏網(wǎng) - it200.com如下例子

    
    復(fù)制代碼

    在文本框中輸入以上代碼,然后點(diǎn)擊提交,就會(huì)把用戶的cookie彈出來。愛掏網(wǎng) - it200.com

    XSS防范

    1.將重要的cookies標(biāo)記為HTTP ONLY,讓JavaScript代碼無法調(diào)用,只有http能調(diào)用。愛掏網(wǎng) - it200.com或者將重要的信息保存在session里面。愛掏網(wǎng) - it200.com

    2.只允許用戶輸入我們期望的數(shù)據(jù)。愛掏網(wǎng) - it200.com如消費(fèi)金額框只能輸入數(shù)字和小數(shù)點(diǎn)。愛掏網(wǎng) - it200.com

    3.對數(shù)據(jù)進(jìn)行加密處理。愛掏網(wǎng) - it200.com

    4.過濾或者移除特殊的HTML標(biāo)簽,過濾JavaScript代碼等。愛掏網(wǎng) - it200.com

    4-2.CSRF

    CSRF(Cross-site request forgery)是跨站請求偽造。愛掏網(wǎng) - it200.comXSS利用站點(diǎn)內(nèi)的信任用戶,與XSS不同,CSRF是通過偽裝來自受信任用戶,在受信任的網(wǎng)站進(jìn)行請求,盜取信息。愛掏網(wǎng) - it200.com其實(shí)就是攻擊者盜用了受害者的身份,以受害者的名義向網(wǎng)站發(fā)送惡意請求。愛掏網(wǎng) - it200.com

    CSRF攻擊的思想

    引用CSRF攻擊原理及防御的一張圖進(jìn)行解釋。愛掏網(wǎng) - it200.com

    image

    圖片來自:CSRF攻擊原理及防御

    根據(jù)步驟,看了圖,相信不難理解,就是在一個(gè)網(wǎng)站里面保留了cookie,然后訪問了一些危險(xiǎn)網(wǎng)站,然后被危險(xiǎn)網(wǎng)站盜用了用戶信息。愛掏網(wǎng) - it200.com

    CSRF的防御

    1.在表單里增加Hash值,以認(rèn)證這確實(shí)是用戶發(fā)送的請求,然后在服務(wù)器端進(jìn)行Hash值驗(yàn)證。愛掏網(wǎng) - it200.com

    2.驗(yàn)證碼:每次的用戶提交都需要用戶在表單中填寫一個(gè)圖片上的隨機(jī)字符串。愛掏網(wǎng) - it200.com

    3.修改,增加重要信息,比如密碼,個(gè)人信息的操作,盡量使用post。愛掏網(wǎng) - it200.com避免使用get把信息暴露在url上面。愛掏網(wǎng) - it200.com

    4-3.反爬蟲

    和之前的防護(hù)XSS和CSRF攻擊目的不一樣,反爬蟲是為了防止網(wǎng)站重要的數(shù)據(jù)被別人拿走,比如電商的交易額,電影網(wǎng)站的票房統(tǒng)計(jì),音樂網(wǎng)站的評(píng)論等。愛掏網(wǎng) - it200.com

    反擊爬蟲,前端工程師的腦洞可以有多大?

    1.瀏覽器通過DNS對URL進(jìn)行解析,找出對應(yīng)的IP地址;

    2.向IP地址發(fā)起網(wǎng)絡(luò)請求,進(jìn)行http協(xié)議會(huì)話:客戶端發(fā)送報(bào)頭(請求報(bào)頭),服務(wù)端回饋報(bào)頭(響應(yīng)報(bào)頭)

    3.服務(wù)器根據(jù)請求,交給后臺(tái)處理,處理完成后返回文件數(shù)據(jù),瀏覽器接收文件數(shù)據(jù)(HTML、JS、CSS、圖象等);返回一個(gè)頁面(根據(jù)頁面上的外鏈的URL重新發(fā)送請求獲?。?/p>

    4.瀏覽器接收文件完畢,對加載到的資源進(jìn)行語法解析,以及相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(網(wǎng)頁渲染)

    跨域這方面,平常接觸的不多,我們這邊遇到也是讓后臺(tái)允許跨域(跨域資源共享),但是這個(gè)跨域,也是一個(gè)繞不開的話題,受限于篇幅,下面簡單進(jìn)行講解。愛掏網(wǎng) - it200.com

    6-1.情形分析

    URL 說明 是否允許通信
    http://www.example.com/a.js,http://www.example.com/lab/b.js 同一域名,不同文件或路徑 允許
    http://www.example.com:8000/a.js,http://www.example.com/b.js 同一域名,不同端口 不允許
    http://www.example.com/a.js,https://www.example.com/b.js 同一域名,不同協(xié)議 不允許
    http://www.example.com/a.js,http://192.168.2xx.2x/b.js 域名和域名對應(yīng)相同ip 不允許
    http://www.example.com/a.js,http://x.example.com/b.js,http://domain.com/c.js 主域相同,子域不同 不允許
    http://www.example.com/a.js,http://www.demo.com/b.js 不同域名 不允許

    6-2.解決方案

    網(wǎng)上的針對跨域的解決方案有很多,大家參考著看就好。愛掏網(wǎng) - it200.com雖然羅列這么多,但是我只用過兩種。愛掏網(wǎng) - it200.com

    1、 jsonp

    2、 document.domain + iframe

    3、 location.hash + iframe

    4、 window.name + iframe

    5、 postMessage

    6、 跨域資源共享(CORS)

    7、 nginx代理

    8、 nodejs中間件代理

    9、 WebSocket協(xié)議

    6-3.參考資料

    前端常見跨域解決方案(全)

    前端跨域知識(shí)總結(jié)

    這里只講個(gè)大概,具體操作得靠自己自行問搜索引擎。愛掏網(wǎng) - it200.com

    7-1.首屏優(yōu)化

    按需加載,非首屏圖片使用預(yù)加載或懶加載,DNS,壓縮代碼,合并圖片,減少請求等。愛掏網(wǎng) - it200.com

    7-2.算法優(yōu)化

    減少沉余的代碼,控制循環(huán)的次數(shù),避免巨大函數(shù)等。愛掏網(wǎng) - it200.com

    作為前端開發(fā)者,在SEO方面接觸得應(yīng)該不少。愛掏網(wǎng) - it200.com前端方面,注意SEO的點(diǎn)也不少。愛掏網(wǎng) - it200.com下面簡單寫下,在我開發(fā)的項(xiàng)目里面,也有幾個(gè)項(xiàng)目是需要做SEO的,個(gè)人的建議如下幾點(diǎn):

    8-1.meta標(biāo)簽

    可定義關(guān)鍵詞、網(wǎng)站描述

    "keywords" content="關(guān)鍵詞1,關(guān)鍵詞2" />
    
    "description" content="描述詞1,描述詞2" />
    復(fù)制代碼

    8-2.語義化html標(biāo)簽

    一方面是,利用html標(biāo)簽,達(dá)到語義化的目的,比如列表使用ul,ol。愛掏網(wǎng) - it200.com表格使用table等,不建議什么元素都使用div。愛掏網(wǎng) - it200.com

    另一方面是盡可能使用html5提供的具有語義化的標(biāo)簽。愛掏網(wǎng) - it200.com

    以前寫法

    "header">
    "main">
    "footer">
    復(fù)制代碼

    建議寫法

    復(fù)制代碼

    8-3.html嵌套級(jí)別不宜過多

    這一點(diǎn)就是盡量使html做到扁平化,避免嵌套過多,但是這點(diǎn)相對而言,難度比較大。愛掏網(wǎng) - it200.com

    8-4.img標(biāo)簽四大屬性不能省

    "" alt="圖片描述" width="" height=""/>
    復(fù)制代碼

    alt屬性是為了讓圖片因網(wǎng)速慢、src引用錯(cuò)誤、瀏覽器禁用圖像、用戶使用屏幕閱讀器等情況,未成功顯示時(shí)候,仍可以顯示文本,讓用戶可大概知道這張圖片大概是什么。愛掏網(wǎng) - it200.com

    width和height是為了防止因?yàn)閳D片無法顯示,造成頁面重新渲染,或者布局錯(cuò)亂。愛掏網(wǎng) - it200.com

    8-5.h1-h6標(biāo)簽的使用

    1.一個(gè)頁面建議只出現(xiàn)一個(gè)h1標(biāo)簽,而且一般是放在網(wǎng)頁log上面使用。愛掏網(wǎng) - it200.com

    2.h2標(biāo)簽一般用于詳情頁的主標(biāo)題。愛掏網(wǎng) - it200.com詳情頁沒有l(wèi)ogo,標(biāo)題使用h1。愛掏網(wǎng) - it200.com如有副標(biāo)題,使用h3。愛掏網(wǎng) - it200.com

    3.h1-h6標(biāo)簽自帶權(quán)重,如果只為了設(shè)置字體大小,或者區(qū)分樣式,不適合使用h1-h6。愛掏網(wǎng) - it200.com

    8-6.其它方面

    關(guān)于SEO的其他方式,在網(wǎng)上看到有這樣的方法,但是我自己在開發(fā)上面沒嘗試過這樣做,這里就簡單羅列下,大家參考下。愛掏網(wǎng) - it200.com

    避免 iframe 標(biāo)簽

    重要內(nèi)容謹(jǐn)慎使用 display:none;

    a標(biāo)簽盡量添加title屬性

    利用布局,把重要內(nèi)容HTML代碼放在最前

    使用”rel=nofollow”屬性,集中網(wǎng)站權(quán)重

    最近一段時(shí)間很流行前后分離,以及單頁應(yīng)用。愛掏網(wǎng) - it200.com但關(guān)于前后分離和單頁應(yīng)用這個(gè)怎么做SEO現(xiàn)在不清楚(目前我了解的是沒法做)。愛掏網(wǎng) - it200.com我們現(xiàn)在的做法就是需要做SEO的項(xiàng)目,前端只負(fù)責(zé)切圖,然后后臺(tái)鋪數(shù)據(jù),服務(wù)端渲染,不是前端渲染。愛掏網(wǎng) - it200.com

    棧(stack)會(huì)自動(dòng)分配內(nèi)存空間,會(huì)自動(dòng)釋放。愛掏網(wǎng) - it200.com堆(heap)動(dòng)態(tài)分配的內(nèi)存,大小不定也不會(huì)自動(dòng)釋放。愛掏網(wǎng) - it200.com

    基本類型:Undefined、Null、Boolean、Number 和 String,這5中基本數(shù)據(jù)類型可以直接訪問,他們是按照值進(jìn)行分配的,存放在棧(stack)內(nèi)存中的簡單數(shù)據(jù)段,數(shù)據(jù)大小確定,內(nèi)存空間大小可以分配。愛掏網(wǎng) - it200.com

    如下例子

    let a=1;
    let b=a;
    復(fù)制代碼

    如果修改了b

    b=2;
    復(fù)制代碼

    雖然b一開始是通過a賦值,但是a和b是獨(dú)立的儲(chǔ)存在棧內(nèi)存里面,修改其中一個(gè),不會(huì)對另一個(gè)有任何影響。愛掏網(wǎng) - it200.com

    引用類型:即存放在堆(heap)內(nèi)存中的對象,變量實(shí)際保存的是一個(gè)指針,這個(gè)指針指向另一個(gè)位置。愛掏網(wǎng) - it200.com

    如下例子

    let a={name:'守候'};
    let b=a;
    復(fù)制代碼

    image

    如果修改了b

    b.name='sh';
    復(fù)制代碼

    image

    b通過a賦值,a和b就共用了一個(gè)堆內(nèi)存,修改了a或者b,都直接修改了堆內(nèi)存的值,就會(huì)對另一個(gè)產(chǎn)生影響。愛掏網(wǎng) - it200.com

    關(guān)于這兩個(gè)的概念,現(xiàn)在沒怎么聽說了。愛掏網(wǎng) - it200.com可能是因?yàn)楝F(xiàn)在主流的就是PC和手機(jī)是分開兩個(gè)項(xiàng)目的原因,也可能是因?yàn)檫@兩個(gè)概念更應(yīng)該是設(shè)計(jì)圖的工作。愛掏網(wǎng) - it200.com上一次和別人談?wù)撨@個(gè)問題,還是在一年前,那個(gè)時(shí)候我還是切圖仔。愛掏網(wǎng) - it200.com

    但是關(guān)于這兩個(gè)概念的區(qū)別,大家知道一下就好,下面看兩張圖片估計(jì)就差不多懂了。愛掏網(wǎng) - it200.com

    image

    圖片來自:響應(yīng)式和自適應(yīng)有什么區(qū)別?(這篇文章估計(jì)也是抄襲的,但是由于圖片我也找不到出處了,就聲明這個(gè)了)

    簡單來說:

    自適應(yīng):一個(gè)網(wǎng)頁,根據(jù)屏幕寬度的改變而改變。愛掏網(wǎng) - it200.com代碼只有一套。愛掏網(wǎng) - it200.com在個(gè)別的屏幕上,排版這個(gè)比較丑,但是設(shè)計(jì),開發(fā)成本低。愛掏網(wǎng) - it200.com

    響應(yīng)式:一個(gè)網(wǎng)頁,根據(jù)屏幕的寬度的改變而展示不同的效果,代碼基本是兩套以上。愛掏網(wǎng) - it200.com在所有屏幕上都展示很好的效果,但是設(shè)計(jì),開發(fā)成本高。愛掏網(wǎng) - it200.com

    自適應(yīng)實(shí)例:攜程

    響應(yīng)式實(shí)例:segmentfault

    之所以要發(fā)這么一片,總結(jié)這一些概念,是因?yàn)槲液蛣e人交談的時(shí)候,遇到這些總是有一個(gè)是是而非的概念。愛掏網(wǎng) - it200.com所以最近就抽空看了下這些概念,也和大家分享下這一些知識(shí)。愛掏網(wǎng) - it200.com這些概念知識(shí),可能只是了解一下,大概知道就好,有些可能要深入了解下,這個(gè)就看個(gè)人所需了。愛掏網(wǎng) - it200.com最后,如果大家還有什么要推薦的概念知識(shí)是比較重要,需要了解的,歡迎在評(píng)論區(qū)留言。愛掏網(wǎng) - it200.com

    -------------------------華麗的分割線--------------------



    原文發(fā)布時(shí)間為:2024年06月25日
    作者:守候i
    本文來源:掘金?如需轉(zhuǎn)載請聯(lián)系原作者
    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論0 條評(píng)論)
    暫無評(píng)論

    返回頂部

    主站蜘蛛池模板: 色婷婷综合久久久久中文一区二区 | 国产精品一区12p| 亚洲免费一区二区| 亚洲一区二区三区写真| 国产情侣一区二区三区 | 日韩精品电影一区亚洲| 无码人妻精品一区二区三区在线 | 波多野结衣一区视频在线| 色妞AV永久一区二区国产AV| 国精产品一区一区三区有限在线| 波多野结衣免费一区视频| 日本精品一区二区三区在线视频一| 人妖在线精品一区二区三区| 文中字幕一区二区三区视频播放| 国产午夜精品一区二区三区小说| 天美传媒一区二区三区| 亚洲国产欧美国产综合一区| 亚洲一区动漫卡通在线播放| 亚洲无线码在线一区观看| 中文字幕精品亚洲无线码一区应用 | 偷拍精品视频一区二区三区| 在线视频精品一区| 亚洲高清毛片一区二区| 久久精品国产AV一区二区三区| 国产激情无码一区二区| 国产丝袜无码一区二区三区视频| 久久久久女教师免费一区| 动漫精品专区一区二区三区不卡| 国产AV天堂无码一区二区三区| 日韩视频一区二区| 精品一区二区AV天堂| 国产精品亚洲专一区二区三区| 国产精品一区二区三区久久| 日韩AV无码一区二区三区不卡| 国产精品电影一区二区三区| 国产剧情一区二区| 中文日韩字幕一区在线观看| 国产成人无码一区二区在线观看| 香蕉久久av一区二区三区| 亚洲无删减国产精品一区| 日本一区二区视频|