用JavaScript进行系统思考

简介: 用JavaScript进行系统思考

用JavaScript进行系统思考

每次我需要修复一个bug,我都遵循相同的工作流程:当QA团队中的某个人发现了一个bug,她/他就会给我发送一个bug报告,其中包含了重现问题的步骤。如果我看不懂STR,我通常会去找她/他,这样她/他就可以在她/他的电脑上给我看bug。

这种工作流在许多公司中似乎相当常见,我经常对自己说,在bug发生之前,它必须有更好的方法来获取应用程序的上下文。


动态绑定

但这更好的方法是什么呢?理想情况下,在错误发生之前创建应用程序的快照是很好的,这样我们就可以从该状态修复问题。

例如,假设有一个应用程序处于我们想要的状态,并且我们可以将该应用程序保存为一种格式,然后可以加载该格式来恢复该状态。将更快,更容易的确定解决方法。

事实上,新的数据流可能是这样的:


在本例中,我们有一个todo应用程序(基本的TodoMVC应用程序)在一个特定的上下文中(使用一个任务)。我们将应用程序的上下文导出到一个bundle中(一个字符串化的JSON对象),打开一个新的空白页面,然后安装这个bundle。然后我们看到我们的应用程序在新页面上运行,并且有正确的上下文。所以我们可以从这个上下文开始使用这个应用程序。

这意味着,作为一个开发人员,我只需加载一个JSON,QA团队中的某个人就会指派给我去获取应用程序的上下文并修复这个错误。简单得多,不是吗?


它是如何工作的?

在视频中,我们可以导出这个应用程序的状态并在运行时恢复它,因为:

* 应用程序被设计为一个系统,应用程序对象(组件、方法、模型)存储在一个很小的NoSQL数据库中。


你的应用程序是一个系统

当我们创建一个应用程序时,我们实际上创建了一个系统。系统由一个模型定义,由组件组成,并对带有行为的事件作出反应。正如你所看到的,这些概念在我们每天创建的应用程序中是相当常见的。

image.png

那么一个系统和一个应用程序有什么不同呢?对于系统,我们首先关注设计,然后才关注代码。怎么做呢?

* 首先设计你的系统模型

* 然后找到启动系统所需的所有组件

* 然后创建这些组件并实现其行为(使用方法)。

您需要在系统的设计和运行时之间进行完全的区分。设计必须始终是声明性的和执行命令性的。怎么做呢?使用UML定义您的模型并将其集成到您的开发工作流中。


Everything is a document

一切都是文档

It is possible because everything you have created can be managed as a document.

一旦系统准备好执行,我们需要将其存储在NoSQL数据库中。这是可能的,因为你所创建的所有内容都可以作为文档来管理。

假设我们想在数据库中存储一个对象,我们需要在JSON中序列化它,但是如果我们只存储它的状态,那么这个过程会更简单。

这就是在视频中所做的。模型和行为也被序列化,以便整个系统存储在数据库中

那么运行时呢?如果我们在当前应用程序中更新一个对象怎么办?

因为所有对象状态都存储在数据库中,所以我们有一个完整的ODM(Object-Document Mapper对象-文档映射器)。这意味着对系统对象的更新将自动更新其在数据库中的状态

因此,现在导出系统的当前状态就像对数据库进行转储。恢复系统的状态就像将转储导入数据库。很简单,不是吗?


想了解更多吗?

我将在下一篇文章中阐述我所谈到的概念和模式,但是如果您现在想创建一些系统可以:

* 安装System Runtime,这是一个创建和管理系统的JavaScript库。

* 阅读Donella H.Meadows的《Thinking in Systems系统之美》一书。一个系统世界的伟大介绍。

原文地址:https://dev.to/ecarriou/thinking-in-systems-with-javascript-3kd4

原作者:Erwan Carriou

翻译:小虎Oni

目录
相关文章
|
2月前
|
JavaScript 前端开发
用html+javascript打造公文一键排版系统12:删除附件说明中“附件:”里的空格
用html+javascript打造公文一键排版系统12:删除附件说明中“附件:”里的空格
|
2月前
|
前端开发
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
用html+javascript打造公文一键排版系统1:设计界面
用html+javascript打造公文一键排版系统1:设计界面
|
3月前
|
JavaScript 前端开发 开发者
Vue.js 框架大揭秘:响应式系统、组件化与路由管理,震撼你的前端世界!
【8月更文挑战第27天】Vue.js是一款备受欢迎的前端JavaScript框架,以简洁、灵活和高效著称。本文将从三个方面深入探讨Vue.js:响应式系统、组件化及路由管理。响应式系统为Vue.js的核心特性,能自动追踪数据变动并更新视图。例如,通过简单示例代码展示其响应式特性:`{{ message }}`,当`message`值改变,页面随之自动更新。此外,Vue.js支持组件化设计,允许将复杂界面拆分为独立且可复用的组件,提高代码可维护性和扩展性。如创建一个包含标题与内容的简单组件,并在其他页面中重复利用。
77 3
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
96 2
|
1月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
37 2
|
1月前
|
Web App开发 JavaScript API
构建高效后端系统:Node.js与Express框架的实践之路
【9月更文挑战第37天】在数字化时代的浪潮中,后端开发作为技术架构的核心,承载着数据处理和业务逻辑的重要职责。本文将深入探讨如何利用Node.js及其强大的Express框架来搭建一个高效、可扩展的后端系统。我们将从基础概念讲起,逐步引导读者理解并实践如何设计、开发和维护一个高性能的后端服务。通过实际代码示例和清晰的步骤说明,本文旨在为初学者和有经验的开发者提供一个全面的指南,帮助他们在后端开发的旅途上走得更远。
48 3
|
1月前
|
JavaScript 前端开发
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
|
3月前
|
机器学习/深度学习 人工智能 前端开发
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本中的积极、消极或中性情感。
107 4
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项