當前位置:首頁 » 網頁前端 » 前端document學習
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端document學習

發布時間: 2022-09-02 14:21:54

❶ Web前端初學者應該學習的jQuery技巧

今天小編要跟大家分享的文章是關於
Web前端初學者應該學習的jQuery技巧!jQuery在Web前端學習里是很重要的一塊知識,很多人都在這階段學習的時候遇到問題,那麼作為剛剛接觸web前端的初學者來說都應該學習哪些Web前端初學者應該學習的jQuery技巧呢?讓我們一起來看一看吧!

1、關於頁面元素的引用


通過jquery的$引用元素包括通過id、class、元素名以及元素的層級關系及dom或者xpath條件等方法,且返回的對象為jquery對象(集合對象),不能直接調用dom定義的方法。


2、jQuery對象與dom對象的轉換


只有jquery對象才能使用jquery定義的方法。注意dom對象和jquery對象是有區別的,調用方法時要注意操作的是dom對象還是jquery對象。普通的dom對象一般可以通過$轉換成jquery對象。


如:$(document.getElementById("msg"))則為jquery對象,可以使用jquery的方法。


由於jquery對象本身是一個集合。所以如果jquery對象要轉換為dom對象則必須取出其中的某一項,一般可通過索引取出。


如:$("#msg")[0],$("div").eq(1)[0],$("div").get[1],$("td")[5]這些都是dom對象,可以使用dom中的方法,但不能再使用Jquery的方法。


以下幾種寫法都是正確的:


$("#msg").html;


$("#msg")[0].innerHTML;


$("#msg").eq(0)[0].innerHTML;


$("#msg").get(0).innerHTML;


3、如何獲取jQuery集合的某一項


對於獲取的元素集合,獲取其中的某一項(通過索引指定)可以使用eq或get(n)方法或者索引號獲取,要注意,eq返回的是jquery對象,而get(n)和索引返回的是dom元素對象。對於jquery對象只能使用jquery的方法,而dom對象只能使用dom的方法,如要獲取第三個


元素的內容。


有如下兩種方法:


$("div").eq(2).html;//調用jquery對象的方法


$("div").get(2).innerHTML;//調用dom的方法屬性


4、同一函數實現set和get


Jquery中的很多方法都是如此,主要包括如下幾個:


·$("#msg").html;//返回id為msg的元素節點的html內容。


·$("#msg").html("newcontent");


·//將「newcontent」作為html串寫入id為msg的元素節點內容中,頁面顯示粗體的newcontent


·$("#msg").text;//返回id為msg的元素節點的文本內容。


·$("#msg").text("newcontent");


·//將「newcontent」作為普通文本串寫入id為msg的元素節點內容中,頁面顯示newcontent


·$("#msg").height;//返回id為msg的元素的高度


·$("#msg").height("300");//將id為msg的元素的高度設為300


·$("#msg").width;//返回id為msg的元素的寬度


·$("#msg").width("300");//將id為msg的元素的寬度設為300


·$("input").val(");//返回表單輸入框的value值


·$("input").val("test");//將表單輸入框的value值設為test


·$("#msg").click;//觸發id為msg的元素的單擊事件


·$("#msg").click(fn);//為id為msg的元素單擊事件添加函數


·同樣blur,focus,select,submit事件都可以有著兩種調用方法


5、集合處理功能


·$.extend({


·min:function(a,b){returna

·max:function(a,b){returna>b?a:b;}


·});//為jquery擴展了min,max兩個方法


·使用擴展的方法(通過「$.方法名」調用):


·alert("a=10,b=20,max="+$.max(10,20)+",min="+$.min(10,20));


6、支持方法的連寫


所謂連寫,即可以對一個jquery對象連續調用各種不同的方法。


例如:


$("p").click(function{alert($(this).html)})


.mouseover(function{alert('mouseoverevent')})


.each(function(i){this.style.color=['#f00','#0f0','#00f'][i]});


7、操作元素的樣式


主要包括以下幾種方式:


·$("#msg").css("background");//返回元素的背景顏色


·$("#msg").css("background","#ccc")//設定元素背景為灰色


·$("#msg").height(300);$("#msg").width("200");//設定寬高


·$("#msg").css({color:"red",background:"blue"});//以名值對的形式設定樣式


·$("#msg").addClass("select");//為元素增加名稱為select的class


·$("#msg").removeClass("select");//刪除元素名稱為select的class


·$("#msg").toggleClass("select");//如果存在(不存在)就刪除(添加)名稱為select的class


8、完善的事件處理功能


Jquery已經為我們提供了各種事件處理方法,我們無需在html元素上直接寫事件,而可以直接為通過jquery獲取的對象添加事件。


如:


$("#msg").click(function{alert("good")})//為元素添加了單擊事件


$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})


//為三個不同的p元素單擊事件分別設定不同的處理


jQuery中幾個自定義的事件:


(1)hover(fn1,fn2):一個模仿懸停事件(滑鼠移動到一個對象上面及移出這個對象)的方法。當滑鼠移動到一個匹配的元素上面時,會觸發指定的第一個函數。當滑鼠移出這個元素時,會觸發指定的第二個函數。


//當滑鼠放在表格的某行上時將class置為over,離開時置為out。


$("tr").hover(function{


$(this).addClass("over");


},


function{


$(this).addClass("out");


});


(2)ready(fn):當DOM載入就緒可以查詢及操縱時綁定一個要執行的函數。


$(document).ready(function{alert("LoadSuccess")})


//頁面載入完畢提示「LoadSuccess」,相當於onload事件。與$(fn)等價


(3)toggle(evenFn,oddFn):每次點擊時切換要調用的函數。如果點擊了一個匹配的元素,則觸發指定的第一個函數,當再次點擊同一元素時,則觸發指定的第二個函數。隨後的每次點擊都重復對這兩個函數的輪番調用。


//每次點擊時輪換添加和刪除名為selected的class。


$("p").toggle(function{


$(this).addClass("selected");


},function{


$(this).removeClass("selected");


});


(4)trigger(eventtype):在每一個匹配的元素上觸發某類事件。


例如:


$("p").trigger("click");//觸發所有p元素的click事件


(5)bind(eventtype,fn),unbind(eventtype):事件的綁定與反綁定


從每一個匹配的元素中(添加)刪除綁定的事件。


例如:


$("p").bind("click",function{alert($(this).text);});//為每個p元素添加單擊事件


$("p").unbind;//刪除所有p元素上的所有事件


$("p").unbind("click")//刪除所有p元素上的單擊事件


9、幾個實用特效功能


其中toggle和slidetoggle方法提供了狀態切換功能。


如toggle方法包括了hide和show方法。


slideToggle方法包括了slideDown和slideUp方法。


10、幾個有用的jQuery方法


$.browser.瀏覽器類型:檢測瀏覽器類型。有效參數:safari,
opera,msie,mozilla。如檢測是否ie:$.browser.isie,是ie瀏覽器則返回true。


$.each(obj,fn):通用的迭代函數。可用於近似地迭代對象和數組(代替循環)。





$.each([0,1,2],function(i,n){alert("Item#"+i+":"+n);});


等價於:


vartempArr=[0,1,2];


for(vari=0;i


alert("Item#"+i+":"+tempArr[i]);


}


也可以處理json數據,如


$.each({name:"John",lang:"JS"},function(i,n){alert("Name:"+i+
",Value:"+n);});


結果為:


Name:name,Value:John


Name:lang,Value:JS


$.extend(target,prop1,propN):用一個或多個其他對象來擴展一個對象,返回這個被擴展的對象。這是jquery實現的繼承方式。


如:


$.extend(settings,options);


//合並settings和options,並將合並結果返回settings中,相當於options繼承setting並將繼承結果保存在setting中。


varsettings=$.extend({},defaults,options);


//合並defaults和options,並將合並結果返回到setting中而不覆蓋default內容。


可以有多個參數(合並多項並返回)


$.map(array,fn):數組映射。把一個數組中的項目(處理轉換後)保存到到另一個新數組中,並返回生成的新數組。


如:


vartempArr=$.map([0,1,2],function(i){returni+4;});


tempArr內容為:[4,5,6]


vartempArr=$.map([0,1,2],function(i){returni>0?i+1:null;
});


tempArr內容為:[2,3]


$.merge(arr1,arr2):合並兩個數組並刪除其中重復的項目。


如:$.merge([0,1,2],[2,3,4])//返回[0,1,2,3,4]


$.trim(str):刪除字元串兩端的空白字元。


如:$.trim("hello,howareyou?");//返回"hello,howareyou?"


11、解決自定義方法或其他類庫與jQuery的沖突


很多時候我們自己定義了$(id)方法來獲取一個元素,或者其他的一些js類庫如prototype也都定義了$方法,如果同時把這些內容放在一起就會引起變數方法定義沖突,Jquery對此專門提供了方法用於解決此問題。


使用jquery中的jQuery.noConflict;方法即可把變數$的控制權讓渡給第一個實現它的那個庫或之前自定義的$方法。之後應用Jquery的時候只要將所有的$換成jQuery即可,如原來引用對象方法$("#msg")改為jQuery("#msg")。


如:jQuery.noConflict;

//開始使用jQuery

jQuery("divp").hide;

//使用其他庫的$

$("content").style.display='none'

以上就是小編今天為大家分享的關於Web前端初學者應該學習的jQuery技巧的文章,希望本篇文章能夠對正在從事web前端學習的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利!


❷ 前端學習筆記style,currentStyle,getComputedStyle的區別和用法

在看博客的時候看到了這個這3個傢伙-style,currentStyle,getComputedStyle。以前學習的時候沒碰到過,既然現在碰到了,就小小的研究了一下。發現了些許問題,也許是時代久遠,也有可能是自己孤陋寡聞,但它實實在在的讓我感到迷惑。雖說陶淵明說,讀書不求甚解,但作為想成為一名優秀前端的前端開發者,還是要弄個明白,要不然睡不著覺啊!
先做個鋪墊吧。說說層疊樣式表的三種形式(三種的叫法不一,按照各自的習慣):
一。內聯樣式:在HTML標簽用style屬性設置。如:
1 <p style="color:#f90;">這是內聯樣式</p>
二。嵌入樣式:通過<head>標簽內通過<style>標簽設置。如:
1 <style type="text/css">
2 /*這是嵌入樣式*/
3 .stuff{color:#f90}
4 </style>

三。外部樣式:通過<link>標簽設置。如:
1 <link rel="stylesheet" href="path/style.css" type="text/css">
2
3 ============================================
4 /*外部樣式*/
5 @charset "UTF-8";
6 .stuff{color:#f90;}

推薦使用第三種方式。
下面該三位主角上場了。
第一位向我們緩緩走來的是style。它的使用方法是obj.style.attr;某位影評人在他的博客中評價道:
style只能獲取元素的內聯樣式,內部樣式和外部樣式使用style是獲取不到的。
用下面代碼驗證了一下,確實如上所說。我使用了三種樣式,得到的結果都是內聯樣式的值。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>無標題文檔</title>
6 <link href="style.css" rel="stylesheet" type="text/css"/>
7 <style type="text/css">
8 #stuff{width:300px;}
9 </style>
10 <script type="text/javascript">
11 window.onload = function(){
12 var oDiv = document.getElementById('stuff');
13 console.log(oDiv.style.width);
14 //alert(oDiv.style.width);
15 };
16
17 </script>
18 </head>
19
20 <body>
21 <div id="stuff" style="width:400px;"></div>
22 </body>
23 </html>

外鏈樣式表style.css:
1 @charset "utf-8"; 2 /* CSS Document */ 3 #stuff{width:100px;}
得到的結果是400px.

緊跟在style之後的是currentStyle,據說它有個強大的後盾MS,也就是說這傢伙只能在IE瀏覽器里能用。其他的不好使。它的使用方法是window.currentStyle["attr']或者window.currentStyle.attr。在IE中獲取內嵌樣式表中width的屬性值為300px,在Mozilla Firefox中無法通過。

最後一位走來的是getComputedStyle,它的用法是window.getComputedStyle(ob, pseudoElt)["attr']或window.getComputedStyle(ob, pseudoElt).attr。其中,pseudoElt表示如 :after,:before之類的偽類,如果不用偽類的話設置為null即可。
還是那位影評人評論道:
getComputedStyle同currentStyle作用相同,但是適用於FF、opera、safari、chrome。
抱著懷疑的態度,我又驗證了一下,果然IE7,IE8,IE9都報錯了:
對象不支持「getComputedStyle」屬性或方法
<img src="http://www.it165.net/uploadfile/files/2014/0624/20140624200921240.jpg" alt="鷌莰ky" http:="" www.it165.net="" e="" ewl="" "="" target="_blank" class="keylink" style="border: 1px solid rgb(204, 204, 204); padding: 5px; margin: 0px; list-style: none; width: 650px; height: 322.5997045790251px;">瀏覽器的兼容性問題。瀏覽器的兼容性問題對於前端開發者來說確實是一個頭疼的問題,尤其是罪魁禍首IE6。但是我們不能懼而遠之,而是見招拆招,兵來將擋水來土掩。在和它戰斗的過程中你會得到很多的樂趣,以及戰勝它之後的成就感!!!
另外說一點:getComputedStyle和currentStyle只能獲取屬性值,無法設置屬性。如果想設置屬性值,可是使用ob.style.attr.

❸ js中的document.write是什麼意思

這個document是一個對象,write是他的方法。這個方法可以穿入一個don對象,就會覆蓋之前的document,通常用於前端調試,希望能夠幫您

❹ Web前端知識體系簡介

今天小編要跟大家分享的文章是關於Web前端知識體系簡介。Web前端技術由html、css和javascript三大部分構成,是一個龐大而復雜的技術體系,其復雜程度不低於任何一門後端語言。而我們在學習它的時候往往是先從某一個點切入,然後不斷地接觸和學習新的知識點,因此對於初學者很難理清楚整個體系的脈絡結構。本文將對Web前端知識體系進行簡單的梳理,對應的每個知識點點到為止,不作詳細介紹。目的是幫助大家審查自己的知識結構是否完善,如有遺漏或不正確的地方,希望共勉。下面來和小編一起看一看吧!

一、JAVASCRIPT篇


0、基礎語法


Javascript基礎語法包括:變數定義、數據類型、循環、選擇、內置對象等。


數據類型有string,number,boolean,null,undefined,object等。其中,string,number和boolean是基礎類型,null和undefined是JS中的兩個特殊類型,object是引用類型。
Javascript可以通過typeof來判斷基礎數據類型,但不能夠准確判斷引用類型,
因此需要用到另外一個方法,那就是Object的toString,關於數據類型及其判斷可以參考以下博客:數據類型詳解和判斷JS數據類型的四種方法


JS常用的內置對象有Date、Array、RegExp等。一般來講,Date和Array用的最頻繁,正則表達式RegExp是處理字元串的利器。
關於數據和正則表達式的用法可以參考博客:ES5對數組增強的9個API和JS正則表達式精簡


1、函數原型鏈


Javascript雖然沒有繼承概念,但Javascript在函數Function對象中建立了原型對象prototype,並以Function對象為主線,從上至下,在內部構建了一條原型鏈。


簡單來說就是建立了變數查找機制,當訪問一個對象的屬性時,先查找對象本身是否存在,如果不存在就去該對象所在的原型連上去找,直到Object對象為止,如果都沒有找到該屬性才會返回undefined。因此我們經常會利用函數的原型機制來實現JS繼承。關於函數原型鏈可參考博客:JS原型對象和原型鏈


2、函數作用域


函數作用域就是變數在聲明它們的函數體以及這個函數體嵌套的任意函數體內都是有定義的。在JS中沒有會塊級作用域,只有函數作用域,因此JS中還存在著另外一種怪異現象,那就是變數提升。關於作用域的介紹請參考博客:函數的作用域和作用域鏈


3、函數指針this


this存在於函數中,它指向的是該函數在運行時被調用的那個對象。在實際項目中,遇到this的坑比較多,因此需要對this作深入的理解。


Function對象還提供了call、apply和bind等方法來改變函數的this指向,其中call和apply主動執行函數,bind一般在事件回調中使用,而call和apply的區別只是參數的傳遞方式不同。關於call,apply和bind的用戶請參考博客:詳解JS的call,apply和bind


4、構造函數new


JS中的函數即可以是構造函數又可以當作普通函數來調用,當使用new來創建對象時,對應的函數就是構造函數,通過對象來調用時就是普通函數。


普通函數的創建有:顯式聲明、匿名定義、newFunction()等三種方式。


當通過new來創建一個新對象時,JS底層將新對象的原型鏈指向了構造函數的原型對象,於是就在新對象和函數對象之間建立了一條原型鏈,通過新對象可以訪問到函數對象原型prototype中的方法和屬性。new的詳細介紹請參考博客:理解JS中的new運算符


5、閉包


閉包其實是一個主動執行的代碼塊,這個代碼塊的特殊之處是可以永久保存局部變數,但又不污染全局變數,可以形成一個獨立的執行過程,因此我們經常用閉包來定義組件。


關於閉包的介紹請參考:干貨分享:讓你分分鍾學會JS閉包


6、單線程和非同步隊列


setTimeout和setInterval是JS內置的兩個定時器,使用很簡單,但這兩個方法背後的原理卻不簡單。


我們知道,JS是單線程語言,在瀏覽器中,當JS代碼被載入時,瀏覽器會為其分配一個主線程來執行任務(函數),主線程會形成一個全局執行環境,執行環境採用棧的方式將待執行任務按順序依次來執行。


但在瀏覽器中有一些任務是非常耗時的,比如http請求、定時器、事件回調等,為了保證其他任務的執行效率不被影響,JS在執行環境中維護了一個非同步隊列(也叫工作線程),並將這些任務放入隊列中進行等待,這些任務的執行時機並不確定,只有當主線程的任務執行完成以後,才會去檢查非同步隊列中的任務是否需要開始執行。


這就是為什麼setTimeout(fn,0)始終要等到最後執行的原因。關於單線程和非同步隊列問題請參考:setTimeout(0)


7、非同步通訊Ajax技術


Ajax是瀏覽器專門用來和伺服器進行交互的非同步通訊技術,其核心對象是XMLHttpRequest,通過該對象可以創建一個Ajax請求。為了防止XSS攻擊,瀏覽器對Ajax做了限制,不允許Ajax跨域請求伺服器,就是只能訪問當前域名下的url。


當然,如果確信你的站點不存在跨域的風險,可以在服務端主動開啟跨域請求,也可以通過CORS或JSONP來實現。


JSONP是利用腳本(script)跨域能力來模擬Ajax請求。


CORS是一個W3C標准,全稱是"跨域資源共享"(Cross-originresource
sharing)。它允許瀏覽器向跨源伺服器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。關於CORS的介紹請參考:跨域資源共享
CORS詳解


8、DOM對象document


document對象里保存著整個Web頁面dom結構,在頁面上所有的元素最終都會映射為一個dom對象。
document也提供了很多api來查找特定的dom對象,比如getElementById,querySelector等等。


9、事件系統Event


事件是用戶與頁面交互的基礎,到目前為止,DOM事件從PC端的滑鼠事件(mouse)發展到移動端的觸摸事件(touch)
和手勢事件(guesture)


由於DOM結構可能會多層嵌套,因此也衍生出了兩種事件流:事件捕獲和事件冒泡,後者最常用。利用事件冒泡機制可以實現很多功能,比如頁面點擊統計。關於兩種事件流的介紹請參考:事件冒泡和捕獲


除此之外,在頁面初始化、滾動、隱藏、返回等操作時分別內置了onload/onDOMContentLoaded、onscroll、onvisibility和onhashchange等事件,如果想要捕獲這些事件,需要通過addEventLisener/attachEvent來進行綁定。


10、全局對象window


在JS中,當一段JS代碼在瀏覽器中被載入執行,JS引擎會在內容中構建一個全局執行環境,執行環境的作用是保證所有的函數能按照正確的順序被執行,而window對象則是這個執行環境中的一個全局對象,window對象中內置了很多操作api和對象,document對象就是其中一個。關於JS執行環境的介紹請參考博客:深入理解JS執行細節


二、CSS篇


css是用來對html進行修飾的一門語言。


1、選擇器


css的選擇器有很多種,常用的有類選擇器、標簽選擇器、ID選擇器、後代選擇器、群組選擇器、偽類選擇器(before/after)、兄弟選擇器(+~)、屬性選擇器等等。


2、定位


定位一般有相對定位(relative)、絕對定位(absolute)、固定定位(fixed),
relative和absolute在移動端用的最多,fixed在移動端的兼容性有問題,因此不推薦使用,在移動端替代fixed的方案是
absolute+內部滾動。


3、浮動


設置float為left或right,就能使該元素脫離文檔流,向左或向右浮動。一般在做宮格模式布局時會用到,如果子元素全部設置為浮動,則父元素是塌陷的,這時就需要清除浮動,清除浮動的方法也很多,常用的方法是在元素末尾加空元素設置clear:both,
更高級一點的就給父容器設置before/after來模擬一個空元素,還可以直接設置overflow:auto/hidden。除過浮動可以實現宮格模式,行內盒子(inline-block)和table也可以。


4、盒子模型


盒子模型是css最重要的一個概念,也是css布局的基石。
常見的盒子模型有塊級盒子(block)和行內盒子(inline-block),盒子最關鍵的幾個屬性包括margin、border、padding和content,這幾個元素可以設置盒子和盒子之間的關系以及盒子和內容之間的關系。還有一個問題是計算盒子的大小,需要注意的是,box-sizing屬性的設置會影響盒子的width和height。只有普通文檔流中塊框的垂直外邊距才會發生外邊距合並。行內框、浮動框或絕對定位之間的外邊距不會合並。


5、Flex布局


Flex布局的容器是一個伸縮容器,首先容器本身會更具容器中的元素動態設置自身大小;然後當Flex容器被應用一個大小時(width和height),將會自動調整容器中的元素適應新大小。Flex容器也可以設置伸縮比例和固定寬度,還可以設置容器中元素的排列方向(橫向和縱向)和是否支持元素的自動換行。有了這個神器,做頁面布局的可以方便很多了。注意,設為Flex布局以後,子元素的float、clear和vertical-align屬性將失效。


6、transition(過渡)和transform(旋轉)


應用transform可以對元素進行平移(translate)、旋轉(rotate)、放大縮小(scale)、傾斜(skew)等處理,而transition使css屬性值(包括transform)在一段時間內平滑的過渡。使用transition和transform就可以實現頁面的滑動切換效果。


7、動畫Animation


Animation首先需要設置一個動畫函數,然後以這個動畫的方式來改變元素的css屬性之的變化,動畫可以被設置為永久循環演示。
和transition相比,animation設置動畫效果更靈活更豐富,二者還有一個區別是:transition只能通過主動改變元素的css值才能觸發動畫效果,而animation一旦被應用,就開始執行動畫。


8、Sprite圖


對於大型站點,為了減少http請求的次數,一般會將常用的小圖標排到一個大圖中,頁面載入時只需請求一次網路,然後在css中通過設置background-position來控制顯示所需要的小圖標。


9、字體圖標iconfont


所謂字體圖標就是將常用的圖標轉化為字體資源存在文件中,通過在CSS中引用該字體文件,然後可以直接通過控制字體的css屬性來設置圖標的樣式。


三、HTML篇


1、Web語義化和SEO


html
常規標簽有html,head,body,div,span,table,ul,ol,dl,p,b,h1~h6,strong,form,input,img,em,i
等等,另外html5還新增了很多語義化的標簽,比如header,acticle,aside,section,footer,audio,radio
等等。


Web語義化是指使用語義恰當的標簽,使頁面有良好的結構,頁面元素有含義,能夠讓人和搜索引擎都容易理解。


SEO是指在了解搜索引擎自然排名機制的基礎之上,對網站進行內部及外部的調整優化,改進網站在搜索引擎中關鍵詞的自然排名,獲得更多的展現量,吸引更多目標客戶點擊訪問網站,從而達到互聯網營銷及品牌建設的目標。


搜索引擎通過爬蟲技術獲取的頁面就是由一堆html標簽組成的代碼,,人可以通過可視化的方式來判斷頁面上哪些內容是重點,而機器做不到。但搜索引擎會根據標簽的含義來判斷內容的權重,因此,在合適的位置使用恰當的標簽,使整個頁面的語義明確,結構清晰,搜索引擎才能正確識別頁面中的重要內容,並予以較高的權值。比如h1~h6這幾個標簽在SEO中的權值非常高,用它們作頁面的標題就是一個簡單的SEO優化。


2、本地存儲


本地存儲最原始的方式就是cookie,cookie是存放在本地瀏覽器的一段文本,數據以鍵值對的形式保存,可以設置過期時間。但是cookie
不適合大量數據的存儲,因為每次請求一次頁面,cookie都會發送給伺服器,這使得cookie
速度很慢而且效率也不高。因此cookie的大小被限制為4k左右(不同瀏覽器可能不同,分HOST),如下所示:


·Firefox和Safari允許cookie多達4097個位元組,包括名(name)、值(value)和等號。


·Opera允許cookie多達4096個位元組,包括:名(name)、值(value)和等號。


·InternetExplorer允許cookie多達4095個位元組,包括:名(name)、值(value)和等號。


在所有瀏覽器中,任何cookie大小超過限制都被忽略,且永遠不會被設置。


html5提供了兩種在客戶端存儲數據的新方法:localStorage和sessionStorage,它們都是以key/value
的形式來存儲數據,前者是永久存儲,後者的存儲期限僅限於瀏覽器會話(session),即當瀏覽器窗口關閉後,sessionStorage中的數據被清除。


localStorage的存儲空間大約5M左右(不同瀏覽器可能不同,分
HOST),這個相當於一個5M大小的前端頁面的資料庫,相比於cookie可以節約帶寬,但localStorage在瀏覽器隱私模式下是不可讀取的,當存儲數據超過了localStorage的存儲空間後會拋出異常。


此外,H5還提供了逆天的Websql和indexedDB,允許前端以關系型資料庫的方式來存儲本地數據,相對來說,這個功能目前應用的場景比較少,此處不作介紹。


3、瀏覽器緩存機制


瀏覽器緩存機制是指通過HTTP協議頭里的Cache-Control(或Expires)和Last-Modified(或
Etag)等欄位來控制文件緩存的機制。


Cache-Control用於控制文件在本地緩存有效時長。最常見的,比如伺服器回包:Cache-Control:max-age=600
表示文件在本地應該緩存,且有效時長是600秒(從發出請求算起)。在接下來600秒內,如果有請求這個資源,瀏覽器不會發出HTTP
請求,而是直接使用本地緩存的文件。


Last-Modified是標識文件在伺服器上的最新更新時間。下次請求時,如果文件緩存過期,瀏覽器通過If-Modified-Since
欄位帶上這個時間,發送給伺服器,由伺服器比較時間戳來判斷文件是否有修改。如果沒有修改,伺服器返回304告訴瀏覽器繼續使用緩存;如果有修改,則返回200,同時返回最新的文件。


Cache-Control通常與Last-Modified一起使用。一個用於控制緩存有效時間,一個在緩存失效後,向服務查詢是否有更新。


Cache-Control還有一個同功能的欄位:Expires。Expires的值一個絕對的時間點,如:Expires:Thu,10Nov
201508:45:11GMT,表示在這個時間點之前,緩存都是有效的。


Expires是HTTP1.0標准中的欄位,Cache-Control是HTTP1.1
標准中新加的欄位,功能一樣,都是控制緩存的有效時間。當這兩個欄位同時出現時,Cache-Control是高優化級的。


Etag也是和Last-Modified一樣,對文件進行標識的欄位。不同的是,Etag
的取值是一個對文件進行標識的特徵字串。在向伺服器查詢文件是否有更新時,瀏覽器通過If-None-Match
欄位把特徵字串發送給伺服器,由伺服器和文件最新特徵字串進行匹配,來判斷文件是否有更新。沒有更新回包304,有更新回包200。Etag和
Last-Modified可根據需求使用一個或兩個同時使用。兩個同時使用時,只要滿足基中一個條件,就認為文件沒有更新。


另外有兩種特殊的情況:


·
手動刷新頁面(F5),瀏覽器會直接認為緩存已經過期(可能緩存還沒有過期),在請求中加上欄位:Cache-Control:max-age=0,發包向伺服器查詢是否有文件是否有更新。


·
強制刷新頁面(Ctrl+F5),瀏覽器會直接忽略本地的緩存(有緩存也會認為本地沒有緩存),在請求中加上欄位:Cache-Control:no-cache(或
Pragma:no-cache),發包向服務重新拉取文件。


4、HTML5離線緩存


HTML5離線緩存又叫Application
Cache,是從瀏覽器的緩存中分出來的一塊緩存區,如果要在這個緩存中保存數據,可以使用一個描述文件(manifest
file),列出要下載和緩存的資源。


manifest文件是簡單的文本文件,它告知瀏覽器被緩存的內容(以及不緩存的內容)。manifest文件可分為三個部分:


-CACHEMANIFEST-在此標題下列出的文件將在首次下載後進行緩存


-NETWORK-在此標題下列出的文件需要與伺服器的連接,且不會被緩存


-FALLBACK-在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如404頁面)


離線緩存為應用帶來三個優勢:


·離線瀏覽-用戶可在應用離線時使用它們


·速度-已緩存資源載入得更快


·減少伺服器負載-瀏覽器將只從伺服器下載更新過或更改過的資源。


5、Canvas和SVG


Canvas通過Javascript來繪制2D圖形。Canvas是逐像素進行渲染的。在Canvas
中,一旦圖形被繪制完成,它就不會繼續得到瀏覽器的關注。如果其位置發生變化,那麼整個場景也需要重新繪制,包括任何或許已被圖形覆蓋的對象。


SVG是一種使用XML描述2D圖形的語言。SVG基於XML,這意味著SVGDOM中的每個元素都是可用的。你可以為某個元素附加
JavaScript事件處理器。在SVG中,每個被繪制的圖形均被視為對象。如果SVG對象的屬性發生變化,那麼瀏覽器能夠自動重現圖形。


Canvas和SVG相比,canvas更依賴於解析度,不支持事件處理器,文本渲染能力弱,比較適合密集型游戲,其中的許多對象會被頻繁繪制,而svg則比較適用於類似谷歌地圖帶有大型渲染區域的應用程序。


以上就是小編今天為大家分享的Web前端知識體系簡介的文章,希望本篇文章能夠對正在從事Web工作和學習Web前端知識的小夥伴們有所幫助。想要了解更多Web前端知識記得關注北大青鳥Web培訓官網。最後祝願小夥伴們工作順利!


原文地址:#/onepixel/p/7021506.html


❺ 一名合格的前端工程師的知識結構是怎樣的

第一,必須掌握基本的Web前端開發技術,其中包括:CSS、HTML、DOM、BOM、Ajax、Java等,在掌握這些技術的同時,還要清楚地了解它們在不同瀏覽器上的兼容情況、渲染原理和存在的Bug。
第二,在一名合格的前端工程師的知識結構中,網站性能優化、SEO和伺服器端的基礎知識也是必須掌握的。
第三,必須學會運用各種工具進行輔助開發。
第四,除了要掌握技術層面的知識,還要掌握理論層面的知識,包括代碼的可維護性、組件的易用性、分層語義模板和瀏覽器分級支持等等。
可見,看似簡單的網頁製作,如果要做得更好、更專業,真的是不簡單。這就是前端開發的特點,也是讓很多人困惑的原因。如此繁雜的知識體系讓新手學習起來無從下手,對於老手來說,也時常不知道下一步該學什麼,這里的關鍵影響因素就是代碼質量。CSS、HTML、Java這三種前端開發語言的特點是不同的,對代碼質量的要求也不同,但它們之間又有著千絲萬縷的聯系。
對於新手,在Web前端開發培訓班學習一定要給自己制定一系列的學習和成長計劃,制定的方法如下:
第一、梳理知識架構
梳理知識架構的目的在於,要了解清楚,哪些技術是前置、哪些技術是後繼,哪些技術是深度、哪些技術是廣度,按照這兩個維度梳理好知識架構之後,才能准確地制定清晰的成長目標、高效的成長計劃。
第二、分解目標
大抵可分解為三個階段,包括:起步階段、提升階段、成型階段。這三個階段分別對應著不同的目標:起步、提升、成型階段。
成為一名合格的前端開發工程師,學習是必不可少的。

❻ 學習web前端要注意什麼工作中最常用的技術是什麼怎樣著手學更快

都說前端入門低,想學好前端絕對不容易,可以說現在前端所需要掌握的技能超過後端和以往,新技術概念層出不窮,到底所謂的前端都應該幹些什麼都應該會寫什麼呢?
本人身邊有太多的人會切幾張圖, 會用jQuery做個特效, 會從bootstrap里復制粘貼, 會用html游戲框架寫個flappy bird, 會在Github里找各種模板自和庫拼拼湊湊, 就口口聲聲大言不慚的稱自己為前端工程師. 說什麼前端好簡單啊, 前端找工作好難啊, 沒有出路啊, 想轉行啊. 甚至有更多的人還不明白什麼是HTML, 就到處問(知乎里尤其多)怎麼開始學前端啊, 前端前景好不好啊. 依照本人的經驗, 什麼東西難不難, 什麼東西好不好, 可不是這樣問出來的. 我相信在這在這種網路信息資源及其豐富的年代, 花個半小時自行搜索一下你應該可以得到你想要的答案.

好了言歸正傳, 前端工程師真的是一個無關緊要的職位么? 我們先來看看前端工程師都要做些什麼, 看看那些稱自己是'所謂'的前端同學們都能走到哪一步.

這里直接跳過最基本的HTML+CSS+JS, 包括但不僅限於:
- HTML各種element怎麼用什麼時候用?
- Event? EventLitsener? HTML中觸發event以及JS中處理event?
- DOM tree? 添加? 修改? 刪除? 搜索? 遍歷? 選擇? children? parent? sibling?
- 什麼是window? 什麼是document?
- JS基本語法? function? loop&condition? scope&closure? array&object? this?
- CSS 什麼是box modal? position? float? 各種選擇器(*, >, ~, :nth-child)?

如果看到這里有任何一項完全沒聽說過沒用過, 或者查各種文檔後'大概'知道怎麼用的同學們, 很遺憾, 你們現在算不上是一個合格的前端工程師. 如果不是, 請繼續.

### 程序員的基本素質和知識

(有些人覺得前端不同於傳統意義上的程序員, 這點我十分不贊同. 或許把前端工程師叫做JS程序員更加貼切, HTML和CSS就好比其他語言中的UI庫)-

- 高數, 基本的概率統計 (連簡單的微分方程都不會解的朋友們就不要稱自己為前端人員了!)
- 基本數據結構 能用JS寫出linked list, stack, queue, (binary)tree, graph, hashtable么?
- 基本演算法 能用JS實現各種search(linear, binary..), 各種sort(bubble, insertion, merge, quick, selection), 以及樹的搜索(Breadth First/Depth First)和遍歷(3種順序)么?
- 設計模式 知道什麼是singleton, factory, strategy, decrator么?
- Git 不要只是停留在把Github當做一個網路儲存器的層面上, 知道branch, diff, merge么?
- 基本的英語能力(不要求聽說, 只用來讀/寫文檔資料)
- 基本的計算機知識 知道位運算, 溢出, thread, lock, concurrency, parallelism么?
- 熟悉unix的基本命令么? 知道ssh public/private key都是幹嘛的么?
- 知道正則么? 能夠熟練的使用么?
- 能寫出詳細的注釋/文檔, 讓閱讀你代碼的人知道你要幹嘛么? 能短時間內快速地讀懂來自你同事或者其他地方(github, blog)的代碼, 知道什麼東西應該寫在什麼地方, 以便迅速地參與其中么?
- 給你一個你從來沒有接觸過的庫/語言, 能能夠在較短的時間內在你的代碼里正確使用么?
- 有一個得心應手用的熟練地編輯器/IDE么? 不要求大家都是vim/emacs大神, 但也不要做什麼都是用滑鼠來點.
- 基本的檢索查詢能力(google, stackoverflow, MDN)
- 單獨思考解決問題的能力, 團隊合作, 與人相處

如果以上的內容都有所了解(這里不會強調精通), 恭喜你, 你擁有了成為前端工程師的基礎知識. 繼續.

### 前端專業知識
- 知道什麼是AMD, COMMONJS么? 知道call, apply, bind么? 知道JS中foreach, filter, some, every么? 知道怎麼實現functional JS(curry等)么?
- 知道各種所謂的高級HTML的API(File, Web Audio, WebSocket)么?
- 知道各種CSS Preprocessors么? 能講出他們各自的優點和缺點么? 熟悉並且會用其中的一種么?
- 知道各種CSS框架么? 能講出他們各自的優點和缺點么? 熟悉並且會用其中的一種么?
- 知道canvas, SVG么?
- 知道怎麼把你的東西做成responsive, cross-browser support么?
- 知道什麼是SEO並且怎麼優化么? 知道各種meta data的含義么?
- 知道什麼是Ajax, restful, get, post么? 知道怎麼和後台交互么?
- 知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)么? 能講出他們各自的優點和缺點么? 熟悉並且會用其中的一種或多種么?
- 知道什麼是webkit么? 知道怎麼用瀏覽器的各種工具來調試和debug代碼么?
- 知道現在前端一般的工作流程(gulp, grunt, git, svn, npm)么?
- 知道怎麼測試代碼么? 知道BDD, TDD, Unit Test么? 知道怎麼測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?
- 知道前端templating(Mustache, underscore, handlebars)是幹嘛的, 怎麼用么?
- 知道npm, V8, node, express, socket么? (這里補充一點, 現在越來越多的公司都採用: '前端網頁 -> 前端後台 -> 後台'這種構架來搭建東西, 也就是說, 前端工程師不僅要做傳統前端的網頁, 還要寫自己的後台, 來跟真正的後台進行交互, 至於前端的後台用什麼語言來寫, 一般是node/python/ruby, 不太會用到龐大的java, 所以這里我把node列為前端工程師必須要掌握的技能之一) 知道cache, authentication么?
- (如果要用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
- 另外, 前端這個行業跟傳統的c/c++/java程序員還是有一定的差別的. 由於是新興產業, 所以各種行業標准, 框架, 庫會隨時隨地的產生和更新 (作為一個c程序員, 十年前怎麼寫東西現在還是怎麼寫東西). 今天出了node和react, 明天又出了io和mean. 所以, 積極關注各種前端產品, 跟上變化的節奏, 也是身為一個前端程序員必備的技能之一. 知道ECMAScript 6里怎麼寫class么? 知道react, flux, reflux么? 知道polymer, dart么? 知道meteor么?

以上是摘自知乎某大牛的文章=====
感覺對新人挺打擊的,不過理清從大體上重新認識前端對學習理解也有一定幫助,只要自己想好了就堅持下去,學前端的最重要的隨時學習能力,應該前端領域知識面涵蓋太廣,很多技術也不成熟,正在發展中,只能不停學習各種新技術新知識。。能分辨哪些技術是必須掌握的,哪些是少數人創造用來提」升逼格「的概念,能把PS+HTML+CSS+js玩熟,會一兩個框架,懂點設計。就可以了

❼ 前端window和document的區別

window是當前窗口
document是當前文檔
可以理解為:當前窗口(window)中展示了一個文檔(document)

通常,獲取某個元素的話,使用document.getElementxxxxxx這種的
獲取某個定義的變數,用window.a

❽ 前端培訓班要學習的內容有哪些

前端現在技術很多,學習的內容也是很多,不過最最重要的部分還是HTML,CSS,JavaScript這三個。源碼時代前端培訓班主要內容包括:
HTML&CSS:
對Web標準的理解、瀏覽器內核差異、兼容性、hack、CSS基本功:布局、盒子模型、選擇器優先順序及使用、document flow(文檔流)、清除浮動,hasLayout 和 塊格式化上下文 (block-formattin contexts) 、reflow&repaint、硬體加速、HTML5(離線 & 存儲,多媒體,Web Sockets ,Web Workers,History API2D/3D 繪圖)、CSS3、Flexbox、CSS預編譯、動畫、響應式布局、移動端開發

JavaScript:
數據類型、面向對象、數組、DOM、BOM、Function、繼承、閉包、內置對象、作用域、跨域、原型鏈、、JSON、XMLHttpRequest、 RegExp、模塊化、內存泄漏、事件機制、非同步裝載回調、模板引擎、前端MVC、NodeJS、JSON、ajax、框架、演算法等

其他(前端工程化\代碼規范\預編譯\前端框架\安全\優化\重構):
HTTP、 ES6、 ES7、React、 VUE、Angular、Backbone、Underscore、Flux、Web Component、handlebars、Gulp/Grunt、Git、CDN、WEB安全、性能優化、項目重構、團隊協作、SEO、UED、技術架構、快速學習能力

❾ web前端學習路線

您好,web前端的學習路線分為以下8個階段:
階段1.前端核心基礎
HTML +_CSS核心、JavaScript基礎語法、JavaScript面向對象、JavaScript DOM和BOM編程、jQuery框架

階段2.HTML5 + CSS3 + 移動端核心
HTML5新特性、Canvas專列、CSS3新特性、CSS3進階、CSS3實例演練

階段3.移動端
移動端核心、移動端適配、移動端特效

階段4.伺服器端
伺服器端開發、資料庫操作、前後端交互核心、微信公眾號開發

階段5.JavaScript高級
JavaScript基礎深入剖析、JavaScript面向對象深入講解、JavaScript非同步編程、JavaScript函數式編程、JavaScript設計模式

階段6.前端必備
性能優化、版本控制工具、模塊化、項目構建工具

階段7.高級框架
React框架基本使用、React框架進階、Vue框架基本使用、Vue框架進階、Vue源碼分析

階段8.小程序
原生小程序入門、原生小程序API使用、小程序框架Mpvue
希望對您有幫助。