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

web前端頂部邊界

發布時間: 2022-09-25 02:06:12

前端頁面是有哪三層構成,作用是

網頁分成三個層次,即:結構層、樣式層、行為層。

HTML:結構層 網頁的結構或內容層是該頁面的基礎HTML代碼。正如房屋的框架為房屋的其他部分構建了一個堅實 的基礎,HTML的堅實基礎創建了一個可以在其上創建網站的平台。 結構層用於存儲客戶想要閱讀或查看的所有內容。HTML結構可以包含文本和圖像,它包括訪問者用 於瀏覽網站的超鏈接。這是在符合標準的HTML5中編碼的,可以包括文本,圖像和多媒體(視頻,音頻等)。 網站內容的每個方面都應該在結構層中表示。這允許關閉JavaScript的客戶或無法查看整個網站的 CSS訪問許可權的客戶(如果不是所有功能)。

CSS:樣式層 該層指示結構化HTML文檔如何看待網站的訪問者,並由CSS(層疊樣式表)定義。這些文件包含有 關如何在Web瀏覽器中顯示文檔的樣式說明。樣式層通常包括基於屏幕大小和設備更改站點顯示的 媒體查詢。 網站的所有視覺樣式都應位於外部樣式表中。您可以使用多個樣式表,但請記住,每個CSS文件都需 要HTTP請求才能獲取它,從而影響站點性能。

JavaScript:行為層 行為層使網站具有交互性,允許頁面響應用戶操作或基於一組條件進行更改。JavaScript是行為層最 常用的語言,但CGI和PHP也經常被使用。 當開發人員引用行為層時,大多數都是指在Web瀏覽器中直接激活的層。您可以使用此圖層直接與 DOM(文檔對象模型)進行交互。在內容層中編寫有效的HTML對於行為層中的DOM交互非常重 要。在構建行為層時,應該像使用CSS一樣使用外部腳本文件來優化速度和性能。

㈡ 一個合格的web前端需要會什麼

1. div和table

這個是最簡單的,也是最基礎的。要熟練掌握div、form table、ul li 、p、span、font這些標簽,這些都是最常用的,特別是div和table,div用於布局、table也可以用於布局,但是不靈活,基本 table是用來和數據打交道。

2.html

HTML是指超文本標簽語言,是目前web領域應用廣泛的語言,我們只需要在html文檔中插入對應的標簽,即可實現web頁面的編寫與排列,所以要熟練掌握HTML基本知識,包括每個標簽的用法等。

3. CSS

CSS指層疊樣式表,可以為HTML標簽自定義樣式,通過設置HTML標簽的樣式,來改變其外形,達到美化與排版web頁面的目的。

4.Javascript

Javascript是網頁腳本語言,它可以在html中運行,設置並修改瀏覽器中的各種對象與變數。例如用來改進設計、驗證表單、檢測瀏覽器、創建 cookies等等,現在各大網站都可以看見 Javascript的蹤影,常見的網站首頁大眼晴、警告提示框、頁面動畫效果等等。Javascript更是一種在客戶端廣泛使用的腳步語言,在 Javascript當中提供了一些內置函數、對象和DOM操作,藉助這些內容我們可以來實現一些客戶端的特效、驗證、交互等!

5.Jquery

Jquery是相當於把js封裝了一套的一個js插件,目的就是操作起來更方便,代碼寫的更少。 Jquery是一個免費、開源的輕量級的Javascript庫,並且兼容各種瀏覽器,同時現在有很多基於 Jquery的插件可供選擇,這樣在我們實現一些豐富的動態效果時更方便快捷,大大節省了我們開發的時間,提高了開發速度。

6.框架

從 bootstrap開始,響應式的珊格系統被後來框架一直沿用,建議學一套主流mvc框架,vue,react, angular兩選一種。

7.會點後台語言

對於前端工程師來說,並不需要像網站程序員樣,編寫對象、開發特殊功能、搭建資料庫。但是前端工程師要掌握基本的頁面GET&POST傳參、程序判斷語法、程序輸出語法、頁面提交、資料庫查詢與記錄插入,以及掌握HTTP與WEB工作原理、掌握Socket長連接實時網路通信技術、掌握 NOSQL中的 MONGODB的應用、了解PHP語法、了解 MYSQL資料庫的基本操作。

當然,以上技能能夠幫助你成為一個合格的前端工程師,但要成為一個優秀的前端,必須掌握除技術以外的東西,例如設計,用戶等等,因此還需不斷的堅持學習。

㈢ Web前端工程師應該知道的CSS隱藏頁面元素的方法

今天小編要跟大家分享的文章是關於Web前端工程師應該知道的CSS隱藏頁面元素的方法。用CSS隱藏頁面元素有許多種方法。你可以將opacity
設為0、將visibility設為hidden、將display設為none或者將position設為absolute
然後將位置設到不可見區域。

你有沒有想過,為什麼我們要有這么多技術來隱藏元素,而它們看起來都實現的是同樣的效果?每一種方法實際上與其他方法之間都有一些細微的不同,這些
不同決定了在一個特定的場合下使用哪一個方法。這篇教程將覆蓋到那些你需要記住的細小不同點,讓你根據不同情況選擇上面這些方法中適合的方法來隱藏元素。正在從事web前端工作的小夥伴們來和小編一起學習一下吧!


一、opacity


opacity屬性的意思是設置一個元素的透明度。它不是為改變元素的邊界框(boundingbox)而設計的。這意味著將opacity設為0
只能從視覺上隱藏元素。而元素本身依然占據它自己的位置並對網頁的布局起作用。它也將響應用戶交互。


.hide{


opacity:0;}


如果你打算使用opacity
屬性在讀屏軟體中隱藏元素,很不幸,你並不能如願。元素和它所有的內容會被讀屏軟體閱讀,就像網頁上的其他元素那樣。換句話說,元素的行為就和它們不透明時一致。


我還要提醒一句,opacity屬性可以用來實現一些效果很棒的動畫。任何opacity屬性值小於1
的元素也會創建一個新的堆疊上下文(stackingcontext)。


看下面的例子:


看@SitePoint提供的例子「用opacity隱藏元素」


當你的滑鼠移到被隱藏的第2個的區塊上,元素狀態平滑地從完全透明過渡到完全不透明。區塊也將cursor屬性設置為了
pointer,這說明了用戶可以與它交互。


二、visibility


第二個要說的屬性是visibility。將它的值設為hidden將隱藏我們的元素。如同opacity
屬性,被隱藏的元素依然會對我們的網頁布局起作用。與opacity唯一不同的是它不會響應任何用戶交互。此外,元素在讀屏軟體中也會被隱藏。


這個屬性也能夠實現動畫效果,只要它的初始和結束狀態不一樣。這確保了visibility
狀態切換之間的過渡動畫可以是時間平滑的(事實上可以用這一點來用hidden實現元素的延遲顯示和隱藏——譯者注)。


.hide{


visibility:hidden;}


下面的例子演示了visibility與opacity有怎樣的不同:


看@SitePoint提供的例子「用visibility隱藏元素」


注意,如果一個元素的visibility被設置為hidden,同時想要顯示它的某個子孫元素,只要將那個元素的visibility顯式設置為
visible即可(就如例子裡面的.o-hidep——譯者注)。嘗試只hover在隱藏元素上,不要hover在p
標簽里的數字上,你會發現你的滑鼠游標沒有變成手指頭的樣子。此時,你點擊滑鼠,你的click事件也不會被觸發。


而在
標簽裡面的

標簽則依然可以捕獲所有的滑鼠事件。一旦你的滑鼠移動到文字上,


本身變得可見並且事件注冊也隨之生效。


三、display


display屬性依照詞義真正隱藏元素。將display屬性設為none
確保元素不可見並且連盒模型也不生成。使用這個屬性,被隱藏的元素不佔據任何空間。不僅如此,一旦display設為none
任何對該元素直接打用戶交互操作都不可能生效。此外,讀屏軟體也不會讀到元素的內容。這種方式產生的效果就像元素完全不存在。


任何這個元素的子孫元素也會被同時隱藏。為這個屬性添加過渡動畫是無效的,它的任何不同狀態值之間的切換總是會立即生效。


不過請注意,通過DOM依然可以訪問到這個元素。因此你可以通過DOM來操作它,就像操作其他的元素。


.hide{


display:none;}


看下面的例子:


@SitePoint提供的例子「用display隱藏元素」


你將看到第二個塊元素內有一個

元素,它自己的display屬性被設置成block,但是它依然不可見。這是
visibility:hidden和display:none的另一個不同之處。在前一個例子里,將任何子孫元素visibility顯式設置成
visible可以讓它變得可見,但是display不吃這一套,不管自身的display值是什麼,只要祖先元素的display是
one,它們就都不可見。


現在,將滑鼠移到第一個塊元素上面幾次,然後點擊它。這個操作將讓第二個塊元素顯現出來,它其中的數字將是一個大於0
的數。這是因為,元素即使被這樣設置成對用戶隱藏,還是可以通過JavaScript來進行操作。


四、position


假設有一個元素你想要與它交互,但是你又不想讓它影響你的網頁布局,沒有合適的屬性可以處理這種情況(opacity和visibility影響布局,
display不影響布局但又無法直接交互——譯者注)。在這種情況下,你只能考慮將元素移出可視區域。這個辦法既不會影響布局,有能讓元素保持可以操作。下面是採用這
種辦法的CSS:


.hide{


position:absolute;


top:-9999px;


left:-9999px;}


下面的例子闡明了怎樣通過絕對定位的方式隱藏元素,並讓它和前面的那個例子效果一樣:


看@SitePoint提供的例子「用position屬性隱藏元素」


這種方法的主要原理是通過將元素的top和left
設置成足夠大的負數,使它在屏幕上不可見。採用這個技術的一個好處(或者潛在的缺點)是用它隱藏的元素的內容可以被讀屏軟體讀取。這完全可以理解,是因為你只是將元素移到可視區域外面讓用戶無法看到它。


你得避免使用這個方法去隱藏任何可以獲得焦點的元素,因為如果那麼做,當用戶讓那個元素獲得焦點時,會導致一個不可預料的焦點切換。這個方法在創建
自定義復選框和單選按鈕時經常被使用。(用DOM模擬復選框和單選按鈕,但用這個方法隱藏真正的checkbox和radio
元素來「接收」焦點切換——譯者注)


五、clip-path


隱藏元素的另一種方法是通過剪裁它們來實現。在以前,這可以通過clip屬性來實現,但是這個屬性被廢棄了,換成一個更好的屬性叫做
clip-path。NitishKumar最近在SitePoint發表了「介紹clicp-path
屬性」這篇文章,通過閱讀它可以了解這個屬性的更多高級用法。


記住,clip-path屬性還沒有在IE或者Edge下被完全支持。如果要在你的clip-path中使用外部的SVG
文件,瀏覽器支持度還要更低。使用clip-path屬性來隱藏元素的代碼看起來如下:


.hide{


clip-path:polygon(0px0px,0px0px,0px0px,0px0px);}


下面是一個實際使用它的例子:


看@SitePoint提供的例子「用clip-path屬性隱藏元素」


如果你把滑鼠懸停在第一個元素上,它依然可以影響第二個元素,盡管第二個元素已經通過clip-path隱藏了。如果你點擊它,它會移除用來隱藏的
class,讓我們的元素從那個位置顯現出來。被隱藏元素中的文字仍然能夠通過讀屏軟體讀取,許多WordPress站點使用clip-path或者之前的
clip來實現專門為讀屏軟體提供的文字。


雖然我們的元素自身不再顯示,它也依然占據本該占據的矩形大小,它周圍的元素的行為就如同它可見時一樣。記住用戶交互例如滑鼠懸停或者點擊在剪裁區
域之外也不可能生效。在我們的例子里,剪裁區大小為零,這意味著用戶將不能與隱藏的元素直接交互。此外,這個屬性能夠使用各種過渡動畫來實現不同的效果。


結論


在這篇教程里,我們看了5種不同的通過CSS
隱藏元素的方法。每一種方法都與其他幾種有一點區別。知道你想要實現什麼有助於你決定採用哪一個屬性,隨著時間推移,你就能根據實際需求本能地選擇最佳方式了。


以上就是小編今天為大家分享的關於Web前端工程師應該知道的CSS
隱藏頁面元素的方法的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端相關知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利!


㈣ Web前端工作中常見的div+css錯誤

今天小編要為大家分享的文章是關於Web前端工作中常見的div+css錯誤。熟悉web前端工作的小夥伴都知道,web工作需要我們認真仔細,而且一不小心就會出現問題。今天小編就為大家准備了這篇文章大家一起來看一看在web前端工作中如何檢查和處理常見的div+css錯誤。

1.檢查HTML元素是否拼寫錯誤、是否忘記結束標記


即使是老手也經常會弄錯div的嵌套關系。可以用dreamweaver的驗證功能檢查一下有無錯誤。


2.檢查CSS是否正確


檢查一下有無拼寫錯誤、是否忘記結尾的}或者在}後面存在其他符號等。可以利用CleanCSS來檢查
CSS的拼寫錯誤。CleanCSS本是為CSS減肥的工具,但也能檢查出拼寫錯誤。


3.確定錯誤發生的位置


假如錯誤影響了整體布局,則可以逐個刪除div塊,直到刪除某個div塊後顯示恢復正常,即可確定錯誤發生的位置。


4.利用border屬性確定出錯元素的布局特性


使用float屬性布局一不小心就會出錯。這時為元素添加border屬性確定元素邊界,錯誤原因即水落石出。


5.float元素的父元素不能指定clear屬性


MacIE下假如對float的元素的父元素使用clear屬性,四周的float元素布局就會混亂。這是MacIE的聞名的bug,倘若不知道就會走彎路。


6.float元素務必指定width屬性


很多瀏覽器在顯示未指定width的float元素時會有bug。所以不管float元素的內容如何,一定要為其指定width屬性。


另外指定元素時盡量使用em而不是px做單位。


7.float元素不能指定margin和padding等屬性


IE在顯示指定了margin和padding的float元素時有bug。因此不要對float元素指定margin和padding屬性(可以在
float元素內部嵌套一個div來設置margin和padding)。也可以使用hack方法為IE指定非凡的值。


8.float元素的寬度之和要小於100%


假如float元素的寬度之和正好是100%,某些古老的瀏覽器將不能正常顯示。因此請保證寬度之和小於99%。


9.是否重設了默認的樣式?


某些屬性如margin、padding等,不同瀏覽器會有不同的解釋。因此最好在開發前首先將全體的margin、padding設置為0、列表樣式設置為none等。


10.是否忘記了寫DTD?


假如無論怎樣調整不同瀏覽器顯示結果還是不一樣,那麼可以檢查一下頁面開頭是不是忘了寫下面這行DTD:html4.01:

html5:

以上就是小編今天為大家分享的關於Web前端工作中常見的div+css錯誤的檢查和處理方法的注意事項,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web前端培訓官網。最後祝願小夥伴們面試成功,成為一名優秀的web前端工程師。

㈤ Web前端開發規范之HTML規范

今天小編要跟大家分享的文章是關於Web前端開發規范之HTML規范。Web前端作為開發團隊中不可或缺的一部分,需要按照相關規定進行合理編寫(一部分不良習慣可能給自己和他人造成不必要的麻煩)。不同公司不同團隊具有不同的規范和文檔。下面是根據不同企業和團隊的要求進行全面詳細的整理結果。來和小編一起看一看HTML規范的原則吧!

HTML規范


1、文檔類型聲明及編碼:統一為html5聲明類型。書寫時利用IDE實現層次分明的縮進(默認縮進4空格)。


2、非特殊情況下CSS文件放在body部分標簽後。非特殊情況下大部分JS文件放在標簽尾部(如果需要界面未載入前執行的代碼可以放在head標簽後)避免行內JS和CSS代碼。


3、所有編碼需要遵循html(XML)標准,標簽&屬性&屬性命名必須由小寫字母及下劃線數字組成,且所有標簽必須閉合,包括br(),hr()等。屬性值用雙引號。


4、引入JS庫文件,文件名須包含庫名稱及版本號及是否為壓縮版,比如jquery-1.4.1.min.js。引入插件,文件名格式為庫名稱+插件名稱,比如jQuery.bootstrap.js。


5、書寫頁面過程中,請考慮向後擴展性。class&id參見css書寫規范.


6、需要為html元素添加自定義屬性的時候,首先要考慮下有沒有默認的已有的合適標簽去設置,如果沒有,可以使用須以"data-"為前綴來添加自定義屬性,避免使用"data:"等其他命名方式。


7、語義化html,如標題根據重要性用h*(同一頁面只能有一個h1),段落標記用p,列表用ul,內聯元素中不可嵌套塊級元素。


8、盡可能減少div多層級嵌套。


9、書寫鏈接地址時,必須避免重定向,例如:href="http://#/",即須在URL地址後面加上「/」;


10、在頁面中盡量避免使用style屬性,即style=""。


11、必須為含有描述性表單元素(input,textarea)添加label,如姓名:須寫成:姓名:


12、能以背景形式呈現的圖片,盡量寫入css樣式中。


13、重要圖片必須加上alt屬性。給重要的元素和截斷的元素加上title。


14、給區塊代碼及重要功能(比如循環)加上注釋,方便後台添加功能。


15、特殊符號使用:盡可能使用代碼替代:比如<(<)&>(>)&空格()&_(_)等等。


以上就是小編今天為大家分享的關於Web前端開發規范之HTML規范的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助,想要了解更多Web前端知識記得關注北大青鳥Web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的Web前端工程師。


㈥ 參加Web前端面試必備的CSS知識點

今天小編要跟大家分享的文章是關於參加web前端面試必備的CSS知識點。css基本內容包括,類選擇符,id選擇符,偽類,偽元素,結構,繼承,特殊性,層疊,元素分類,顏色,長度,url,文本,字體,邊框,塊級元素,浮動元素,內聯元素,定位。下面來和小編一起看一看吧!

鏈接:


title="default">


link標簽:


title="default">


樣式:


h1{color:red;};


@import指示引入多個外部樣式表的鏈接





@importurl(styles.css);


p{color:red};





css註解


/*dashucoding*/


內聯樣式:


dashucoding




規范:


選擇符+聲明


p{color:red;}//選擇符屬性值


p{font-weight:bold;}


偽類和偽元素


屬性說明


:link超鏈接是一個未訪問過的地址


:visited訪問過的網頁


:active處於活躍的狀態


a{color:red;};a:visited{color:red;};


偽元素:


:first-letter和:first-line首字母和首行


p:first-letter{color:red;}


css有個特點是繼承,可以依賴於祖先-後代關系。


!important有這個標記,表示這條規則優先


p{color:red!important;}


元素分類:


三種類型:塊級元素,內聯元素,列表項元素


塊級元素有段落,標題,列表,表格,div,body等。內聯元素有a,em,span等。列表項元素有li元素。


dispaly:block|inline|list-item|none


顏色:


rgb(100%,100%,100%)紅藍綠,白色


單位:


em給字體的font-size值


文本:


文本縮進


text-indent<長度>|<百分比>


p{text-indent:-4em;}


text-align屬性


用於元素中文本行的對齊方式


text-align:left|center|right|justify


white-space空白


white-spacepre|nowrap|normal


p{white-space:normal;}將如何空白壓縮成單個空白符


white-space屬性值為pre,可以將元素內的空白忽略。


p{white-space:pre;}


行高:


line-height文本行的基線間的距離。


縱向對齊,vertical-align


vertical-align:baseline使元素的基線同父元素的基線對齊。


vertical-align:sub;vertical-align:super;


低端對齊:vertical-align


頂端對齊:vertical-align


vertical-align:top;vertical-align:text-top;


中間對齊:


vertical-align:middle;


文字間隔:


word-spacing長度|normal


word-spacing:0.3em;


字母間隔:


letter-spacing:長度|normal


文本轉換:


text-transformuppercase|lowercase|capitalize|none


文本修飾:


text-decoration:none|overline|line-through


框:


width長度|百分比|auto


height長度|auto


margin長度|百分比|auto


margin:toprightbottomleft


margin-top


margin-right


margin-bottom


margin-left


border-width//thinmediumthick


border-style:none;


padding


浮動與清除


float:left|right|none





float:none用於防止元素浮動


清除浮動元素


clearleft|right|both|none


clear原理是增加元素的上邊界,使它在低於浮動元素的位置結束,清除元素的上邊界寬度當有效地忽略。


list-style-typedisc


disc|circle|square|decimal|upper-alpha|lower-alpha|upper-roman
|lower-roman|none


list-style-type


disc為實心圓


circle為空心圓


square實心或空心方塊


列表項圖像


list-style-image|none


列表項位置:list-style-position


list-style-position:inside|outside


定位:


position:static|relative|absolute|fixed|inherit


溢出:


overflow:visible|hidden|scroll|auto|inherit


溢出剪切:


overflow-clip:rect|auto|inherit


元素剪切:


cliprect|auto|inherit


元素可見性:


visibility:visible|hidden|collapse|inherit


相對定位:


position:relative;


絕對定位:


position:relative;


固定定位:


position:fixed;


層疊定位:


z-index:integer|auto


輪廓:


outline,outline-color,outline-style,outline-width


邊框:


border-top-color,border-right-color,border-bottom-color


border-left-color,border-top-style


border-right-style,border-left-style


實例:








dashu


dashu2








1


2








以上就是小編今天為大家分享的關於參加web前端面試必備的CSS知識點的文章,希望本篇文章能夠對准備參加web前端面試的小夥伴沒呢有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端工程師。


文章來源:原創Jeskson達達前端


㈦ 網站前端開發常用的布局方式有哪些

實現網頁布局的方式方法比較多,布局方式可以大概分為這幾類。

布局種類:

1、table布局(網頁的興起,1995)

2、Flash布局(自由的黃金時代,1996)

3、div+css(CSS的誕生,1998)

4、柵格與響應式(移動端的興起,2007與2010)

當前WEB前端開發使用DIV+CSS的布局方式會比較多也比較常用吧,網頁布局看起來貌似簡單,但是它需要綜合使用很多HTML+CSS的知識,總的來說知識量是不小。如果想系統化的了解HTML+CSS方面的知識,建議你選擇一本比較不錯的HTML5相關書籍(主要看知識邏輯、知識的表達方式,比如《HTML5布局之路》)進行學習,讓自己的知識更扎實一些,不然學的零零散散的。

Tips:學習好HTML+CSS有利於後面學習JavaScript,畢竟需要它們兩者結合在一起才可以實現出可交互的前端頁面。

㈧ web前端編程開發都需要注意哪些問題

隨著互聯網的不斷發展,越來越多的程序員都從後台開發轉型到前端開發設計領域。今天,我們就一起來了解一下,在使用web編程開發語言進行前端開發的時候都有哪些問題是需要注意的。



1.路由變化頁面數據不刷新問題


出現這種情況是因為依賴路由的params參數獲取寫在created生命周期裡面,因為相同路由二次甚至多次載入的關系沒有達到,退出頁面再進入另一個文章頁面並不會運行created組件生命周期,導致文章數據還是一次進入的數據。


解決方法:watch路由是否變化。


2.setInterval路由跳轉繼續運行並沒有及時進行銷毀


比如一些彈幕,走馬燈文字,這類需要定時調用的,路由跳轉之後,因為組件已經銷毀了,但是setInterval還沒有銷毀,還在繼續後台調用,控制台會不斷報錯,如果運算量大的話,無法及時清除,會導致嚴重的頁面卡頓。


解決辦法:在組件生命周期beforeDestroy停止setInterval


//組件銷毀前執行的鉤子函數,跟其他生命周期鉤子函數的用法相同。


beforeDestroy(){


//我通常是把setInterval()定時器賦值給this實例,然後就可以像下面這么停止。


clearInterval(this.intervalId);


},


3.vue滾動行為用法,進入路由需要滾動到瀏覽器底部、頭部等等


使用前端路由,當切換到新路由時,想要頁面滾到頂部,或者是保持原先的滾動位置,就像重新載入頁面那樣。vue-router能做到,而且更好,它讓你可以自定義路由切換時頁面如何滾動。


注意:這個功能只在支持history.pushState的瀏覽器中可用。


4.v-once只渲染元素和組件一次,優化更新渲染性能


v-once這個指令相信大家用的很少,不過個人感覺還是挺實用的!


只渲染元素和組件一次。昆明北大青鳥http://www.kmbdqn.com/建議隨後的重新渲染,元素/組件及其所有的子節點將被視為靜態內容並跳過。這可以用於優化更新性能。


㈨ Web前端工程師如何處理Web前端的異常_

今天小編要跟大家分享的文章是關於Web前端工程師如何處理前端的異常。前端一直是距離用戶最近的一層,隨著產品的日益完善,我們會更加註重用戶體驗,而前端異常卻如鯁在喉,甚是煩人。下面我們就來看一看前端工程師該如何處理前端異常。一、為什麼要處理異常異常是不可控的,會影響最終的呈現結果,但是我們有充分的理由去做這樣的事情。


1.增強用戶體驗;
2.遠程定位問題;
3.未雨綢繆,及早發現問題;
4.無法復線問題,尤其是移動端,機型,系統都是問題;
5.完善的前端方案,前端監控系統;


對於JS而言,我們面對的僅僅只是異常,異常的出現不會直接導致JS引擎崩潰,最多隻會使當前執行的任務終止。二、需要處理哪些異常?對於前端來說,我們可做的異常捕獲還真不少。總結一下,大概如下:


·___S語法錯誤、代碼異常


·___JAX請求異常


·___蔡試醇釉匾斐


·___romise異常


·___frame異常


·___纈_cripterror


·___覽:塗ǘ


下面我會針對每種具體情況來說明如何處理這些異常。三、Try-Catch的誤區try-catch只能捕獲到同步的運行時錯誤,對語法和非同步錯誤卻無能為力,捕獲不到。
1.同步運行時錯誤:


try{
letname='jartto'
console.log(nam);
}catch(e){
console.log('捕獲到異常:',e);
}


輸出:


捕獲到異常:ReferenceError:namisnotdefined
at:3:15


2.不能捕獲到語法錯誤,我們修改一下代碼,刪掉一個單引號:


try{
letname='jartto;
console.log(nam);
}catch(e){

console.log('捕獲到異常:',e);
}


輸出:


UncaughtSyntaxError:Invalidorunexpectedtoken


不過語法錯誤在我們開發階段就可以看到,應該不會順利上到線上環境。


3.非同步錯誤


try{
setTimeout(()=>{
undefined.map(v=>v);
},1000)
}catch(e){
console.log('捕獲到異常:',e);
}


我們看看日誌:


UncaughtTypeError:Cannotreadproperty'map'of
undefined
atsetTimeout(:3:11)


並沒有捕獲到異常,這是需要我們特別注意的地方。四、window.onerror不是萬能的當JS運行時錯誤發生時,window會觸發一個ErrorEvent介面的error事件,並執行window.onerror()。/**
*@param{String}message錯誤信息
*@param{String}source出錯文件
*@param{Number}lineno行號
*@param{Number}colno列號
*@param{Object}errorError對象(對象)
*/

window.onerror=function(message,source,lineno,colno,error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}

1.首先試試同步運行時錯誤


window.onerror=function(message,source,lineno,colno,
error){
//message:錯誤信息(字元串)。
//source:發生錯誤的腳本URL(字元串)
//lineno:發生錯誤的行號(數字)
//colno:發生錯誤的列號(數字)
//error:Error對象(對象)
console.log('捕獲到異常:',{message,source,lineno,colno,
error});
}
Jartto;


可以看到,我們捕獲到了異常:

2.再試試語法錯誤呢?


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
letname='Jartto


控制台列印出了這樣的異常:


UncaughtSyntaxError:Invalidorunexpectedtoken


什麼,竟然沒有捕獲到語法錯誤?


3.懷著忐忑的心,我們最後來試試非同步運行時錯誤:


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
setTimeout(()=>{
Jartto;
});


控制台輸出了:


捕獲到異常:{message:"Uncaught
ReferenceError:Jarttoisnotdefined",source:
"http://127.0.0.1:8001/",lineno:36,colno:5,error:
ReferenceError:Jarttoisnotdefined
atsetTimeout(http://127.0.0.1:8001/:36:5)}


4.接著,我們試試網路請求異常的情況:






我們發現,不論是靜態資源異常,或者介面異常,錯誤都無法捕獲到。


補充一點:window.onerror函數只有在返回true的時候,異常才不會向上拋出,否則即使是知道異常的發生控制台還是會顯示UncaughtError:xxxxx


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
returntrue;
}
setTimeout(()=>{
Jartto;
});


控制台就不會再有這樣的錯誤了:


UncaughtReferenceError:Jarttoisnotdefined
atsetTimeout((index):36)


需要注意:onerror最好寫在所有JS腳本的前面,否則有可能捕獲不到錯誤;onerror無法捕獲語法錯誤;


到這里基本就清晰了:在實際的使用過程中,onerror主要是來捕獲預料之外的錯誤,而try-catch則是用來在可預見情況下監控特定的錯誤,兩者結合使用更加高效。


問題又來了,捕獲不到靜態資源載入異常怎麼辦?五、window.addEventListener當一項資源(如圖片或腳本)載入失敗,載入資源的元素會觸發一個Event介面的error事件,並執行該元素上的onerror()處理函數。這些error事件不會向上冒泡到window,不過(至少在Firefox中)能被單一的window.addEventListener捕獲。



window.addEventListener('error',(error)=>{
console.log('捕獲到異常:',error);
},true)




控制台輸出:


SHAPE*MERGEFORMAT


由於網路請求異常不會事件冒泡,因此必須在捕獲階段將其捕捉到才行,但是這種方式雖然可以捕捉到網路請求的異常,但是無法判斷HTTP的狀態是404還是其他比如500等等,所以還需要配合服務端日誌才進行排查分析才可以。


需要注意:


·___煌榔饗路禱氐_rror對象可能不同,需要注意兼容處理。


·___枰⒁獗苊_ddEventListener重復監聽。六、PromiseCatch在promise中使用catch可以非常方便的捕獲到非同步error,這個很簡單。


沒有寫catch的Promise中拋出的錯誤無法被onerror或try-catch捕獲到,所以我們務必要在Promise中不要忘記寫catch處理拋出的異常。


解決方案:為了防止有漏掉的Promise異常,建議在全局增加一個對unhandledrejection的監聽,用來全局監聽UncaughtPromiseError。使用方式:


window.addEventListener("unhandledrejection",
function(e){
console.log(e);
});


我們繼續來嘗試一下:


window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕獲到異常:',e);
returntrue;
});
Promise.reject('promiseerror');


可以看到如下輸出:

那如果對Promise不進行catch呢?


window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕獲到異常:',e);
returntrue;
});
ewPromise((resolve,reject)=>{
reject('jartto:promiseerror');
});


嗯,事實證明,也是會被正常捕獲到的。


所以,正如我們上面所說,為了防止有漏掉的Promise異常,建議在全局增加一個對unhandledrejection的監聽,用來全局監聽UncaughtPromiseError。


補充一點:如果去掉控制台的異常顯示,需要加上:


event.preventDefault();七、VUEerrorHandlerVue.config.errorHandler=(err,vm,info)=>{
console.error('通過vue
errorHandler捕獲的錯誤');
console.error(err);
console.error(vm);
console.error(info);
}八、React異常捕獲React16提供了一個內置函數componentDidCatch,使用它可以非常簡單的獲取到react下的錯誤信息


componentDidCatch(error,info){
console.log(error,info);
}


除此之外,我們可以了解一下:errorboundaryUI的某部分引起的JS錯誤不應該破壞整個程序,為了幫React的使用者解決這個問題,React16介紹了一種關於錯誤邊界(errorboundary)的新觀念。


需要注意的是:errorboundaries並不會捕捉下面這些錯誤。


1.事件處理器2.非同步代碼3.服務端的渲染代碼4.在errorboundaries區域內的錯誤


我們來舉一個小例子,在下面這個componentDIdCatch(error,info)里的類會變成一個errorboundary:


.Component{
constructor(props){
super(props);
this.state={hasError:false};
}
componentDidCatch(error,info){
//DisplayfallbackUI
this.setState({hasError:true});
//
logErrorToMyService(error,info);
}
render(){
if(this.state.hasError){
//
return

Somethingwentwrong.

;
}
returnthis.props.children;
}
}


然後我們像使用普通組件那樣使用它:







componentDidCatch()方法像JS的catch{}模塊一樣工作,但是對於組件,只有class類型的組件(classcomponent)可以成為一個errorboundaries。


實際上,大多數情況下我們可以在整個程序中定義一個errorboundary組件,之後就可以一直使用它了!九、iframe異常對於iframe的異常捕獲,我們還得借力window.onerror:


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}


一個簡單的例子可能如下:


frameborder="0">
十、Scripterror一般情況,如果出現Scripterror這樣的錯誤,基本上可以確定是出現了跨域問題。這時候,是不會有其他太多輔助信息的,但是解決思路無非如下:


跨源資源共享機制(CORS):我們為script標簽添加crossOrigin屬性。


crossorigin>


或者動態去添加js腳本:


constscript=document.createElement('script');
script.crossOrigin='anonymous'
script.src=url;
document.body.appendChild(script);


特別注意,伺服器端需要設置:Access-Control-Allow-Origin


此外,我們也可以試試這個-解決ScriptError的另類思路:


constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}


簡單解釋一下:


·___男戳_ventTarget的addEventListener方法;


·___源氳_istener進行包裝,返回包裝過的listener,對其執行進行try-catch;


·___榔韃換岫_ry-catch起來的異常進行跨域攔截,所以catch到的時候,是有堆棧信息的;


·___匭_hrow出來異常的時候,執行的是同域代碼,所以window.onerror捕獲的時候不會丟失堆棧信息;


利用包裝addEventListener,我們還可以達到「擴展堆棧」的效果:


(()=>{
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
+//捕獲添加事件時的堆棧
+constaddStack=newError(`Event(${type})`).stack;
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
+//異常發生時,擴展堆棧
+err.stack+=' '+addStack;
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
})();十一、崩潰和卡頓卡頓也就是網頁暫時響應比較慢,JS可能無法及時執行。但崩潰就不一樣了,網頁都崩潰了,JS都不運行了,還有什麼辦法可以監控網頁的崩潰,並將網頁崩潰上報呢?


崩潰和卡頓也是不可忽視的,也許會導致你的用戶流失。


1.利用window對象的load和beforeunload事件實現了網頁崩潰的監控。不錯的文章,推薦閱讀:Logging
InformationonBrowserCrashes。window.addEventListener('load',function(){
sessionSt

㈩ 成為Web前端工程的必備基礎技能

今天小編要跟大家分享的文章是關於成為web前端工程的必備基礎技能。正在學習web前端知識和准備學習的小夥伴們;來和小編一起看一看吧,希望本篇文章能夠對小夥伴們有所幫助。

一、HTML5


HTML是超級文本標記語言,是為「網頁創建和其他可在網頁瀏覽器中看到的信息」設計的語言。HTML5是由萬維網發布的最新的語言規范,是開放的Web網路平台的奠基石,所以做Web前端,精通HTML5是必須要掌握的一項技能。


二、CSS3


CSS用於控制網頁布局和樣式。CSS即層疊樣式表(CascadingStyleSheet)。
在網頁製作時採用層疊樣式表技術,可以有效地對頁面的布局、字體、顏色、背景和其它效果實現更加精確的控制。
只要對相應的代碼做一些簡單的修改,就可以改變同一頁面的不同部分,或者頁數不同的網頁的外觀和格式。CSS3是CSS技術的升級版本,CSS3語言開發是朝著模塊化發展的。以前的規范作為一個模塊實在是太龐大而且比較復雜,所以,把它分解為一些小的模塊,更多新的模塊也被加入進來。這些模塊包括:
盒子模型、列表模塊、超鏈接方式、語言模塊、背景和邊框、文字特效、多欄布局等。CSS3對於Web前端整個頁面的設計是必備的技能。


三、JavaScript


JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML(標准通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能,為用戶提供更流暢美觀的瀏覽效果。掌握了JavaScript,你就可以給你的網頁增加各種不同的動態效果,比如百葉窗特效,廣告切換特效,浮動廣告特效,上下無縫滾動特效等等。


四、JQuery


JQuery,顧名思義也就是JavaScript和查詢(Query),即是輔助JavaScript開發的庫。它是輕量級的JS庫
,它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera
9.0+),JQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。JQuery使用戶能更方便地處理HTML、EVENTS、實現動畫效果,並且方便地為網站提供AJAX交互。熟練掌握JQuery會讓你更好的使用JavaScript。


五、AJAX


AJAX即「AsynchronousJavaScriptAnd
XML」(非同步JavaScript和XML),是指一種創建互動式網頁應用的網頁開發技術,可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。AJAX開發人員必須理解傳統的MVC架構,這限制了應用層次之間的邊界。同時,開發人員還需要考慮C/S環境的外部和使用AJAX技術來重定型MVC邊界。最重要的是,AJAX開發人員必須禁止以頁面集合的方式來考慮Web應用而需要將其認為是單個頁面。一旦UI設計與服務架構之間的范圍被嚴格區分開來後,開發人員就需要更新和變化的技術集合了。實現網站交互必須熟練掌握AJAX。


六、BootStrap


Bootstrap,來自Twitter,是目前很受歡迎的前端框架。Bootstrap是基於HTML、CSS、JavaScript
的,它簡潔靈活,使得Web開發更加快捷。它由Twitter的設計師MarkOtto和Jacob
Thornton合作開發,是一個CSS/HTML框架。Bootstrap提供了優雅的HTML和CSS規范,它即是由動態CSS語言Less寫成。Bootstrap一經推出後頗受歡迎,一直是GitHub上的熱門開源項目,包括NASA的MSNBC(微軟全國廣播公司)的Breaking
News都使用了該項目。國內一些移動開發者較為熟悉的框架,如WeX5前端開源框架等,也是基於Bootstrap源碼進行性能優化而來。Bootstrap中包含了豐富的Web組件,根據這些組件,可以快速的搭建一個漂亮、功能完備的網站。其中包括以下組件:下拉菜單、按鈕組、按鈕下拉菜單、導航、導航條、路徑導航、分頁、排版、縮略圖、警告對話框、進度條、媒體對象等。時刻學習最近的前端框架也是Web前端工程師的必備技能哦!


以上就是小編今天為大家分享的關於成為web前端工程的必備基礎技能的文章,希望本篇文章能夠對想要學習web前端知識的小夥伴們有所幫助。想要學習web前端知識的小夥伴們如果不知道怎麼學習可以來北大青鳥學習web,北大青鳥提供專業的web前端技術培訓,北大青鳥Web前端課程,緊跟時代步伐,來源於企業需求,幫助同學更好更全面的掌握web前端技術。疫情期間提供線上培訓課程,讓你足不出戶掌握最新的web技術。