{"id":21559766,"url":"https://github.com/kaola-fed/rde","last_synced_at":"2025-04-10T11:41:06.868Z","repository":{"id":85125424,"uuid":"180511073","full_name":"kaola-fed/RDE","owner":"kaola-fed","description":"一种基于Docker的前端生态集成解决方案","archived":false,"fork":false,"pushed_at":"2020-07-13T22:17:56.000Z","size":969,"stargazers_count":28,"open_issues_count":1,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-24T10:21:58.593Z","etag":null,"topics":["architecture","docker","front-end","scaffolding"],"latest_commit_sha":null,"homepage":"https://kaola-fed.github.io/RDE/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaola-fed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-04-10T05:51:30.000Z","updated_at":"2024-05-16T17:25:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f5eae0f-a003-4dfa-8b66-8bf2410392d7","html_url":"https://github.com/kaola-fed/RDE","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaola-fed%2FRDE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaola-fed%2FRDE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaola-fed%2FRDE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaola-fed%2FRDE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaola-fed","download_url":"https://codeload.github.com/kaola-fed/RDE/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248210843,"owners_count":21065623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architecture","docker","front-end","scaffolding"],"created_at":"2024-11-24T09:09:19.741Z","updated_at":"2025-04-10T11:41:06.849Z","avatar_url":"https://github.com/kaola-fed.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"RDE - 易于维护的前端研发架构 \n====\n\n[Redesign Development Environment](https://kaola-fed.github.io/RDE/index.html)\n\n[![RDE](https://img.shields.io/badge/cli-RDE-%2368BAEB.svg)](https://github.com/kaola-fed/RDE)\n[![Version](https://img.shields.io/npm/v/rde.svg)](https://npmjs.org/package/rde)\n[![Downloads/week](https://img.shields.io/npm/dw/rde.svg)](https://www.npmjs.com/package/rde)\n[![License](https://img.shields.io/npm/l/rde.svg)](https://github.com/kaola-fed/RDE/blob/master/package.json)\n\n\n\u0026emsp;\u0026emsp;RDE诞生的背景是，我们发现前端工程目前存在以下问题：\n\n* 工程的开发与维护都是以工程为单位进行管理，每个工程都在重复开发基础设施\n\n* 脚手架都只负责初始化工程，只能保持在创建时一致，后续维护靠业务开发者自己重复维护\n\n\u0026emsp;\u0026emsp;如果业务中有大量工程，就会造成人力浪费与推进改造效率低下等问题；RDE通过重构前端工程结构，给出一套可维护的脚手架方案，实现业务与工程基础设施的分离、基础设施可持续升级维护、进一步提升业务开发者的开发体验\n\n### 解决的问题\n\n* 开发业务时，先要从一堆与业务无关的（配置）文件中定位到页面文件，整体工程的感觉比较混乱\n* 每个工程重复建设基础设施，重复配置，如webpack基础配置，打点、sentry、mock搭建等\n* 每次升级依赖，如webpack、vue等、优化打包等，都需要推进每一个工程升级，效率低下\n* 很难同步多个工程的依赖规范，如统一使用echart，统一表单验证库等\n* 很难同步多个工程的开发规范，如一些norm术语，lint、serve等，再比如目录结构规范；可以降低跨工程开发成本\n* 工程文档维护比较困难，每个工程虽然可以放一个README，但是新人上手体验不好，并且README很容易由于没有及时维护而失效\n\n### 实现方案\n\n\u0026emsp;\u0026emsp;对原工程结构，按照功能进行拆分为3部分：\n\n* 工程基础设施：打包、开发、mock、lint、precommit校验、commit-msg校验、lint规则制定、基础依赖包等\n* 开发套件：多个工程复用的component、util、directive、mixin、decorator、filter、style、request方法等；\n\n* 业务应用：业务生产的工程\n\n\u0026emsp;\u0026emsp;RDE充当着连接各部分的角色，提供方案，让这3部分的开发变得更简单；实现细节可以关注[wiki](https://github.com/kaola-fed/RDE/wiki)，整体思路很简单，将工程拆分为一个app目录、一个template目录，app目录放业务，template目录放基础设施，app目录放在业务的git工程中，template目录发布在docker hub容器里，本地运行时，将二者在docker中进行聚合，然后运行；\n\n![](https://haitao.nos.netease.com/bf0c98ac-6416-4d29-8bd4-bf94172a4354_835_619.png)\n\n### 核心功能CASE\n\nRDC容器：用户自己封装维护，并发布在dockerhub上的的工程基础设施镜像，C代表Container\n\nRDA应用：业务工程应用，A代表Application\n\nRDS套件：在业务开发工作中，通用的不仅是组件，因此提出套件的概念，包括通用组件、方法、directive、mixin、decorators等\n\nRDE工具： 整套方案的连接器，提供创建工程、开发运行、发布、生成IDE配置等功能\n\n回顾前端发展进程，RDE可以作为集成汇总、组合所有服务的一个更通用的标准方案，让开发维护工程的粒度不再是工程，而可以根据自己实际需要，进行组合复用；如下图：\n\n![](https://haitao.nos.netease.com/aad8723b-98c7-4774-bfbb-072ddb3ac7b4_1552_1166.jpg)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaola-fed%2Frde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaola-fed%2Frde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaola-fed%2Frde/lists"}