我如何使用自动化工具构建 300 多个开源项目
你好,程序员们,
一年前,我写了一篇关于我用于简单项目的工作流程的短文:如何使用自动化工具构建 100 多个开源应用程序。这篇文章在 Dev 上引起了一些关注(超过 2 万次阅读),并且还被翻译并发布在俄罗斯流行的平台HABR
上。 在这篇文章中,也就是整个故事的第二部分,我想再简单介绍一下我在这个令人惊叹的(自动化)领域的研发工作,正是这些工作帮助我开发了build in the last 12 months 200+ open-source starters
100 多个商业产品,并被全球众多开发者使用。
谢谢!内容由App Generator提供。
包含 DEMO 的候选名单,如动画演示中所示:
- Django Datta Able - 一个简单的 Flask 仪表板
- Eleventy Ethereal - 免费11ty入门
- Flask Pixel Lite - 具有可访问性优先 UI 的多功能应用程序
- Django Dashboard Argon - 一个最小的 Django 仪表板
- Flask Webpixels - 带有精美插图的免费应用程序
- Django Corona Admin - 黑暗之魂,无 COVID-19 的仪表盘
最新仪表板 - Django Datta Able
管理仪表板由 AppSeed 平台在Datta Able (一个现代 Bootstrap 4 仪表板模板)之上的 Django 框架中生成。Django 代码库提供了身份验证、数据库、ORM 和部署脚本。
- Django Datta Able - 产品页面
- Django Datta Able 演示- 实时部署
最新的 Web 应用 - Soft UI Flask
Soft UI 设计系统是一款由 Creative-Tim 设计的现代 Bootstrap 5 UI 套件,专为喜欢大胆元素和精美网站的用户而设计。Soft UI 设计系统 Flask是 AppSeed 提供的一款简单的 Flask 入门工具,包含模块化代码库、数据库、身份验证和部署脚本。
- Soft UI Flask - 产品页面
- Soft UI Flask - 演示- 实时部署
基本思想
在使用 CodeIgniter、Laravel、Flaks、Django、Express 等不同框架编写了大约 50 个简单项目后,我发现了所有技术中一些常见的模式,并意识到我可以使用工具代替手动工作来加快我的工作速度以及跨项目的重复性任务。目前对我来说,一些耗时的任务:
做好开发准备
通常,客户选择的设计以平面 HTML 形式交付,其中包含一些预先构建的页面,远不可用于任何框架。
项目配置和结构
数据库访问、代码库结构。
通用模块
身份验证和基本助手可以操纵时间、处理文件,也许还有简单的 REST(不太常见)。
部署配置
大多数客户不知道这一部分,但 25% 的客户要求提供特定的平台。
为了优化工作流程并减少每个阶段所花费的时间,我决定将我的工作分为两部分:
1# - HTML 文件处理
为了准备生产设计并将平面 HTML 转换为可用的组件,我使用 Python 编写了一个 HTML 解析器,它看起来像一个能够执行以下任务的控制台:
- 加载整个目录(HTML 主题)
- 比较页面(DOM 树)并检测页脚、侧边栏、顶部菜单和常见内容区域等常见部分
- 提取母版页(通用布局)以供日后使用
- 提取要在 Php、Jinja、Blade 或 Nunjunks 中使用的组件。
- 资产管理 - 图像、JS 和 CSS 的路径涵盖
normalized
所有从标准路径加载的文件/static/assets/{js, CSS, images}
。
一旦此阶段完成,通常每个设计最多需要 2 小时或更短时间,我就可以继续并将development ready
文件注入已经预先构建的简单启动器中,其中包含数据库、ORM、基本帮助程序和知名技术的部署脚本:Docker、Gunicorn、HEROKU。
2# - 代码库注入
使用 Flask、Django、Nodejs/Express 和 11ty 编写的 Starter 相当简单,方便我轻松添加新功能。并非所有客户的项目都需要 Stripe,有时对于预算低、月流量低的项目,SQLite 可能就足够了。
当然,所需的模块/功能取决于项目,但我更倾向于保持极致简洁,只在必要时添加新技术和潮流元素。无论技术如何,我在所有 Starter 中都添加了以下内容:
- 模块化代码库,超级易于维护
- 双数据库配置:SQLite/PostgreSQL(适用于大型项目)
- DB 工具:一个不错的 ORM 和用于 DB 迁移的工具
- 基于会话的身份验证(登录、注册)
- 为 Docker、Gunicorn、HEROKU 部署脚本。
此阶段包括复制第一阶段生成的文件并
主要在表单中添加基本功能:
- CSRF 令牌(Flask、Django 等中的语法不同)
- 使用 UI 工具包中的 CSS 类生成身份验证表单
- 生成代码库所需的常用页面:空白页启动器、错误页面(404、500、403)。
- 在页面标题、页脚以及有时在侧边菜单中注入品牌足迹(链接和名称)
最终产品
所有 300 多个开源项目均根据许可证(MIT、LGPL)发布,并且可以直接从 Github 用于无限制的业余爱好和商业项目。
下面我将仅介绍每个类别中的几个,完整索引请随时访问 Github代码库或访问AppSeed平台。
通常,我会从最受欢迎的几个开始。
Flask 仪表板
完整索引发布于此处:Flask Dashboards
- Flask 仪表板 - Datta Able - 产品页面
- Flask Dashboard - 黑色- 产品页面
- Flask 仪表板 - Volt - 产品页面
- Flask - Star Admin - 产品页面
Django 仪表板
完整索引发布于此处:Django Dashboards
- Django 仪表板 - Volt - 产品页面
- Django Material - 产品页面
- Django Light Design - 产品页面
- Django Atlantis Dark - 产品页面
- Django Star Admin - 产品页面
静态站点
完整索引发布于此处:静态站点
- Eleventy - Html5Up Ethereal - 产品页面
- Eleventy - Html5Up Paradigm - 产品页面
- Eleventy - Html5Up 亮点- 产品页面
Flask应用程序
完整索引发布于此处:Flask Apps
- Flask Pixel UI 套件- 产品页面
- Flask IraDesign - 产品页面
- 烧瓶纸套件- 产品页面
- Flask Webpixels - 产品页面
Jinja 模板
此类别的产品并未production-ready
使用超轻量级 Flask 代码库(没有数据库或硬依赖项)进行编码,但......基于 Jinja 与其他模板引擎(如Ejs、Liquid、Django 模板引擎、Blade(Laravel)或Nunjunks )之间的巨大相似性,可能会很有用。
只需进行微小修改即可完成此转换,并且该设计可用于 Nodejs(任何框架)、Laravel、CodeIgniter、11ty。
- Jinja Quick UI(来源)-在线演示
- Jinja Paper 仪表板(来源) -在线演示
- Jinja Sb Admin(源代码)-在线演示
- Jinja Boomerang UI(来源)-在线演示
- Jinja AdminT(来源)-在线演示
感谢您阅读这么长的文章。
自动化的工作流程帮助我更快地交付小型项目,有时一天可以完成两个,只需重复使用样板代码并将 HTML 文件解析/转换为development-ready
不同框架的组件。
我的昵称是Sm0ke ,在Twitter和Discord上也非常活跃。请在评论区分享你的想法。
文章来源:https://dev.to/sm0ke/how-i-ve-built-300-open-source-projects-with-automation-tools-41b5