繁体   English   中英

如何将外部 javascript 库导入 Bokeh 生成的 html

[英]How to import external javascript library into Bokeh generated html

我想在我的 Bokeh javascript 回调中使用一个 javascript 库(特别是这个库)。 如何指定此 javascript 库的导入,以便可以从 Bokeh 的 js 回调函数访问该库?

示例在:

https://docs.bokeh.org/en/latest/docs/user_guide/extensions.html

主要讲创建自定义Bokeh Model。 我对创建新模型并不是特别感兴趣,只是想在回调中使用库函数来修改绘制的数据。

有两种方式:

  • 服务器应用
  • 独立的 HTML 应用程序

方法如下:

服务器应用程序:

您可以创建 Bokeh 服务器目录结构。

  1. 创建一个名为 myapp 的目录
  2. 将您的 Python 脚本命名为 main.py 并将其放在那里
  3. 在那里创建一个名为模板的子目录
  4. 创建 index.html、main.js 和可选的 style.css 文件并将它们放在 templates 子目录中
  5. 打开终端,导航到比myapp目录高一级的目录并使用以下命令启动您的应用程序: bokeh serve --show myapp

以下示例适用于 Bokeh v1.0.4。

目录结构:

myapp
   |
   +---main.py
   +---templates
        +---index.html
        +---main.js
        +---styles.css

主文件

from bokeh.plotting import curdoc
from bokeh.models import Button, CustomJS

button = Button(label = 'Click Me')
button.callback = CustomJS(code = """ alert($) """)

curdoc().add_root(button)

索引.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <meta charset="utf-8">
    {{ bokeh_css }}
    {{ bokeh_js }}
    <style>
    {% include 'styles.css' %}
    </style>    
  </head>
  <body>
    <script>
    {% include 'main.js' %}
    </script>
    {{ plot_div|indent(8) }}
    {{ plot_script|indent(8) }}
  </body>
</html>  

请注意,通过这种方式您可以包含本地,也可以包含远程JS 库或样式表。

主文件

$(document).ready(function() {
    alert('jQuery succesfully loaded !') 
});

样式文件

body { background: #111122; }

> 独立的 HTML 应用程序:
 import os from bokeh.io import save from bokeh.models import Slider from bokeh.util.browser import view template = """ {% block postamble %} <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script> $(document).ready(function() { var slider = Bokeh.documents[0].get_model_by_name('my_slider') alert('slider value: ' + slider.value) }); </script> {% endblock %} """ slider = Slider(start=0, end=10, value=5, name='my_slider') save(slider, template=template) view(os.path.join(os.path.dirname(__file__), os.path.basename(__file__)).replace('.py', ".html")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM