Phlex框架2.1.1版本发布:实验性支持ERB模板
Phlex是一个专注于构建HTML视图组件的Ruby框架,它采用纯Ruby语法来定义视图模板,提供了结构化的HTML构建方式。在最新的2.1.1版本中,Phlex引入了一项实验性功能——支持ERB模板,这为开发者提供了更多灵活性。
ERB模板支持详解
基本内联示例
新版本允许开发者使用ERB语法来定义组件模板。例如,我们可以创建一个导航组件Nav,并使用ERB来定义其view_template方法:
class Nav < Phlex::HTML
erb :view_template, <<~ERB
<nav>
<% yield %>
</nav>
ERB
erb :item, <<~ERB, locals: %(href:)
<a href="<%= href %>">
<% yield %>
</a>
ERB
end
在这个例子中,erb类方法会自动将ERB模板编译为对应的Ruby方法。对于item片段,我们通过locals参数指定了方法签名,这里定义了一个关键字参数href。
参数定义方式
开发者可以灵活定义各种类型的参数:
- 必需的位置参数:
erb :method_name, <<~ERB, locals: %(foo)
- 可选的位置参数:
erb :method_name, <<~ERB, locals: %(foo = nil)
- 带默认值的位置参数:
erb :method_name, <<~ERB, locals: %(foo = "test")
- 必需的关键字参数:
erb :method_name, <<~ERB, locals: %(foo:)
- 可选的关键字参数:
erb :method_name, <<~ERB, locals: %(foo: nil)
- 带默认值的关键字参数:
erb :method_name, <<~ERB, locals: %(foo: "test")
外部模板文件
除了内联定义,Phlex还支持将ERB模板放在外部文件中。例如,对于Nav组件:
class Nav < Phlex::HTML
erb :view_template
erb :item, locals: %(href:)
end
Phlex会自动查找以下文件:
app/components/nav/view_template.html.erbapp/components/nav/item.html.erb
对于view_template,如果找不到第一个文件,还会尝试查找app/components/nav.html.erb。
性能与兼容性
所有ERB模板在应用启动时就会被编译为Ruby方法,因此运行时性能优异。这些ERB片段与Ruby片段完全兼容,支持片段、缓存等Phlex特性。不过需要注意的是,在使用外部ERB文件时,Rails开发模式下的缓存清除机制可能无法正常工作。
安全考虑
由于ERB不是结构化的,Phlex无法提供与纯Ruby模板相同的安全特性。例如,在ERB中直接输出用户数据到属性时,框架无法自动进行安全过滤:
<a href="<%= user_data %>">Click me</a>
正确的做法是始终使用<%= %>标签输出用户数据,尽管这种方式的安全性不如Phlex原生的结构化输出方式。
总结
Phlex 2.1.1版本的ERB支持为开发者提供了更多选择,特别是在需要快速迁移现有ERB项目或团队更熟悉ERB语法的情况下。这项实验性功能保留了Phlex的核心优势,同时增加了灵活性。开发者可以根据项目需求,在纯Ruby语法和ERB之间做出选择,或者混合使用两者。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00