认同这个结论,补几个只有真上线才会踩的点。
Blade 独立用最大的暗雷是 @ 跟 CSS 的 at-rule 撞车。 @media、@keyframes、@import 都会被当指令解析,得写 @@media 或者整段套 @verbatim。页面里内联 <style> 写过 @media 的,基本必踩一次。Twig / Smarty 都没这毛病。
开发期建议把 Twig 的 strict_variables 打开。 变量名打错会当场报错,而不是安静渲染成空——上线再关掉,免得上线后某个字段缺失直接白页。对应地 Smarty 是未定义变量处理配置,Blade 只能靠 $post->name ?? '' 兜。
部署时最容易漏的是 OPcache。 很多环境上线配 opcache.validate_timestamps=0,但这意味着模板文件改了 PHP 也不重编译,Twig 的 auto_reload 一样白搭,必须 reload php-fpm 才生效。要么部署流程里固定清一次编译缓存(Smarty clearCompiledTemplate()、Twig clearCache()),要么保证缓存目录跟代码是同一份。
再补一句 Sandbox:Twig 的沙箱是每次渲染都过一遍白名单检查,模板量大时开销可测,热点页别无脑全开,只在真正吃用户模板的那几个入口挂。
延伸到选型本身——把「团队已经会哪个」排在语法糖前面。学一个引擎的成本,远低于把历史项目迁错的成本。
见习用户






