更多Dash应用开发干货知识、案例,欢迎关注“玩转Dash”微信公众号

大家好我是费老师,在之前的几篇文章中,我们针对Python生态中强大灵活全栈应用开发框架Dash,分别介绍了其3.x新版本中众多的新功能及特性:

而今天的文章中,我将为大家介绍Dash3.0版本开始,全新引入的插件机制,使得我们可以在Dash应用中一行代码灵活启用各种丰富的辅助拓展功能~

Dash中全新引入的插件机制

3.0.0版本开始,Dash中新增了hooks机制,其本质是在当前Dash应用项目基础上,以低耦合的方式,为应用的不同部分(页面内容、回调逻辑、错误处理等)额外添加自定义功能。

对于广大Dash应用开发者,其实不需要了解这套机制背后的原理,直接通过pip安装使用各种现成的,基于hooks机制构建的成品插件即可,下面我们来介绍一些开箱即用的实用Dash插件,增强日常Dash应用开发、部署体验,你也可以在下面的仓库中找到完整的可用插件列表,以及如何自己开发Dash插件:

dash-change-cdn-plugin

首先我们要介绍的Dash插件dash-change-cdn-plugin,对于需要通过互联网部署Dash应用的朋友非常的有用,终端执行下列命令完成插件的安装,跟常规的Python包安装没有区别:

pip install dash-change-cdn-plugin -U

举一个非常简单的Dash应用示例:

import dash
from dash import html
import feffery_antd_components as fac
from feffery_dash_utils.style_utils import style # 导入dash-change-cdn-plugin插件
from dash_change_cdn_plugin import setup_change_cdn_plugin # 启用插件功能
setup_change_cdn_plugin() # 这里注意要设置serve_locally=False配合启用外部CDN资源
app = dash.Dash(__name__, serve_locally=False) app.layout = html.Div(
[
fac.AntdAlert(
message="测试信息内容",
description="测试描述内容",
showIcon=True,
type="success",
)
],
style=style(padding=50),
) if __name__ == "__main__":
app.run()

其中最关键的代码只有下面这行:

# 启用插件功能
setup_change_cdn_plugin()

在此基础上,原本在dash.Dash()中设置serve_locally=False后,非debug模式下默认自动切换的指向unpkg的各静态资源CDN地址,会受dash-change-cdn-plugin插件作用,自动切换到访问速度更快更稳定的npmmirror,特别是对于国内通过互联网部署Dash应用的朋友,这一点非常有用,可以大幅度加速你的应用访问速度:

除此之外,如果你不想使用npmmirrorCDN源,还可以通过参数快捷设置为jsdelivrfastly-jsdelivr等其他流行的公共CDN,具体见dash-change-cdn-plugin文档说明:

dash-console-filter-plugin

接下来我们要介绍的Dash插件dash-console-filter-plugin也非常实用,通过它,我们可以屏蔽指定单个或多个关键词对应的错误信息,令它们不在浏览器控制台中被打印出来,适合屏蔽一些对实际应用功能没有负面影响的冗余提示信息。终端执行下列命令完成安装:

pip install dash-console-filter-plugin -U

举一个常见的简单例子:

import dash
from dash import html
import feffery_antd_components as fac
from feffery_dash_utils.style_utils import style app = dash.Dash(__name__) app.layout = html.Div(
fac.AntdSelect(
placeholder="请选择", options=list("abcedf"), style=style(width=100)
),
style=style(padding=50),
) if __name__ == "__main__":
app.run(debug=True)

默认情况下,由于Dash底层的React相关参数规范检查机制,上面的示例应用,在浏览器控制台中会显示下图所示的警告信息:

而这类以Warning:开头的底层React相关提示信息,对我们的Dash应用本身并没有什么负面影响,因此可以为Dash应用启用dash-console-filter-plugin插件,来过滤一些碍眼的多余错误信息输出:

from dash_console_filter_plugin import setup_console_filter_plugin

# 通过keywords参数设置过滤关键字
setup_console_filter_plugin(keywords=["Warning: Each child"])

插件生效后,控制台里就变得清爽多了(建议仅用作屏蔽类似上面例子的无关错误信息):

更多资料具体见dash-console-filter-plugin文档说明:

dash-performance-monitor-plugin

接下来要介绍的Dash插件dash-performance-monitor-plugin,适合在Dash应用的开发调试阶段使用,终端执行下列命令完成安装:

pip install dash-performance-monitor-plugin -U

对于你的任何Dash应用,额外添加下列代码:

# 导入dash-performance-monitor-plugin插件
from dash_performance_monitor_plugin import setup_performance_monitor_plugin # 启用插件功能
setup_performance_monitor_plugin()

便可以在应用中额外渲染应用性能监控功能,可实时查看当前应用的FPS内存占用等性能指标变化情况,适合针对复杂功能应用的调优过程使用:

更多使用说明具体见dash-performance-monitor-plugin文档说明:

dash-react-scan-plugin

接下来要介绍的Dash插件dash-react-scan-plugin同样适用于应用开发阶段的性能调优场景,不同的是其监控的目标不是页面整体性能,而是对页面内全部组件的渲染绘制过程进行监控,适合细粒度的应用调优,以发现局部组件渲染性能问题,终端执行下列命令完成安装:

pip install dash-react-scan-plugin -U

对于你的任何Dash应用,额外添加下列代码:

# 导入dash-react-scan-plugin插件
from dash_react_scan_plugin import setup_react_scan_plugin # 启用插件功能
setup_react_scan_plugin()

便可以在应用中额外实现对各种组件渲染绘制性能的监控:

更多使用说明具体见dash-react-scan-plugin文档说明:

dash-disable-devtool-plugin

当你不希望自己发布的Dash应用被访问者通过浏览器开发者工具进行调试和逆向时,就可以使用dash-disable-devtool-plugin插件,终端执行下列命令完成安装:

pip install dash-disable-devtool-plugin -U

对于你的任何Dash应用,额外添加下列代码:

# 导入dash-disable-devtool-plugin插件
from dash_disable_devtool_plugin import setup_disable_devtool_plugin # 启用插件功能
setup_disable_devtool_plugin()

便可以为应用快捷开启防调试保护:

除此之外,dash-disable-devtool-plugin还支持为当前应用快捷开启禁用选择禁用复制等常见安全防护功能,更多使用说明具体见dash-disable-devtool-plugin文档说明:

dash-offline-detect-plugin

当你希望自己的Dash应用可以在后端服务临时出现问题时,可以为正在访问应用的用户提供更清晰直观的通知,就可以使用dash-offline-detect-plugin插件,终端执行下列命令完成安装:

pip install dash-offline-detect-plugin -U

对于你的任何Dash应用,额外添加下列代码:

# 导入dash-offline-detect-plugin插件
from dash_offline_detect_plugin import setup_offline_detect_plugin # 启用插件功能
setup_offline_detect_plugin()

便可以为正在访问中的应用提供服务宕机通知提示功能:

dash-offline-detect-plugin支持自定义通知提示内容,更多使用说明具体见dash-offline-detect-plugin文档说明:


以上就是本文的全部内容,更多有关Dash应用实用插件功能的内容,我将会在之后的文章中持续为大家分享介绍~


以上就是本文的全部内容,对Dash应用开发感兴趣的朋友,欢迎添加微信号CNFeffery,备注“dash学习”加入我们的技术交流群,一起成长一起进步。

Python全栈应用开发利器Dash 3.x新版本介绍(5)的更多相关文章

  1. 【Python全栈-后端开发】嵩天老师-Django

    嵩天老师-Python云端系统开发入门教程(Django) 视频地址:https://www.bilibili.com/video/av19801429 课前知识储备: 一.课程介绍: 分久必合.合久 ...

  2. 【Python全栈-后端开发】Django入门基础

    Django基础知识 一. 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的 ...

  3. 【Python全栈-后端开发】Django进阶2-Form表单

    Django进阶2-Form表单 Django的Form主要具有一下几大功能: 生成HTML标签(可以保留上次输入内容) 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页 ...

  4. 读后笔记 -- Python 全栈测试开发 Chapter10:接口的设计与开发

    10.1 Django 框架 1. 几个主流的框架: 1)适合初学者的接口框架:Django,Flask 2)针对底层定义:Twisted 3)实现高并发:Tornado 2. install // ...

  5. 【Python全栈-后端开发】Django进阶之Model操作复习

    Django进阶之Model操作复习 一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - ...

  6. 【Python全栈-后端开发】数据库进阶

    数据库进阶 python关于mysql的API---pymysql模块 pymsql是Python中操作MySQL的模块,其使用方法和py2的MySQLdb几乎相同. 模块安装 pip install ...

  7. 读后笔记 -- Python 全栈测试开发 Chapter11:Python + Requests 实现接口测试

    11.1 Requests 框架 11.1.1 requests 请求 1. reqeusts 库 安装 pip install requests 2. requests 库 GET 方法,参数通过 ...

  8. 读后笔记 -- Python 全栈测试开发 Chapter8:接口测试

    8.1 接口测试 1. 市场分布 UI(web.app)自动化:10% 接口自动化:20% 单元测试:70% -- 测开 2. 接口类型: 1)结构划分:模块间(系统间)的接口称为内部接口:系统与第三 ...

  9. 【Python全栈-后端开发】Django进阶1-分页

    Django[进阶篇-1 ]分页 分页 一.Django内置分页 from django.core.paginator import Paginator, EmptyPage, PageNotAnIn ...

  10. 【Python全栈-后端开发】Django入门基础-2

    Django入门基础知识-2 一 .模版 一.模版的组成 HTML代码+逻辑控制代码 二.逻辑控制代码的组成 1  变量(使用双大括号来引用变量) {{var_name}} 2  标签(tag)的使用 ...

随机推荐

  1. 探秘Transformer系列之(34)--- 量化基础

    探秘Transformer系列之(34)--- 量化基础 目录 探秘Transformer系列之(34)--- 量化基础 0x00 概述 0x01 背景知识 1.1 需求 1.2 压缩 1.3 如何表 ...

  2. 装在U盘或移动固态硬盘里的系统——适用于Ventoy和VirtualBox的Win to go 和 Linux to go 系统制作教程

    写在前面 前段时间, 突然想起了大学期间折腾过的双系统, 又恰逢最近学习工作需要用到Linux系统环境, 用虚拟机又感觉性能跟不上, 因此萌生了一个用移动固态硬盘安装双系统的想法. 照着网络上各位老师 ...

  3. netcore 使用mongodb

    docker 安装mongodb:docker pull mongo 运行容器 docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo ...

  4. Python实现http接口请求数据后,往RabbitMQ里面插入数据

    python实现http接口请求数据服务后,往RABBITmq里面插入数据 import time import requests import pika import datetime base_u ...

  5. Qt 图片轮播

    最近研究了一下图片轮播,主要是用到了QPropertyAnimation这个类,具体代码示例如下: main.cpp #include <QApplication> #include &q ...

  6. 手摸手教你从生成CRD到编写自定义控制器

    介绍 我们可以使用code-generator 以及controller-tools来进行代码自动生成,通过代码自动生成可以帮我们自动生成 CRD 资源对象,以及客户端访问的 ClientSet.In ...

  7. win10 hyper-v 配置教程

    非家庭版跳过以下这一步. pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt ...

  8. Springboot笔记<7>过滤器与拦截器

    过滤器 拦截器 过滤器 过滤器拦截的是URL Spring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当前请求地址是否配置有过滤器,有则调用该过滤器 ...

  9. 小车PID巡线调节

    PID巡线调节 1.双巡线P控制 KP可以先从0.2值调起,P比例主要控制小车能够在线上正常巡线, P比例说明:KP值越小,转弯幅度越大,会直接越过黑线.KP值越大,转弯幅度越小,能正常巡线,但是摆动 ...

  10. WDA SEARCH step by step

    之前写了不少的东西,其实大多数都是给自己看的,我的习惯是把资料放到网上,用的时候直接看博客. 之前硬盘轻轻摔了一下,几年的资料没了,然后就再也不用硬盘了. 昨天有人突然问我关于WDA的问题,毕竟奇怪, ...