: → superpandal: 怎麼會有人想不開想要跑過來 這些東西其實你自己碰都 01/12 00:08
: → superpandal: 可以做出差不多的工具出來... 模板語言的話用什麼都 01/12 00:09
: → superpandal: 可以 很多目前看到的不外乎就是偵測檔案變化並生成程 01/12 00:10
: → superpandal: 式碼 還是偏底層比較好 路廣 01/12 00:11
: → superpandal: 可以說都在學怎麼應用這些工具 而不是真正的知識... 01/12 00:17
: → Hsins: 偵測檔案變化生成程式碼聽起來好屌ㄛ,你的模板可能跟大家 01/12 00:23
: → Hsins: 的模板不太一樣欸。 01/12 00:23
: → superpandal: 不然呢js很多框架就是這樣 haha 不然你以為光xml格式 01/12 00:27
: → superpandal: 的語法就可以跑... 01/12 00:27
不是啊,你可不可以不要每次都想要說個好像高深莫測的東西,但
是其實自己不是很理解呀?我覺得傳遞錯誤的知識比藏拙還要更可
惡耶。比如上次在那嘴人家 Wine 不做自動化測試,可是人家明明
付出了超級多的心力在那塊:
https://www.ptt.cc/bbs/Soft_Job/M.1636600658.A.81D.html
回到這次的主題來。
模板引擎(Templating Engines)這種東西雖然沒有什麼學術上明
確的定義,但絕對不是你所謂的「偵測檔案變化並生成程式碼」好
嗎?這邊我借用一下 Vue.js 的作者尤雨溪曾經在一篇回答中所使
用過的敘述:
「嚴格的模板引擎的定義:
輸入模板字串 + 資料,得到渲染過的字串。」
[REF]: https://www.zhihu.com/question/32524504/answer/55812327
或者在絕大多數的狀況下,甚至可以說是將資料(data)和模板(
template)合併然後生成 HTML 文件,再返回給發出 HTTP 請求的
客戶端。這些資料在後端會透過與資料庫進行交互取得,又不是三
十年前,你的資料不是來自於純文字檔案,請問哪裡偵測了檔案變
化?
在早期前後端分離架構還不流行時,這是十分常見的作法,常見的
模板引擎,比如:
- Spring 搭配 JSP, Freemaker, Thymeleaf 等
- Flask 搭配 Jinja2
- Laravel 搭配 Blade
- Django 自己就帶有模板引擎
- Express.js 搭配 Jade, EJS 等
- Rails 搭配 Erb, Haml 等
他們在使用上都很類似,比如以 JSP來說,使用上可能是這樣的
,其中 user 的資料會在 Controller 裡面從資料庫中獲取再帶
入:
<table border="1">
<c:forEach items="${users}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.age}</td>
<td>${user.address}</td>
</tr>
</c:forEach>
</table>
如果使用過前端框架比如 React, Vue, Angular, Svelte之類的,
可能會發現在語法跟概念上有類似的地方,但在本質上是有所不同
的:
1. 模板引擎在後端將資料和模板組成 HTML 並返回給客戶端
2. 前端框架通常是透過轉換成 live DOM 或操作 virtual DOM 來
將透過 AJAX方式獲取到的資料渲染到頁面上,但各自的實作略
有差別
至於前後端分離與前後端不分離之間的差異和優缺點我就不多加贅
述了。只希望有些人可以做點功課再來說話,不要人家就已經是煩
惱想要求解了,還在那邊被你亂。