# yan **Repository Path**: doumiao2/yan ## Basic Information - **Project Name**: yan - **Description**: 旧时王谢堂前燕 飞入寻常百姓家 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-31 - **Last Updated**: 2022-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 燕/yan `旧时王谢堂前燕 飞入寻常百姓家`——《乌衣巷》唐·刘禹锡。 此项目是一个基于`python`和`webview`的模板,目前只在`Windows 11`平台测试可用。至于为什么不直接用`Electron`或者`tauri`?首先`Electron`打包后的文件体积比较大,但是打包后的结果文件不够简洁;而`tauri`由于封装程度比较高,`Rust` 上手难度较高并不适合拿来学习理解整个项目的实现原理。并且Python 的三方库更加强大! 当然,此也有瑕疵,即无法直接调用平台的某些api、编译时间过长、有可能会存在内存泄漏的问题。这些都是值得的,因为这些问题即使这次不遇到,以后也可能会遇到。就像《天月神话》里面说的,根本就没有银弹。 ----- ## 说明 由于没有嵌入`Chromium`,编译后的结果文件会比较小;但是这也导致要求系统必须已经预装了`Webview`运行时。当然也可以附带固定版本的`webview(2)`运行时,但是这样的编译结果就违背了简洁的初衷。 ### Python 后端 1. 窗口程序通过`pywebview` 开发,目前仅支持`python 3.8`; 2. 通过`Nuitka` 编译为可执行程序; ### HTML 前端 1. 通过`d3.js`, `mpld3.js`, `luluui`, `jQuery` 实现,暂不考虑`vue` 框架; 2. 保持前端与后端只存在数据的交换,渲染工作完全由前端完成; 3. 前端事件的监听器可以是异步函数; ## 依赖的库 不必过于担心引入过多的库而导致程序运行效率低下,因为: 1. 事情总要做,不是自己做就是别人做; 2. 编译器会帮我们优化; 3. 开发效率也很重要,并且引入三方库让代码更整洁。 ### Python 库 > 参见`requirements.txt` ### Javascript 库 序号|名称|说明 :---:|:---|:--- 01|jquery| 02|d3.js|绘图库 03|mpld3.js|matplotlib 前端绘图库 ## 打包 ```bash # 安装Nuitka py -3.8 -m pip install nuitka # 安装依赖 # pigar --without-referenced-comments 安装pigar 生成依赖包 py -3.8 -m pip install -r requirements.txt # 打包 py -3.8 -m nuitka ./app.py --standalone --onefile --output-dir=out --plugin-enable=numpy --include-data-dir=view=view --windows-disable-console --windows-icon-from-ico=app.ico ```