Javascript 架构模式是对开放/封闭原则的极端违反
我正在开发一个web应用程序,它将在给定一组有界参数的情况下自动生成引导站点。我需要关于架构决策的帮助,因为随着时间的推移,我已经做出了非常幼稚的设计决策,我不想在这个项目中重复这个错误。对于我的PoC,我采用MVC方法进行设计,顶层架构(见上文)包含以下内容:Javascript 架构模式是对开放/封闭原则的极端违反,javascript,angular,architecture,solid-principles,Javascript,Angular,Architecture,Solid Principles,我正在开发一个web应用程序,它将在给定一组有界参数的情况下自动生成引导站点。我需要关于架构决策的帮助,因为随着时间的推移,我已经做出了非常幼稚的设计决策,我不想在这个项目中重复这个错误。对于我的PoC,我采用MVC方法进行设计,顶层架构(见上文)包含以下内容: CanvasComponent——这是应用程序的入口点,用户可以在其中生成自己的网站并下载 CanvasService-此服务协调网站的创建,并依赖于一组服务(NavbarService、HeroService、FooterServ
- CanvasComponent——这是应用程序的入口点,用户可以在其中生成自己的网站并下载
- CanvasService-此服务协调网站的创建,并依赖于一组服务(NavbarService、HeroService、FooterService)
- DomService-此服务负责在高级SAN样式中创建DOM元素
- ComponentService——这些服务组(NavbarService、HeroService、FooterService)负责在较低级别创建DOM元素
- FontService-此服务是一个Google字体库
这里有一个示例演示:(每次重新加载页面时,都会出现一个新的导航栏)。这是一个有趣的问题。我也不太理解这个图表,但是你的描述更有意义 让我们假设您生成的HTML/CSS/JS组件是合理编写的,并生成合理的格式和合理的输出。在这一点上,您实际上不需要存储关于它的元数据,因为任何东西都是不需要的。您需要的是能够构造小的模块化代码块,这些代码块可以在编辑或添加输入参数后重新编译 为了支持这一点,我强烈建议将代码(HTML)的输出分离为带有版本戳的解决方案库,而生成的代码应该是来自用户或数据输入的标记数据的集合 要创建一个简单的类比,请想象公式(8+1+1=10) 在本例中,输出(10)是唯一需要发布/呈现/存储的内容。但是,您需要保持起始数据(8+1+1)的独立性-主要是因为如果其中一个值发生变化(比如现在是8+2+1),您现在可以使用新版本重新生成第二个版本的输出,并获得新的答案(11) 因此,我更关注于存储构建块/所见即所得/标记组件,而不是担心输出元素的字符串/文本格式。从架构的角度来看,如果您有任何交互/修改此代码的持续需求,那么您需要关注易用性和可重用性 还请记住,除非您正在创建skynet,否则您并不是在编写“编写代码的代码”。您正在编写帮助人类编写代码的代码。始终假设需要来自外部来源的干预和修改-重点是获取(算法+输入=输出)的模块形式,并存储流程和输入。如果你做对了,你可以在任何时候出于任何原因重新生成输出