鍍金池/ 問(wèn)答/HTML/ node-app一定要使用ejs模板嗎?

node-app一定要使用ejs模板嗎?

如題,這段時(shí)間接觸用express寫后端,用的模板是ejs寫的。其實(shí)用html也可以,為什么要使用ejs呢?ejs的優(yōu)勢(shì)在哪里?難道是因?yàn)樗臄?shù)據(jù)渲染比html+js更便捷?

回答
編輯回答
安淺陌
其實(shí)用html也可以,為什么要使用ejs呢?

那你就用啊,看你怎么綁定動(dòng)態(tài)數(shù)據(jù)。

ejs的優(yōu)勢(shì)在哪里?

與 html 對(duì)比多了一個(gè)插入 nodejs route 傳遞過(guò)來(lái)的動(dòng)態(tài)數(shù)據(jù)的功能,這不叫“優(yōu)勢(shì)”,這兩貨唯度完全不一樣

難道是因?yàn)樗臄?shù)據(jù)渲染比html+js更便捷?

只能說(shuō)你把完全不同的東西放一起來(lái)比了,html+js 是 single page application,純客戶端的。 ejs 是服務(wù)器端編譯模板引擎。

建議樓主多做做,多練練,別啥都不清楚就出來(lái)問(wèn)。

2018年2月26日 01:50
編輯回答
命多硬

方案一:后端返給你HTML+js,然后js向后端要數(shù)據(jù)并操作DOM填充HTML

方案二:數(shù)據(jù)在后端,那么不如直接讓后端把數(shù)據(jù)先填到HTML中,然后在伴隨一些交互型的js返回給你豈不美哉,相當(dāng)于少了一次于服務(wù)器的交互

然而現(xiàn)在的前后端分離則是另一種考慮。因?yàn)楹蠖颂畛銱TML實(shí)際上還是需要數(shù)據(jù)處理邏輯的,那么就是方案一的某些處理邏輯放在后端?,F(xiàn)在傾向于服務(wù)型的后端只提供數(shù)據(jù)操作接口,將很大一部分?jǐn)?shù)據(jù)處理邏輯放在前端,具體能減輕多少壓力也就交給background的同學(xué)去評(píng)估。

而ejs和jsp相類似,jsp實(shí)際上是一個(gè)java程序(會(huì)被編譯的),看上去都是html內(nèi)容,但是實(shí)際上是HTML內(nèi)容嵌到一段java程序里。ejs也是一樣的,把HTML代碼嵌到j(luò)s腳本里,Vue和React的render也是相似的方案。這樣做我覺(jué)得主要是減輕渲染和操作DOM的壓力,并且數(shù)據(jù)處理的形式肯定也是模板比操作DOM方便。

比如你需要把一個(gè)數(shù)組變成一個(gè)ul-li,js可能需要jQuery支持,循環(huán)造很多l(xiāng)i元素append到ul中。模板就相當(dāng)于在一個(gè)for循環(huán)中拼接各種"<li></li>"這樣的字符串,然后在“寫到”HTML文檔中交給瀏覽器渲染。

這是我對(duì)模板原因的理解,淺顯不深入,肯定有什么不對(duì)的地方煩請(qǐng)指出,如有誤導(dǎo)立馬刪除

2017年3月3日 08:06
編輯回答
嘟尛嘴

答案是否。ejs等模板引擎是為動(dòng)態(tài)頁(yè)面準(zhǔn)備的,也就是說(shuō),你的HTML頁(yè)面存在“變量”的情況下,才需要用到模板引擎。

  1. 純靜態(tài)頁(yè)面:不需要模板引擎
  2. 動(dòng)態(tài)頁(yè)面:可按需選擇不同的模板引擎,如ejs、jade、nunjucks
2018年4月8日 18:22