RenderScripts

RenderScripts 介绍 – 使用 python 创建网页

RenderScripts 是常规 Python 脚本,不同之处在于

这些脚本在您的站点渲染时运行。它们打印到 stdout 的任何内容都会成为您站点中的一个新文件。文件的名称与 .py 脚本的名称相同,但不带 .py 扩展名。例如,您当前正在阅读的页面就是由一个名为 renderscript.qmd.py 的脚本创建的,您可以在此处找到该脚本。

Hot/live reloading(热重载/实时重载)甚至对这些 .py 脚本也有效 – 因此一旦您保存脚本,您就会在网络浏览器中看到新的输出。

这种方法对于生成数据驱动的文档特别有用。例如,考虑这个表格,它包含 nbdev 主页上提供推荐的人员列表

姓名 职位
Chris Lattner Swift 和 LLVM 的发明者
Fernando Pérez Jupyter 的创建者
David Berg 软件工程师,Netflix
Erik Gaasedelen 软件工程师,Lyft
Roxanna Pourzand 产品经理,Transform
Hugo Bowne-Anderson 开发者关系主管,Outerbounds

在创建这样的表格时,要确保每行的 markdown 都正确且一致可能会很棘手。通过编程方式生成它会更容易且更易于维护。上面的表格是由以下 python 列表生成的

testimonials = [
    ('chris-lattner.png', 'Chris Lattner', 'Inventor of Swift and LLVM'),
    ('fernando-pérez.jpeg', 'Fernando Pérez', 'Creator of Jupyter'),
    ('david-berg.jpeg', 'David Berg', 'Software Engineer, Netflix'),
    ('erik-gaasedelen.jpeg', 'Erik Gaasedelen', 'Software Engineer, Lyft'),
    ('roxanna-pourzand.jpeg', 'Roxanna Pourzand', 'Product Manager, Transform'),
    ('hugo-bowne-anderson.jpeg', 'Hugo Bowne-Anderson', 'Head of Developer Relations, Outerbounds')
]

要从这个 python 列表生成表格,使用了以下四行代码

print(qmd.tbl_row(['','Name','Position']))
print(qmd.tbl_sep([1,3,4]))
for fname,name,position in testimonials:
    print(qmd.tbl_row([im(fname, 60), name, position]))

tbl_hdrtbl_row 是从模块 nbdev.qmd 导入的两个函数。nbdev.qmd 是一个小型模块,包含一些用于创建 .qmd 文档的便捷函数,例如上面使用的表格创建函数。您可以在 index.qmd.py 中看到更多使用示例,它是创建 nbdev 主页 的 RenderScript。nbdev 主页是比当前页面源代码更惯用的 RenderScripts 使用示例 – 我们只在当前页面使用 RenderScript 是为了提供一个更简单的示例。实际上,我们发现 RenderScripts 最适合用于包含大量数据驱动内容、可重用组件等的页面。

您可以使用 RenderScripts 创建任何类型的文件。例如,下面的 SVG 是使用此脚本动态创建的

运行 nbdev_previewnbdev_docs 后,您会在 _proc 目录中找到渲染后的文档,以及所有已处理的 notebook。这有助于调试。您也可以直接从 shell 调用脚本(例如 python renderscript.qmd.py)来查看打印的输出。