: → 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方式获取到的资料渲染到页面上,但各自的实作略
有差别
至于前后端分离与前后端不分离之间的差异和优缺点我就不多加赘
述了。只希望有些人可以做点功课再来说话,不要人家就已经是烦
恼想要求解了,还在那边被你乱。