构建大型Dash应用程序的项目结构

发布时间 2023-08-08 14:30:54作者: Pyscm
dash-app-structure
|-- .venv
|   |-- *
|-- requirements.txt
|-- .env
|-- .gitignore
|-- License
|-- README.md
构建大型Dash应用程序的项目结构
|-- src
|   |-- assets
|   |   |-- logos/
|   |   |-- css/
|   |   |-- images/
|   |   |-- scripts/
|   |   |-- favicon.ico
|   |-- components
|   |   |-- __init__.py
|   |   |-- footer.py
|   |   |-- navbar.py
|   |   |-- component1.py
|   |-- pages
|   |   |-- __init__.py
|   |   |-- complex_page
|   |   |   |-- __init__.py
|   |   |   |-- layout.py
|   |   |   |-- page_specific_component.py
|   |   |-- home.py
|   |   |-- not_found_404.py
|   |-- utils
|   |   |-- __init__.py
|   |   |-- common_functions.py
|   |-- app.py

DASH项目demo参考

src

目录是存放所有代码的位置。我们将深入探讨下面的每个项目。src

assets

资产目录包含 css 文件、javascript 文件、本地托管的图像、站点徽标和应用程序图标。这些应根据其用途组织到文件夹中。

注意:示例存储库中不包含某些提到的目录,因为 Git 默认忽略空目录。

components

组件目录应包含整个应用程序中使用的常见组件。最简单的示例是导航栏 和页脚元素 。多合一组件也应存储在此处。最好在自己的文件中定义每个组件。此外,我将每个组件导入到文件中。这样可以更轻松地进行导入,如下所示:navbar.pyfooter.py__init__.py

from components import navbar, footer

pages

大型结构化应用程序依赖于新的达世币页面功能,目前只能通过达世币实验室获得。本指南将在达世币页面包含在达世币官方版本中后进行更新。有关更多信息,请参阅社区帖子https://community.plotly.com/t/introducing-dash-pages-a-dash-2-x-feature-preview/57775 100.

pages 目录包含应用程序的各个页面。我将页面分为两类,静态页面和复杂页面。静态页面是没有任何回调或最少回调的页面,例如您的主页、隐私政策、关于、未找到 2 或联系页面。复杂页面是包含更复杂的布局和回调的页面。

静态页面应直接包含在页面目录下。而复杂页面应包含在页面内自己的目录中。

有关如何构建更复杂的页面的更多信息,请参阅目录中的文件和页面论坛帖子。complex_page

utils

实用程序目录 用于在整个应用程序中运行的常见函数。将它们拆分为特定文件可以使代码更有条理。utils

在示例存储库中,有 2 个文件,以及 .api.pyimages.py

该文件在我们的环境变量中读取以获取 .调用的示例 API 不需要密钥;但是,我认为无论如何都包括在内很重要。此文件还定义了一个函数,用于格式化输入以调用 API。要调用 API,我们只需要导入并调用方法即可。api.pyAPI_KEYget_number_fact(int)

该文件侧重于与我们的应用程序中显示的图像有关的任何内容。一些主要功能包括读取本地图像并将其转换为编码字符串,以便它们正确显示。此外,如果要显示托管在某些内容分发网络 (CDN) 上的图像,还可以在此处定义用于格式化 URL 的方法。images.py

app.py

该文件是定义和运行应用程序的入口点。这是我们定义达世币应用程序、设置外部样式表并运行应用程序的地方。app.py

就目前而言,Dash需要定义的对象。由于这是代码库中唯一可以访问应用程序对象的地方,因此无需 ciruclar 导入,因此此文件应包含任何 .applong_callbackslong_callbacks