前端web頁面的渲染流程
創(chuàng)新互聯(lián)專注于蘿北網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供蘿北營銷型網(wǎng)站建設,蘿北網(wǎng)站制作、蘿北網(wǎng)頁設計、蘿北網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務,打造蘿北網(wǎng)絡公司原創(chuàng)品牌,更為您提供蘿北網(wǎng)站排名全網(wǎng)營銷落地服務。
1、構建DOM與 CSSOM
瀏覽器通過http請求,獲得靜態(tài)資源后,進行頁面渲染時,構建dom與cssom是同時進行的。
html 構建dom
構建dom時,按照html頁面中標簽的順序,由上向下渲染。
css 構建cssom
html構建cssom的同時,將css樣式構建為cssom
2、渲染樹 Render Tree
該過程中DOM與CSSOM合并,生成渲染樹,樹中包含了渲染頁面所需要的節(jié)點。
3、布局Layout
計算出每個節(jié)點對象的精確位置和大小
4、繪制Paint
使用上面準備好的節(jié)點信息,繪制出頁面
javascript
我們看到,在構建DOM和CSSOM階段,會有javascript進入
1、當瀏覽器遇到一個 script 標記時,DOM 構建將暫停,直至腳本完成執(zhí)行。
2、JavaScript 可以查詢和修改 DOM 與 CSSOM。
3、JavaScript 執(zhí)行將暫停,直至 CSSOM 就緒。
————————————————
原文鏈接:
在JsRender中,是通過調(diào)用方法render()來渲染模板的。
JsRender中,有三種方式調(diào)用render()方法來渲染模板。
1) 如果已經(jīng)存在一個template的對象,則可以使用template.render(...)
[html] view plain copy print?
tabletbody id="person"/tbody/table
script id="personTmpl" type="text/x-jsrender"
tr
td
{{:name}}
/td
/tr
/script
[javascript] view plain copy print?
var myTmpl = $.templates("#personTmpl");
var person = {
name: "Adriana"
};
var html = myTmpl.render(person);
$("#person").html(html);
2) 如果已經(jīng)有一個通過名字注冊的template,名字為("myTmpl"),則可以使用$.render.myTmpl(...)調(diào)用。
[html] view plain copy print?
tabletbody id="person"/tbody/table
script id="personTemplate" type="text/x-jsrender"
tr
td
{{:name}}
/td
/tr
/script
[javascript] view plain copy print?
$.templates("personTmpl", "#personTemplate");
var person = {
name: "Adriana"
};
var html = $.render.personTmpl(person);
$("#person").html(html);
3)如果該template是在一個script腳本塊中定義的,并且該腳本塊使用selector“#myTmpl",則同樣可以使用$("#myTmpl").render(...)調(diào)用。
[html] view plain copy print?
tabletbody id="person"/tbody/table
script id="personTemplate" type="text/x-jsrender"
tr
td
{{:name}}
/td
/tr
/script
[javascript] view plain copy print?
var person = {
name: "Adriana"
};
var html = $("#personTemplate").render(person);
$("#person").html(html);
render是渲染的意思。
res.render(file,option)是express中專門渲染視圖用的,首先你要在你的app.js或者index.js中設置一下渲染引擎,比如html,jade,handlebars(我自己使用的),mustache等。然后將視圖模板的文件位置放入file,將傳入的模板數(shù)據(jù)放入option對象中,模板引擎就能自己渲染出視圖。給你推薦一個npm模塊,express-handlebars,能很快搭建一個項目,你實踐過,就能明白res.render.
而渲染,就是這樣一個過程,瀏覽器根據(jù)頁面的html代碼、css定義、javascript腳本的操作,在瀏覽器上按照一定的規(guī)范(傳說中的 DOCTYPE )顯示出相應的內(nèi)容。
舉個最簡單的例子:
b這個是粗體顯示/b
瀏覽器根據(jù)上面的代碼在瀏覽器上面顯示出粗體的文字,這個過程就叫渲染
JavaScript是一種基于對象和事件驅(qū)動并具有安全性能的腳本語言。
Javascript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型,表達式和算術運算符及程序的基本程序框架。Javascript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方,表達式則可以完成較復雜的信息處理。
JavaScript與Java的不同點
Java代碼必須編譯才能執(zhí)行,而JavaScript不需編譯,只需瀏覽器解釋執(zhí)行。
Java和JavaScript雖然都可以在服務器與客戶端執(zhí)行,但Java多運行于服務器,而JavaScript多運行于客戶端。
JavaScript使用的是松散型的數(shù)據(jù)類型,而Java則使用的是嚴謹?shù)臄?shù)據(jù)類型。
是。有javascript的網(wǎng)頁仍是靜態(tài)網(wǎng)頁,不是動態(tài)網(wǎng)頁。不是網(wǎng)頁上有動態(tài)的元素才是動態(tài)網(wǎng)頁。假如一個網(wǎng)頁有javascript花花綠綠的,它仍是靜態(tài)網(wǎng)頁,所謂的靜態(tài)、動態(tài)是指能否與數(shù)據(jù)庫產(chǎn)生交互。只有PHP、asp、JSP這些網(wǎng)頁,才是動態(tài)網(wǎng)頁。靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁的區(qū)別,動態(tài)網(wǎng)頁以.asp、.jsp、.php、.perl、.cgi等形式為后綴,并且在動態(tài)網(wǎng)頁網(wǎng)址中有一個標志性的符號——“?”,靜態(tài)網(wǎng)頁:以.htm、.html、.shtml、.xml等形式為后綴。
在服務器端運行的程序、網(wǎng)頁、組件,屬于動態(tài)網(wǎng)頁,它們會隨不同客戶、不同時間,返回不同的網(wǎng)頁,例如HTML, ASP、PHP、JSP、ASP.net、CGI等。靜態(tài)網(wǎng)頁運行于客戶端的程序、網(wǎng)頁、插件、組件,屬于靜態(tài)網(wǎng)頁,下面列出的四種情況都不一定是動態(tài)頁面,帶有音頻和視頻,帶有flash動畫,帶有css動畫,帶有javascript動畫。千鋒教育截止目前已在北京、深圳、上海、廣州、鄭州、成都、大連等20余個核心城市建立直營校區(qū),服務近20萬學員、近千所高校和數(shù)萬家企業(yè)。