用途:该技能面向 AdonisJS Hypermedia 应用的服务端渲染视图层,处理 .edge 模板。控制器、路由、中间件、认证、校验、服务与框架架构应配合 adonisjs 技能使用;Inertia 页面组件不适用,应改用 inertia-vue 或 inertia-react。
主要能力:从控制器或路由处理器渲染 .edge 模板;处理 resources/views/** 下的模板;掌握花括号、@ 标签、注释与换行吞并等语法;插值({{ }}、{{{ }}}、html.safe()、@{{ }} 转义);条件(@if、@elseif、@else、@unless、短三元);循环(@each、索引、键值、空状态回退);布局、组件、插槽、局部片段与可复用模板;带 props、$props、slots、provide/inject 的组件;@include、@includeIf、@stack、@pushTo;向 view.render() 传模板状态;使用 AdonisJS 官方包提供的 Edge 助手与标签;使用 Hypermedia 起始套件的表单与 UI 组件;调试模板变量、助手与渲染问题。
使用方式:控制器中用 view.render(template, state) 渲染,模板路径相对 resources/views 且省略 .edge 扩展名;静态页面可由路由直接渲染,如 router.on('/').render('pages/home')。view.render() 第二个参数的每个属性成为模板变量,建议使用显式命名状态。默认使用转义输出 {{ }},仅对已净化或可信 HTML 使用 {{{ }}}。组件放在 resources/views/components,文件名即标签名;无需插槽时用自闭合 @!component()。起始套件 @form() 注入 CSRF 并支持 PUT/PATCH/DELETE 方法伪装;字段由 @field.root()、@field.label()、控件与 @field.error() 组合;@link() 可用命名路由生成 URL。
适用场景:AdonisJS Hypermedia 起始套件或使用 Edge.js 服务端模板的项目,涉及页面渲染、布局组件、表单、局部片段与模板调试时。
限制:不适用于 Inertia 页面组件;AdonisJS 助手/标签仅在其贡献包与渲染上下文可用时使用;调试用 @dump() 应在完成前移除。具体参考文件与更多细节以资料所列 references 为准。