C4BUILDER—用于构建C4模型图的Web项目

news2025/2/27 11:10:33

c4builder是什么?

c4builder: 字面理解是产生C4架构图的构建器。

  • c4builder是一个轻量级的nodejscli工具,用于仅使用文本构建、维护和共享软件体系结构项目。

  • c4builder是一种架构设计工具,可以帮助开发人员和架构师描述和可视化软件系统的架构,包括系统的组件、关系、依赖和交互。它基于C4模型(Context、Container、Component和Code)和DSL(Domain-specific language)的概念,使得设计者可以创建清晰、可维护、易于理解的架构图,并支持自动生成代码,提高系统的可靠性、可维护性和协作性。
    c4builder的主要思想是:开发人员可以使用熟悉的工具来定义软件。

与git相结合,这些文档中定义的体系结构的任何更改都很容易跟踪。Pull请求、分支、cherry picks和所有git特性都可以作为一种更容易的方式来跟踪项目体系结构的变化。

到这估计还是有点晕, c4builder 到底是什么呢?
c4builder 是基于NodeJS 一个扩展功能模块, 安装完成之后,提供了一些命令行, 使用命令行可以快速的创建一个可以用来编写C4模型图的Web项目框架, 该项目启动之后的效果如下图:
在这里插入图片描述

有了这个之后:开发人员, 项目管理,用户以及厂商等就可以很容易的在线查看这些系统相关的架构图了。

c4builder 的依赖项目

c4builder依赖于下面项目:

  • PlantUml :通过纯文本创建图表。https://plantuml.com/zh/

  • Markdown :从普通文本创建富文本文档。https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

  • C4Model : C4模型, https://c4model.com/

  • C4 PlantUML: 生成PlantUML图的C4语法支持 https://github.com/plantuml-stdlib/C4-PlantUML

  • Docsify : 基于markdown文件创建一个单网页站点。 https://docsify.js.org/

  • vscode-plantuml : 用于visualstudio代码的vscode-plantuml插件,用于在设计时查看图表, https://github.com/qjebbs/vscode-plantuml

建议先熟悉上面内容

创建 c4项目

  1. 安装c4builder
npm i -g c4builder
  • 这里是全局安装c4builder 的扩展。
    安装的画面如下:
    在这里插入图片描述
  1. 创建项目: c4builder new

这一步会要求一些输入, 比如项目名等等, 可以一直点击回车就可以, 这里的项目名是 c4project

E:\workspace\nodejs\c4builder>c4builder new
       _  _   _           _ _     _
   ___| || | | |__  _   _(_) | __| | ___ _ __
  / __| || |_| '_ \| | | | | |/ _` |/ _ \ '__|
 | (__|__   _| |_) | |_| | | | (_| |  __/ |
  \___|  |_| |_.__/ \__,_|_|_|\__,_|\___|_|

Blow up your software documentation writing skills

This will create a new folder with the name of the project
? Project Name c4project
? PlantUML version: latest (compatible with plantuml online server)
? Include the VSCode autocomplete? Yes
true
  1. 命名行切换到项目目录: cd c4project

  2. 项目配置: c4builder

这里同样需要一些交互输入,可以默认一直回车。

E:\workspace\nodejs\c4builder\c4project>c4builder
       _  _   _           _ _     _
   ___| || | | |__  _   _(_) | __| | ___ _ __
  / __| || |_| '_ \| | | | | |/ _` |/ _ \ '__|
 | (__|__   _| |_) | |_| | | | (_| |  __/ |
  \___|  |_| |_.__/ \__,_|_|_|\__,_|\___|_|

Blow up your software documentation writing skills

if you created the project using the 'c4model new' command you can just press enter and go with the default options to get a basic idea of how it works.

you can always change the configuration by running > c4builder config

? HomePage Name MyHome
? Root documentation folder src
? Destination folder docs
? Compilation format: Generate multiple pdf files, Generate a single complete pdf file, Generate website
? Change the default docsify theme? //unpkg.com/docsify/lib/themes/vue.css
? Support search on navbar? true
? Include a repository url?
? Path to a specific Docsify template?
? Change the default serve port? 3000
? Add a custom css for the pdf (filename)? xx\node_modules\c4builder\pdf.css
? Compilation format: Include breadcrumbs, Place diagrams before text
? PlantUML Server URL https://www.plantuml.com/plantuml
? Diagram Image Format svg
? Change the default charset UTF-8

building documentation in ./docs
parsed 7 folders
generating docsify site
generating complete pdf file

这个命令会在项目目录下创建docs , src 等目录或文件。

  1. 启动项目 ,可以使用c4builder site ,也可以使用docsify启动。
    c4builder site 或者
docsify serve docs

在浏览器输入: http://localhost:3000/#/ 查看效果。

c4builder

的命令参数

可以通过 c4builder --help 查看命名参数。

  • -V 或者--version , 版本号
  • new : 根据模板创建项目
  • config : 更改当前目录的配置
  • list: 列出当前的配置
  • reset: 清除所有配置
  • site: 为生成的站点提供服务, 也就是启动服务
  • -w 或者 --watch: 关注变更和重构
  • docs: 配置选项的简要说明
  • -p 端口, --port 端口 : 服务的端口
  • -h 或者--help : 帮助

默认情况下,运行c4builder将尝试构建项目
如果没有设置配置,它会要求它,然后进行实际的构建。配置后仅运行c4builder将不再显示向导。
要在第一次构建后更改配置,只需运行c4builder-config即可。默认值将是之前设置的配置,因此您可以编辑感兴趣的选项。

项目结构

产生的项目包含两个主要的目录: 源代码目录(src)和目标目录(docs)。
遵循C4模型,src目录表示Systems/Containers/Components或任何其他类型的有关软件的信息。

目录结构如下:

│   .gitignore
│   README.MD
├───docs # 目标目录
└───src # 源目录
    │   context.md
    │   context.puml
    └───Internet Banking System
        │   system.puml
        │   system.md
        ├───API Application
        │       container.puml
        │       container.md
        └───Single Page Application
            │   container.puml
            │   container.md
            └───Additional Information
                    additionalDetails.md
                    class.puml
                    sequence.puml
                    class.1.md

目标文件夹由生成过程自动生成,可以有各种格式。该文件夹可以以不同的方式提供系统/容器/组件的深入式视图。要么将其作为一个站点推送到gitpages,直接在存储库中用作可导航的标记,要么生成pdf并使用传统邮件。

在线示例

  • https://github.com/adrianvlupu/C4Builder-Demo

安装问题: Failed to set up Chrome r116.0.5845.96! Set "PUPPETEER_SKIP_DO

完整的错误信息

npm ERR! command C:\windows\system32\cmd.exe /d /s /c node install.js
npm ERR! ERROR: Failed to set up Chrome r116.0.5845.96! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.
npm ERR! Error: write EPROTO 206C0000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:c:\ws\deps\openssl\openssl\ssl\statem\extensions.c:922:



解决方法:

set PUPPETEER_SKIP_DOWNLOAD=true


完整解析:





此错误信息表明尝试下载 Chrome (用于 Puppeteer,一个 Node.js 的无头浏览器库) 失败,可能是由于 SSL 认证问题所导致的。

几种可能的解决方案如下:

1. 通过环境变量设置来跳过 Puppeteer 的下载步骤。你可以在安装之前设置`PUPPETEER_SKIP_CHROMIUM_DOWNLOAD`,使得 Puppeteer 安装过程中跳过 Chromium 的下载。但是这种方式需要你手动指定或者已经安装好可以使用的 Chromium 浏览器。

```bash
# Windows
set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
npm install puppeteer

# Linux/macOS
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install puppeteer
  1. 如果是在公司或者学校网络下,可能会需要一个代理来进行外网访问。可以通过环境变量设置来配置代理:
# Windows
set HTTP_PROXY=http://your-proxy.com:8080
set HTTPS_PROXY=http://your-proxy.com:8080

# Linux/macOS
export HTTP_PROXY=http://your-proxy.com:8080
export HTTPS_PROXY=http://your-proxy.com:8080
  1. 升级Node.js 和 npm 到最新版本。这可能会解决 SSL 握手问题。可以通过 Node.js 官方网站下载最新版本的 Node.js 和 npm。

注意:以上解决方法可能需要根据具体实际情况进行一些调整。


## 参考与链接
* 官方站点: [https://adrianvlupu.github.io/C4-Builder/#/](https://adrianvlupu.github.io/C4-Builder/#/)

*****
*****

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结合购物车功能,了解RedisTemplate中的BoundHashOperations源码

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

零代码编程:用ChatGPT批量删除文件名称中的部分内容

要批量删除文件名称中的某些特定字符,可以在ChatGPT中输入提示词: 你是一个Python编程专家,要完成一个文件重命名的任务。具体步骤如下: 本地电脑:E:\peppa4 文件夹下有很多mp4文件,比如Peppa Pig Season…

轮换对称性

二重积分 普通对称性–D关于 y x yx yx对称: ∬ D f ( x , y ) d σ { 2 ∬ D 1 f ( x , y ) d σ f ( x , y ) f ( y , x ) 0 f ( x , y ) − f ( y , x ) \iint_{D}f(x,y)d\sigma\begin{cases} 2\iint_{D_1}f(x,y)d\sigma\ \ \ \ \ \ f(x,y)f(y,x) \\ 0 \ \…

每天几道Java面试题:IO流(第五天)

目录 第五幕 、第一场)街边 友情提醒 背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第五幕 、 第一场)街边 【衣衫褴褛老者,保洁阿姨,面试者老王】 衣衫褴褛老…

ATFX汇市:美联储宣布维持利率不变,鲍威尔继续发表鹰派言论

ATFX汇市:今日凌晨02:00,美联储公布9月利率决议结果,宣布维持5.25%5.5%的联邦基金利率区间不变。2:002:05,美元指数从最低104.75飙涨至最高105.21,对应EURUSD的汇率从最高1.0727下跌至最低1.0674,跌幅53基点…

如何将 Transformer 应用于时间序列模型

在机器学习的广阔前景中,transformers 就像建筑奇迹一样高高耸立,以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。 自 2017 年创建第一个 Transformer 以来,Transformer 类型呈爆炸式增长,其中包括 Chat…

VS|vs2017跨平台编译linuxC++ConsoleQtGUI

未完成 待更新 文章目录 首先安装vs时要勾选上使用C的Linux开发使用Vs2017创建跨平台C Console项目配置Vs的SSH连接 Debug >> Option >> Cross Plaform文件加入到Linux项目,使用Windows下的文件即可。将所有项目包含.CPP、.h文件包含进Linux项目设置项…

案例丨如何提升可视化分析能力?听听这两家企业怎么说

神策分析 2.5 版本正式发布经营分析能力以来,已有不少客户接入使用,并充分实现了可视化分析能力的提升。 本文将为大家分享两家客户的真实反馈,希望能够帮助您进一步了解神策经营分析的能力。 案例一:神策数据助力美篇打造公司级“…

Linux学习之gdb的使用

目录 1.Debug与Release模式 如何证明debug是可以被调试的? 2.Linux调试器-gdb使用 gdb调试的指令 指令一:list(l) 查看源代码 编辑 ​编辑 命令二:run(r)运行程序 命令三&#xff…

mall电商项目(学习记录1)

1.简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管…

基于movie lens-100k数据集的协同过滤算法实现

基于movie lens-100k数据集的协同过滤算法实现 数据集处理 基于用户的协同过滤算法的实现 基于物品的协同过滤算法的实现 数据集处理 import pandas as pdu_data pd.read_csv(D:/PyCharmWorkSpace/ml-100k/ml-100k/u.data) u_genre pd.read_csv(D:/PyCharmWorkSpace/ml-10…

c: Sorting Algorithms

SortAlgorithm.h /*****************************************************************//*** \file SortAlgorithm.h* \brief 业务操作方法* VSCODE c11 https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md* https://www.programiz.com/d…

vscode软件安装包下载安装教程

目录 一、软件简介 二、软件下载 三、安装步骤 一、软件简介 VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查…

BD就业复习第三天

1.连续活跃区间表的实现思路 实现连续活跃区间表是数据仓库中常见的需求,通常用于分析用户或实体在一段时间内的活跃情况。以下是一种可能的实现思路: 1. 数据模型设计: 首先,您需要设计一个数据模型来存储连续活跃区间。通常&a…

9.21算法(栈)

栈 用两个栈实现队列 栈:只允许在一头进行入队和出队,先进后出 队列:只允许一头入队,另一头出队,先进先出 如果先都放入一个栈中,就是倒序的,然后再把第一个栈中的元素依次移动到另一个栈中…

eSIM简介

翻译自eSIM eSIM eSIM被称为许多不同的名字。 有人说嵌入式SIM,有人说电子SIM和其他的说eSIM。 在行业标准最终确定并在该地区广泛采用之前,还会有其他名称出现。 无论我们称之为什么,此SIM的基本思想是将SIM(UICC)作为…

成绩查询解决方案

老师如果想要使用PHP代码创建一个查询系统,可以按照以下步骤进行操作: 建立数据库连接:首先,你需要使用PHP的数据库扩展(如MySQLi或PDO)来建立与数据库的连接。提供数据库的主机名、用户名、密码和数据库名…

实在智能携手40+央企,探索财务大模型及数智化实践与应用

“这次培训给我一个最大的感触就是,过去以为AI智能化、大模型技术是很高深的事情。但现在,我们通过RPA等数字化工具,自主根据自己的工作岗位,完成业务自动化流程的开发和设计。AI技术没有想象中的那么难入门。” 这是一位参加了“…

[答疑]角色和状态的区别

DDD领域驱动设计批评文集 “软件方法建模师”不再考查基础题 《软件方法》各章合集 jeri 2023-9-10 13:09 设备关联角色,设备也有子类(车辆/设备),按书中的解释,设备是一个抽象类,角色类名像是带了状态…

第三天:实现网络编程基于tcp/udp协议在Ubuntu与gec6818开发板之间双向通信

互联网地址 每一台设备接入互联网后,都会举报一个唯一的地址编号 IP地址 INTERNET地址 internet地址 :它是协议上的一个逻辑地址 目前来说,我们主要的IP地址有两类 IPV4 IPV6 IPV4 其实就是使用一个32bit整数作为IP IPV6 其实就是使用一…