#dust #web #templating #dustjs

bin+lib 除尘器

除尘器是dustjs模板引擎的Rust实现

2个版本

0.1.1 2021年2月6日
0.1.0 2020年12月30日

#375 in 模板引擎


用于 natter

0BSD 许可证

310KB
7.5K SLoC

Rust 4.5K SLoC // 0.0% comments Dust.js 2.5K SLoC // 0.0% comments BASH 120 SLoC // 0.1% comments JavaScript 36 SLoC // 0.2% comments

除尘器

LinkedIn DustJS分叉版本的除尘器实现,使用Rust编写。

警告:处于早期阶段的项目

虽然我已经添加了许多测试,以证明与官方LinkedIn DustJS实现的字节对字节兼容性,但据我所知,此项目尚未在任何大型生产环境中使用。如果您在此实现与LinkedIn DustJS实现之间发现任何不兼容性,请告诉我(或者更好的是:在 js/test_cases 下提交一个测试用例!)。

除尘器与LinkedIn DustJS之间的差异

上下文助手

LinkedIn DustJS支持在渲染上下文中嵌入JavaScript函数。我永远不会向此项目添加JavaScript引擎,因此这些函数在除尘器中不会工作。我确实有两个计划提供类似的功能

  1. 将来,我计划正式支持在您的渲染上下文中嵌入Rust函数。我相信通过将您的函数包裹在结构体中并将您的逻辑放在渲染函数中,此功能已经可行,但我希望提供一种更标准化的方法来完成此操作。
  2. 将来,我计划尝试将此代码编译成WebAssembly,以便在客户端运行。我相信这将允许我使用浏览器的JavaScript引擎执行JavaScript,但我还没有深入研究这一点。

Unicode支持

我使用的解析器组合库(nom)不支持Unicode字符。将来,我将通过为nom框架编写新的解析器或编写自己的解析器组合框架来修复此问题。我更希望选择前者,因为使用广泛使用的解析器组合框架可以在其他项目之间提供更大的互操作性(例如,如果基于nom的HTML解析器想要在 text/x-dust-template 标签内添加对dust模板的支持,他们可以简单地将我的解析器嵌入到他们的解析器中)。

依赖项

虽然此仓库使用 0BSD许可证,该许可证不需要在任何分发中包含版权声明/文本,但它依赖于一些BSD风格许可的库,包括但不限于

  • Rust标准库,它具有双许可协议
  • nom,遵循MIT许可协议。
  • serde,具有双许可协议。
  • serde_json,具有双许可协议,但仅用于二进制文件,而不在库中使用

我不是律师,也不是你的律师。这并非法律建议,但我相信根据其许可协议的条款,这些项目和它们的依赖项需要提供归属。

依赖项

约2.5MB
约51K SLoC