刷前端面經(jīng)筆記(五)

1.XML和JSON的區(qū)別条霜?

1)數(shù)據(jù)體積方面
JSON相對于XML來講幸缕,數(shù)據(jù)的體積小,傳遞的速度更快些
2)數(shù)據(jù)描述方面
JSONJavaScript交互更加方便凤覆,更容易解析處理握童,更容易交互
3)數(shù)據(jù)描述方面
JSON對數(shù)據(jù)的描述性比XML
4)傳輸速度方面
JSON的速度要遠(yuǎn)遠(yuǎn)快于XML

2.前端需要注意哪些SEO?

合理的title叛赚、description澡绩、keywords:搜索對著三項(xiàng)的權(quán)重逐個(gè)減少稽揭,title值強(qiáng)調(diào)重點(diǎn)即可,重要關(guān)鍵詞不要超過兩次肥卡,而且要靠前溪掀,不同頁面的title要有所不同;
description把頁面的內(nèi)容高度概括步鉴,長度合適揪胃,不可過分分堆砌關(guān)鍵詞,不同頁面的description有所不同氛琢;
keywords列舉重要關(guān)鍵詞即可喊递;

// title標(biāo)題
<title>標(biāo)題</title>
// keywords 關(guān)鍵詞
<meta name="description" content="關(guān)鍵詞1,關(guān)鍵詞2,關(guān)鍵詞3">
// description 內(nèi)容摘要
<meta name="description" content="網(wǎng)頁的簡述">

語義化的HTML代碼,符合W3C規(guī)范:語義化代碼讓搜索引擎容易理解網(wǎng)頁阳似;
重要內(nèi)容的HTML代碼放在最前:搜索引擎抓取HTML順序是從上到下骚勘,有的搜索引擎對抓取長度有限制,所以要保證重要內(nèi)容一定會(huì)被抓却樽唷俏讹;
重要內(nèi)容不要用JS輸出:爬蟲不會(huì)執(zhí)行JS獲取內(nèi)容;
少用iframe:搜索引擎不會(huì)抓取iframe中的內(nèi)容畜吊;
非裝飾性圖片必須加alt泽疆;
提高網(wǎng)站速度:網(wǎng)站速度是搜素引擎排序的一個(gè)重要指標(biāo);

3.HTTP的幾種請求方法用途玲献?

1)GET方法
發(fā)送一個(gè)請求來取得服務(wù)器上的某一資源
2)POST方法
URL指定的資源提交數(shù)據(jù)或附加新的數(shù)據(jù)
3)PUT方法
POST方法很像殉疼,也是想服務(wù)器提交數(shù)據(jù)。但是捌年,它們之間有不同瓢娜。PUT指定了資源在服務(wù)器上的位置,而POST沒有
4)HEAD方法
只請求頁面的首部
5)DELETE方法
刪除服務(wù)器上的某資源
6)OPTIONS方法
它用于獲取當(dāng)前URL所支持的方法延窜。如果請求成功,會(huì)有一個(gè)Allow的頭包含類似“GET,POST”這樣的信息
7)TRACE方法
TRACE方法被用于激發(fā)一個(gè)遠(yuǎn)程的抹锄,應(yīng)用層的請求消息回路
8)CONNECT方法
把請求連接轉(zhuǎn)換到透明的TCP/IP通道

4.如何進(jìn)行網(wǎng)頁性能優(yōu)化逆瑞?

1)content方面
減少HTTP請求:合并文件、CSS精靈圖
減少DNS查詢:DNS緩存伙单、將資源分布到恰當(dāng)數(shù)量的主機(jī)名
減少DOM元素?cái)?shù)量
2)Server方面
使用CDN
配置ETag
對組件使用Gzip壓縮
3)Cookie方面
減少cookie大小
4)CSS方面
將樣式表放到頁面頂部
不使用CSS表達(dá)式
使用<link>不使用@import
5)JavaScript方面
將腳本放到頁面底部
JavaScriptCSS從外部引入
壓縮JavaScriptCSS
刪除不需要的腳本
減少DOM訪問
6)圖片方面
優(yōu)化CSS精靈
不要再HTML中拉伸圖片

5.語義化的理解

HTML語義化就是讓頁面的內(nèi)容結(jié)構(gòu)化获高,便于對瀏覽器、搜索引擎解析吻育;
在沒有CSS樣式情況下也以一種文檔格式顯示念秧,并且是容易閱讀的;
搜索引擎的爬蟲依賴于標(biāo)記來確定上下文的各個(gè)關(guān)鍵字的權(quán)重布疼,利于SEO摊趾;
使閱讀源代碼的人更容易將網(wǎng)站分塊币狠,便于閱讀維護(hù)理解;

6.WEB標(biāo)準(zhǔn)以及W3C標(biāo)準(zhǔn)是什么

標(biāo)簽閉合砾层、標(biāo)簽小寫漩绵、不亂嵌套、使用外鏈CSSJS肛炮、結(jié)構(gòu)行為表現(xiàn)的分離

7.說說對作用域鏈的理解

作用域鏈的作用是保證執(zhí)行環(huán)境里有權(quán)訪問的變量和函數(shù)是有序的止吐,作用域鏈的變量只能向上訪問,變量訪問到window對象即被終止侨糟,作用域鏈向下訪問變量是不被允許的碍扔;
即作用域就是變量與函數(shù)的可訪問范圍,即作用域控制這變量與函數(shù)的可見性和生命周期秕重;

8.如何實(shí)現(xiàn)瀑布流

1)瀑布流布局的要求要進(jìn)行布置的元素等寬不同;
然后計(jì)算元素的寬度,
與瀏覽器寬度之比悲幅,得到需要布置的列數(shù)套鹅;
2)創(chuàng)建一個(gè)數(shù)組,長度為列數(shù)汰具,
里面的值為以已布置元素的總高度(最開始為)卓鹿;
3)然后將未布置的元素的依次布置到高度最小的那一列,
就得到了瀑布流布局留荔;
4)滾動(dòng)加載吟孙,scroll事件得到scrollTop
與最后盒子的offsetTop對比聚蝶,
符合條件就不斷滾動(dòng)加載杰妓。
瀑布流布局核心代碼:

/**
 * 實(shí)現(xiàn)瀑布流的布局
 * @param {string}parentBox
 * @param {string}childBox
 */
function waterFull(parentBox, childBox) {
    // 1. 求出父盒子的寬度
    //  1.1 獲取所有的子盒子
    var allBox = $(parentBox).
         getElementsByClassName(childBox);
    // console.log(allBox);

    // 1.2 求出子盒子的寬度
    var boxWidth = allBox[0].offsetWidth;
    // console.log(boxWidth);

    // 1.3 獲取窗口的寬度
    var clientW = document.
        documentElement.clientWidth;
    // console.log(clientW);

    // 1.4 求出總列數(shù)
    var cols = Math.floor(clientW / boxWidth);
    // console.log(cols);

    // 1.5 父盒子居中
    $(parentBox).style.width = cols * boxWidth + 'px';
    $(parentBox).style.margin = '0 auto';

    // 2. 子盒子定位
    //  2.1 定義變量
    var heightArr = [], boxHeight = 0, 
        minBoxHeight = 0, minBoxIndex = 0;

    // 2.2 遍歷所有的子盒子
    for (var i = 0; i < allBox.length; i++) {
        // 2.2.1 求出每一個(gè)子盒子的高度
        boxHeight = allBox[i].offsetHeight;
        // console.log(boxHeight);
        // 2.2.2 取出第一行盒子的高度放入高度數(shù)組中
        if (i < cols) { // 第一行
            heightArr.push(boxHeight);
        } else { // 剩余行的盒子
            // 2.2.3 取出數(shù)組中最矮的高度
            minBoxHeight = _.min(heightArr);
            // 2.2.4 求出最矮高度對應(yīng)的索引
            minBoxIndex = getMinBoxIndex(heightArr, minBoxHeight);
            // 2.2.5 盒子定位
            allBox[i].style.position = 'absolute';
            allBox[i].style.left = minBoxIndex * boxWidth + 'px';
            allBox[i].style.top = minBoxHeight + 'px';
            // 2.2.6 更新最矮的高度
            heightArr[minBoxIndex] += boxHeight;

        }
    }
}

/**
 * 根據(jù)內(nèi)容取出在數(shù)組中對應(yīng)的索引
 * @param {object}arr
 * @param {number}val
 * @returns {boolean}
 */

function getMinBoxIndex(arr, val) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === val) return i;
    }
}

/**
 * 判斷是否具備加載子盒子的條件
 * @returns {boolean}
 */
function checkWillLoadImage() {
    // 1. 獲取最后一個(gè)盒子
    var allBox = $('main').getElementsByClassName('box');
    var lastBox = allBox[allBox.length - 1];

    // 2. 求出高度
    var lastBoxDis = lastBox.offsetHeight * 0.5 + lastBox.offsetTop;

    // 3. 求出窗口的高度
    var clientH = document.documentElement.clientHeight;

    // 4. 求出頁面滾動(dòng)產(chǎn)生的高度
    var scrollTopH = scroll().top;

    // 5. 對比
    return lastBoxDis <= clientH + scrollTopH;
}
9.原生JS都有哪些方式可以實(shí)現(xiàn)兩個(gè)頁面間的通信?

1)通過url地址欄傳遞參數(shù)碘勉;
例如:點(diǎn)擊列表中的每一條數(shù)據(jù)巷挥,跳轉(zhuǎn)到一個(gè)詳情頁面,在URL中傳遞不同的參數(shù)區(qū)分不同的頁面验靡;
2)通過本地存儲cookie倍宾、localStoragesessionStorage胜嗓;
例如京東的登陸高职,把登陸后獲得的頁面信息存儲到本地,其他頁面需要用戶信息的話就從本地的存儲數(shù)據(jù)中獲却侵荨怔锌;
3)使用iframe
例如在頁面中嵌入頁面,在中可以通過一些屬性和實(shí)現(xiàn)方法和頁面的通信;
4)利用postMessage實(shí)現(xiàn)頁面間的通信
例如父窗口往子窗口傳遞信息埃元,子窗口往父窗口傳遞信息

歡迎關(guān)注
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涝涤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亚情,更是在濱河造成了極大的恐慌妄痪,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楞件,死亡現(xiàn)場離奇詭異衫生,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)土浸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門罪针,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黄伊,你說我怎么就攤上這事泪酱。” “怎么了还最?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵墓阀,是天一觀的道長。 經(jīng)常有香客問我拓轻,道長斯撮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任扶叉,我火速辦了婚禮勿锅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枣氧。我一直安慰自己溢十,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布达吞。 她就那樣靜靜地躺著张弛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酪劫。 梳的紋絲不亂的頭發(fā)上吞鸭,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音契耿,去河邊找鬼瞒大。 笑死螃征,一個(gè)胖子當(dāng)著我的面吹牛搪桂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼踢械,長吁一口氣:“原來是場噩夢啊……” “哼酗电!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起内列,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤撵术,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后话瞧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫩与,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年交排,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了划滋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡埃篓,死狀恐怖处坪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情架专,我是刑警寧澤同窘,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站部脚,受9級特大地震影響想邦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜睛低,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一案狠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钱雷,春花似錦骂铁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至套蒂,卻和暖如春钞支,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背操刀。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工烁挟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骨坑。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓撼嗓,卻偏偏與公主長得像柬采,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子且警,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容