pyecharts源码解读(10)渲染包render之templates目录:渲染模板

本文深入探讨了PyEcharts的渲染过程,包括render包的结构、模板引擎的使用以及渲染模板的实例。render包包含display、engine和snapshot等模块,用于图表的HTML和JavaScript显示。templates目录下存放了渲染模板,如simple_chart.html,通过jinja2宏定义处理图表依赖和内容。渲染模板如simple_chart.html将pyecharts对象转换为HTML和JavaScript代码,最终在浏览器中展示图表。

当前pyecharts版本为1.9.0

概述

render包结构

render包位于pyecharts包顶级目录中,用于渲染图表。render包结构如下:

├─render # 渲染设置包
│  │  display.py # 定义HTML、JavaScript显示类,用于支持在notebook中嵌入输出结果
│  │  engine.py # 定义渲染相关类、函数
│  │  snapshot.py # 定义渲染图片函数
│  │  __init__.py # 暴露渲染图片函数
│  │
│  ├─templates # 定义渲染模板
│  │      components.html
│  │      macro
│  │      nb_components.html
│  │      nb_jupyter_globe.html
│  │      nb_jupyter_lab.html
│  │      nb_jupyter_lab_tab.html
│  │      nb_jupyter_notebook.html
│  │      nb_jupyter_notebook_tab.html
│  │      nb_nteract.html
│  │      simple_chart.html
│  │      simple_globe.html
│  │      simple_page.html
│  │      simple_tab.html

templates目录

templates目录路径为pyecharts/render/templates,作用为存放渲染模板。

pyecharts使用jinja2库的模板引擎生成HTML。

templates目录中的文件主要有两类:

  • macro:模板宏定义。宏类似常规编程语言中的函数。它们用于把常用行为作为可重用的函数,取代手动重复的工作。宏还可以传递参数,因此可以实现pyecharts对象的渲染。
  • 模板文件:模板文件分为两大类,nb开头的html文件是针对notebook的模板,其余html文件是针对普通html文档的模板。

渲染模板实例:simple_chart.html

simple_chart.html是最基础的渲染模板,一般图表类实例的render()render_embed()方法渲染的HTML文件就使用的该模板。

通过对比pyecharts/charts/base.py模块源码、simple_chart.html源码、macro源码与渲染输出后的HTML内容可验证渲染的结果。

pyecharts/charts/base.py模块源码

from ..render import engine

class Base(ChartMixin):
    """
    `Base` is the root class for all graphical class, it provides
    part of the initialization parameters and common methods
    """

    def __init__(self, init_opts: Union[InitOpts, dict] = InitOpts()):
        _opts = init_opts
        if isinstance(init_opts, InitOpts):
            _opts = init_opts.opts

    def render(
        self,
        path: str = "render.html",
        template_name: str = "simple_chart.html",
        env: Optional[Environment] = None,
        **kwargs,
    ) -> str:
        self._prepare_render()
        return engine.render(self, path, template_name, env, **kwargs)
        
    def render_embed(
        self,
        template_name: str = "simple_chart.html",
        env: Optional[Environment] = None,
        **kwargs,
    ) -> str:
        self._prepare_render()
        return engine.render_embed(self, template_name, env, **kwargs)

simple_chart.html源码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值