撩課-Web大前端每天5道面試題-Day7

来源:https://www.cnblogs.com/gxq666/archive/2018/12/10/10095331.html
-Advertisement-
Play Games

1. 你能描述一下漸進增強和優雅降級之間的不同嗎? 2. 請說說瀏覽器內核的組成? 3. 為什麼利用多個功能變數名稱來請求網路資源會更有效? 4. 說說前端開發中, 如何進行性能優化? 5. 從前端角度出發, 談談做好網站seo需要考慮什麼? ...


1. 你能描述一下漸進增強和優雅降級之間的不同嗎?

定義:
優雅降級(graceful degradation):
一開始就構建站點的完整功能,
然後針對瀏覽器測試和修複

漸進增強(progressive enhancement): 
一開始只構建站點的最少特性,
然後不斷針對各瀏覽器追加功能。

優雅降級和漸進增強都關註於同一網站
在不同設備里不同瀏覽器下的表現程度。

區別:
“優雅降級”觀點認為應該針對那些最高級、
最完善的瀏覽器來設計網站。

而將那些被認為“過時”或有功能缺失的瀏覽器下
的測試工作安排在開發周期的最後階段,並把測試
對象限定為主流瀏覽器(如 IE、Mozilla 等)的
前一個版本。

“漸進增強”觀點則認為應關註於內容本身。

總結:
"優雅降級"就是首先完整地實現整個網站,
包括其中的功能和效果. 然後再為那些無
法支持所有功能的瀏覽器增加候選方案, 
使之在舊式瀏覽器上以某種形式降級體驗
卻不至於完全失效。

"漸進增強"則是從瀏覽器支持的基本功能開始,
首先為所有設備準備好清晰且語義化的html及
完整內容, 然後再以無侵入的方法向頁面增加無
害於基礎瀏覽器的額外樣式和功能。
當瀏覽器升級時, 它們會自動呈現併發揮作用。

 

2. 請說說瀏覽器內核的組成?

瀏覽器的結構:

用戶界面(UI) - 包括菜單欄、工具欄、地址欄、
後退/前進按鈕、書簽目錄等,也就是能看到的除
了顯示頁面的主視窗之外的部分;

瀏覽器引擎(Rendering engine)-也被稱為瀏覽器
內核、渲染引擎,主要負責取得頁面內容、整理信息
(應用CSS)、計算頁面的顯示方式,然後會輸出到
顯示器或者印表機;

JS解釋器 - 也可以稱為JS內核,主要負責處理
javascript腳本程式,一般都會附帶在瀏覽器
之中,例如chrome的V8引擎;

網路部分 - 主要用於網路調用,例如:HTTP請求,
其介面與平臺無關,併為所有的平臺提供底層實現;

UI後端 - 用於繪製基本的視窗部件,比如組合框和視窗等。

數據存儲 - 保存類似於cookie、storage等數據部分,
HTML5新增了web database技術,一種完整的輕量級客
戶端存儲技術。

主要瀏覽器:
IE、Firefox、Safari、Chrome、Opera。

它們的瀏覽器內核(渲染引擎):

IE--Trident
FF(Mozilla)--Gecko
Safari--Webkit
Chrome--Blink(WebKit的分支)
Opera--原為Presto,現為Blink

 

3. 為什麼利用多個功能變數名稱來請求網路資源會更有效?

動靜分離需求,使用不同的伺服器處理請求。
處理動態內容的只處理動態內容,不處理別的,
提高效率。

突破瀏覽器併發限制, 同一時間針對同一功能變數名稱
下的請求有一定數量限制。超過限制數目的請
求會被阻止。不同瀏覽器這個限制的數目不一樣。

Cookieless, 節省帶寬,尤其是上行帶寬一般比下
行要慢。用戶的每次訪問,都會帶上自己的cookie
,久而久之耗費的帶寬還是挺大的。

假如weibo 的圖片放在主站功能變數名稱下,那麼用戶
每次訪問圖片時,request header 里就會帶有
自己的cookie ,header 里的cookie 還不能壓縮,
而圖片是不需要知道用戶的cookie 的,所以這部分帶
寬就白白浪費了。

避免不必要的安全問題(比如: 上傳js竊取主站cookie之類的)

節約主功能變數名稱的連接數,從而提高客戶端網路帶寬的利用率,
優化頁面響應。

 

4. 說說前端開發中, 如何進行性能優化?

1) 減少http請求次數:css spirit,data uri;
2) JS,CSS源碼壓縮;
3) 前端模板 JS+數據,減少由於HTML標簽導致
    的帶寬浪費,前端用變數保存AJAX請求結果,每
    次操作本地變數,不用請求,減少請求次數;
4) 用innerHTML代替DOM操作,減少DOM操作次數;
5) 用setTimeout來避免頁面失去響應;
6) 用hash-table來優化查找;
7) 當需要設置的樣式很多時設置className而不
    是直接操作style; 
8) 少用全局變數;
9) 緩存DOM節點查找的結果;
10) 避免使用CSS Expression;
11) 圖片預載;

12) 避免在頁面的主體佈局中使用table,
     table要等其中的內容完全下載之後才會顯示出來,
     顯示比div+css佈局慢;

13) 控制網頁在網路傳輸過程中的數據量; 
     比如: 啟用GZIP壓縮或者保持良好的編程習慣,
     避免重覆的CSS,JavaScript代碼,
     多餘的HTML標簽和屬性。
    

 

5. 從前端角度出發, 談談做好網站seo需要考慮什麼?

1) 語義化html標簽;
2) 合理的title, description, keywords;
3) 重要的html代碼放前面;
4) 少用iframe, 搜索引擎不會抓取iframe中的內容
5) 圖片加上alt

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 效果展示 項目背景: 由於瀏覽器的限制,web批量下載體驗不好以及無法下載文件夾。採用Electron技術,通過js開發PC應用程式,著力解決批量下載、斷點續傳、文件夾下載等問題。配合網頁版網盤使用,單個小文件使用瀏覽器內置下載,單個大文件、多文件、文件夾調用PC應用程式,提升下載體驗。 技術棧 E ...
  • 首先在最外層div添加v-if="isReloadAlive",並創建變數isReloadAlive = true 隨後添加provide()以及reload方法,如下: export default { provide() { return { reload: this.reload } }, d ...
  • ...
  • vue route transition vue router 切換動畫 特性 模擬前進後退動畫 基於css3流暢動畫 基於sessionStorage,頁面刷新不影響路由記錄 路由懶載入,返回可記錄滾動條位置 前進後退的判斷與路由路徑規則無關 支持任意基於Vue的UI框架 demo 手機掃碼 "在 ...
  • // 簡訊提交驗證 //$(function(){ var daoshu = 60; var timer = null; //手機號 function checkPhone(){ var phoneNumber = $.trim($('#t_code').val()); var phone = do ...
  • var time = new Date(); //當前時間 var year = time.getFullYear();//當前年份 var month = time.getMonth()+1; //當前月份 var Same_day = time.getDate(); //當前月份幾號 var t... ...
  • 1、基礎準備: 先來瞭解下,如何運用js實現select動態添加option。 //1.動態創建select function createSelect(){ var mySelect = document.createElement("select"); mySelect.id = "mySele ...
  • Bootstrap -- 文本,背景,其他樣式 1. 文本樣式:展示了不同的文本顏色 使用文本樣式: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...