WebIDE 需求分析和建模

Zenithal 2021-12-23 18:57:04

需求分析

项目背景

本地 IDE,比如 VS Code、JetBrains 等,已经是我们日常开发中不可或缺的软件,但是当我们想与他人分享代码或者手边没有电脑时想进行开发时,本地 IDE 的局限性就凸显出来了,基于浏览器的 WebIDE 能够不限于平台、不限于场所,只要有浏览器就能阅读编写代码并运行结果,可以很容易与他人分享。
市面上有很多成熟且完善的 WebIDE,例如 CodeSandbox、CodePen 等。为什么不能直接使用现有免费的在线 IDE,主要基于以下几点:

  • 在线 IDE 无法从私有 npm 源获取包;
  • 前端项目构建中一些特定的配置,而现有的在线 IDE 无法支持;
  • CodeSandbox 只能设置构建模板的类型,例如 create-react-app,并没有提供外部修改具体的构建配置的 API。例如项目中用到了 less 文件,选择 create-react-app 模板是无法构建的该类型文件的;
  • 特殊的功能无法实现,例如点击页面的按钮,可以实现对在线 IDE 右侧构建出来的页面进行截图,并将图片数据传输出来;
  • 使用在线 IDE 提供的服务,一般意味着你的组件/区块是暴露在公网上的,然而可能有些代码涉密,是不能上传到公网上的。

    功能分析

    用户模块

    能够修改个人信息以及管理个人代码仓库。

img

仓库模块

本项目核心模块

  • 编辑器 Editor:主要用于编辑代码,代码变动后会通知 Sandbox 进行转译。
  • 代码运行沙盒 Sandbox:在一个单独的 iframe 中运行,负责代码的编译 Transpiler 和运行 Evaluation。
  • 打包器 Packager:给 Sandbox 提供 npm 包中的文件内容。

img

各部分流程如上,其中构建过程主要包括了三个步骤:

  • Packager 打包阶段:下载 npm 包并递归查找所有引用到的文件,然后提供给下个阶段进行编译。
  • Transpilation 编译阶段:编译所有代码, 构建模块依赖图。
  • Evaluation 执行阶段:使用 eval 运行编译后的代码,实现项目预览。

img

展示模块

不需要登录便能预览代码仓库。

img

数据模型

用例图

用例图是用来显示一组用例、参与者以及它们之间关系的图。 它描述了用户希望如何使用一个系统。

img

如图展示 WebIDE 项目的用例图,描述了用户可以进行创建个人仓库,编辑个人仓库,修改个人仓库权限等核心功能,并且能够编辑个人信息。

时序图

时序图通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。 它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

img

ER 图

基于上述功能分析,可以绘制如下数据库 ER 图关系

img

用户数据字典

img

仓库数据字典

img

标签数据字典

img


img

依赖数据字典

img

设计方案

项目架构

本项目基于 MVC 模式进行开发,主要包括

  • Model(模型) 模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图)视图代表模型包含的数据的可视化。
  • Controller(控制器) 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

后端采用 Express 一个 Node.js 框架,前端采用 React 框架。

设计模式

本项目主要采用建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

img

作者:556

...全文
258 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
代码下载地址: https://pan.quark.cn/s/581cd7c6c6b7 在信息技术行业,JavaScript(缩写为JS)主要应用于网页的前端交互功能,然而借助特定的技术手段,它同样能够完成与硬件设备例如串口通信的连接。所提及的标题“js接收串口数据,测试过完全可用的,不骗人”明确指出这是一个已经成功实现了JavaScript串口通信的案例,或许是一个规模较小的Web应用程序或网页模型,具备接收和处理串口发送的数据的能力。描述中指出,该应用程序被用于接收GPS数据,这通常关联到物联网(IoT)的应用场景,通过串口将GPS模块所采集的位置信息传递给JavaScript进行后续处理。"mscomm32.ocx"是由微软公司推出的一款ActiveX控件,其主要功能是进行串行通信,这表明这个解决方案可能基于ActiveX技术,而ActiveX控件主要在Internet Explorer浏览器中得到广泛支持。由于ActiveX控件存在安全方面的隐患以及现代浏览器对其功能的限制,使用时可能需要在用户计算机系统中进行注册表的编辑操作,以启用该控件。这一过程需要用户具备相应的操作权限,并且可能引发一定的安全风险。 在标签中,“js 接收串口数据 真正 可用的代码”进一步证实了这个资源是一个有效的JavaScript代码实现,适用于实际应用,且经过验证可以正常工作。压缩包内的"test.html"文件可能是用来演示如何运用此串口通信功能的测试性网页,用户可以通过打开这个HTML文档来观察和测试代码的执行效果。"说明文档.txt"文件则很可能包含了详细的操作步骤、使用提示或代码说明的文本资料,涵盖了如何设置环境、注册控件以及如何运用JavaScript代码与串口进行...

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧