当前位置: 首页 > news >正文

架构与UML4+1视图

简单对比分析 

架构4+1视图

架构4+1视图是由Philippe Kruchten提出的,用于描述软件系统的架构。它包括以下五个视图:

  1. 逻辑视图:描述系统的功能需求,展示系统的静态结构,通常使用类图、对象图等。
  2. 开发视图:描述系统的模块组织,展示系统的开发结构,通常使用包图、组件图等。
  3. 进程视图:描述系统的并发和同步,展示系统的运行时行为,通常使用活动图、状态图等。
  4. 物理视图:描述系统的硬件部署,展示系统的物理结构,通常使用部署图。
  5. 场景视图:描述系统的用例和交互,展示系统的动态行为,通常使用用例图、序列图等。

UML4+1视图

UML4+1视图是基于UML(统一建模语言)的架构描述方法,与架构4+1视图类似,但更侧重于UML图的使用。它包括以下五个视图:

  1. 用例视图:描述系统的功能需求,展示系统的用例和交互,通常使用用例图、序列图等。
  2. 逻辑视图:描述系统的静态结构,展示系统的类和对象,通常使用类图、对象图等。
  3. 组件视图:描述系统的模块组织,展示系统的组件和接口,通常使用组件图、包图等。
  4. 并发视图:描述系统的并发和同步,展示系统的运行时行为,通常使用活动图、状态图等。
  5. 部署视图:描述系统的硬件部署,展示系统的物理结构,通常使用部署图。

内容对比与区别

  1. 视图名称与内容

    • 架构4+1视图中的“场景视图”在UML4+1视图中称为“用例视图”,两者都描述系统的功能需求和交互。
    • 架构4+1视图中的“开发视图”在UML4+1视图中称为“组件视图”,两者都描述系统的模块组织。
    • 其他视图的名称和内容在两种方法中基本相同。
  2. 侧重点

    • 架构4+1视图更侧重于架构的整体描述,适用于系统架构设计。
    • UML4+1视图更侧重于UML图的使用,适用于详细设计和建模。
  3. 应用场景

    • 架构4+1视图适用于系统架构师和高级设计人员,用于描述系统的整体架构。
    • UML4+1视图适用于开发人员和设计人员,用于详细设计和建模。

举例说明

假设有一个在线购物系统,以下是两种视图的描述:

架构4+1视图

  • 逻辑视图:使用类图描述系统中的用户、商品、订单等类及其关系。
  • 开发视图:使用包图描述系统的模块组织,如用户管理模块、商品管理模块等。
  • 进程视图:使用活动图描述用户下单的流程。
  • 物理视图:使用部署图描述系统的硬件部署,如Web服务器、数据库服务器等。
  • 场景视图:使用用例图描述系统的功能需求,如用户注册、商品浏览、下单等。

UML4+1视图

  • 用例视图:使用用例图描述系统的功能需求,如用户注册、商品浏览、下单等。
  • 逻辑视图:使用类图描述系统中的用户、商品、订单等类及其关系。
  • 组件视图:使用组件图描述系统的模块组织,如用户管理模块、商品管理模块等。
  • 并发视图:使用活动图描述用户下单的流程。
  • 部署视图:使用部署图描述系统的硬件部署,如Web服务器、数据库服务器等。

详细对比分析

以下是 架构4+1视图 和 UML 4+1视图 的详细对比分析,包括定义、区别、应用场景及具体示例:


1. 定义与起源对比

维度架构4+1视图UML 4+1视图
提出者Philippe Kruchten(1995年)基于UML标准,由OMG(对象管理组)规范
目标描述软件系统的多维度架构设计通过UML图形化语言表达系统架构
核心思想通过5个视图覆盖架构的关键关注点将UML图分类到5个视图,与架构设计对应

2. 视图内容对比

架构4+1视图
视图描述关键问题典型输出
逻辑视图系统功能分解与模块关系“系统提供哪些功能?”模块图、类图、接口定义
开发视图代码组织与模块依赖“代码如何分层和编译?”组件图、包图、构建系统配置
进程视图运行时进程/线程的交互与并发“系统如何并发执行?”进程通信图、线程模型
物理视图硬件部署与网络拓扑“系统如何部署到服务器?”部署图、网络拓扑图
场景视图(+1)关键用例驱动架构验证“核心流程如何通过架构实现?”用例图、序列图
UML 4+1视图
视图对应的UML图用途示例
逻辑视图类图、对象图、组合结构图静态结构建模类图描述用户与订单的关系
实现视图组件图、包图代码模块化与依赖管理组件图展示Spring Boot微服务划分
进程视图活动图、状态机图并发与异步行为建模活动图描述订单状态流转
部署视图部署图硬件与软件映射部署图显示Docker容器分布
用例视图(+1)用例图、序列图需求与交互场景验证用例图描述“用户登录”流程

3. 核心区别

对比维度架构4+1视图UML 4+1视图
视角架构师视角,关注系统级设计建模语言视角,关注图形化表达
灵活性视图内容可自定义(如替换开发视图为数据视图)严格依赖UML图的类型和语义
工具支持需结合多种工具(如PPT、ADL)直接使用UML工具(如Enterprise Architect)
适用阶段早期架构设计阶段详细设计与开发阶段

4. 应用场景示例

示例:电商系统设计
架构4+1视图
  1. 逻辑视图

    • 模块划分:用户管理、订单服务、支付服务。

    • 输出:模块交互图(非UML,可能是框图)。

  2. 开发视图

    • 代码结构:/user-service/order-service 微服务目录。

    • 输出:Maven模块依赖图。

  3. 进程视图

    • 订单服务异步处理消息队列。

    • 输出:Kafka消费者线程模型描述。

  4. 物理视图

    • 部署到AWS的3台ECS实例+Redis集群。

    • 输出:AWS架构图。

  5. 场景视图

    • “用户下单”用例的时序验证。

    • 输出:手绘时序草图。

UML 4+1视图
  1. 逻辑视图:输出:UML类图(如User类关联Order类)。

  2. 实现视图:输出:UML组件图(如user-service依赖auth-service)。

  3. 进程视图:输出:UML活动图(如订单状态机)。

  4. 部署视图:输出:UML部署图(ECS节点部署order-service.war)。

  5. 用例视图:输出:UML序列图(用户下单的交互步骤)。


5. 关键区别总结

  1. 抽象层级:架构4+1更抽象,适合高层设计;UML 4+1更具体,绑定UML语法。

  2. 输出形式:架构4+1允许自由表达(如表格、文本);UML 4+1必须使用标准UML图。

  3. 使用目的:架构4+1用于沟通架构决策;UML 4+1用于详细设计和开发指导。


6. 如何选择?

  • 选架构4+1:需要快速探索架构方案,团队需灵活表达设计思想。

  • 选UML 4+1:需要严格遵循建模规范,或使用UML工具生成代码骨架。

两者可结合使用:先用架构4+1确定整体框架,再用UML 4+1细化设计。

架构4+1【逻辑开发进程,物理场景】

UML4+1【逻辑实现进程,部署用例】

 

举例1

4+1视图模型可以从多个视图或视角来描述软件架构。其中()用于捕捉设计的并发和同步特征;()描述了在开发环境中软件的静态组织结构。

(1)A、逻辑视图        B、开发视图        C、过程视图        D、物理视图

(2)A、类视图        B、开发视图        C、过程视图        D、用例视图

用来描述软件架构的,只能是架构4+1视图。逻辑视图是描述系统的功能需求,开发视图描述系统的模块组织,过程视图描述系统的并发和同步,物理视图描述系统的硬件部署

(1)用于捕捉设计的并发和同步特征,只能是过程视图,选C

(2)在架构4+1视图中没有类视图和用例视图,排除AD,描述了在开发环境中软件的静态组织结构,只能是开发视图,选B

相关文章:

架构与UML4+1视图

简单对比分析 架构41视图 架构41视图是由Philippe Kruchten提出的,用于描述软件系统的架构。它包括以下五个视图: 逻辑视图:描述系统的功能需求,展示系统的静态结构,通常使用类图、对象图等。开发视图:…...

nosqlbooster pojie NoSQLBooster for MongoDB

测过可用,注意 asar的安装使用报错改用 npx asar extract app.asar app 路径 C:\Users{computerName}\AppData\Local\Programs\nosqlbooster4mongo\resources npm install asar -g asar extract app.asar app 打开shared\lmCore.js 修改MAX_TRIAL_DAYS3000 修改…...

UI自动化测试中,一个完整的断言应所需要考虑的问题

在UI自动化测试中,一个完整的断言应全面覆盖用户界面(UI)的功能性、交互性和视觉正确性。以下是断言需要包含的核心内容及详细说明: 一、基础元素验证 存在性断言 验证元素存在于DOM中示例代码(Python + Selenium):assert driver.find_element(By.ID, "submit_btn&…...

电脑出故障驱动装不上?试试驱动人生的远程服务支持

在日常工作或学习中,驱动问题时常成为电脑用户的一大困扰。尤其是在更换硬件、重装系统、驱动冲突等情况下,许多用户往往手足无措,不知道从何下手。而“驱动人生”作为国内领先的驱动管理工具,一直以高效、便捷、智能著称。现在&a…...

机器学习第十五讲:决策树全面讲解:像玩“20个问题“游戏猜身份[特殊字符]

机器学习第十五讲:决策树全面讲解:像玩"20个问题"游戏猜身份🎮 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署&…...

基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)

参数结构体模块 在src目录下新建params文件夹 在params文件夹下依次新建req.rs、resp.rs、result_parse.rs、mod.rs 目录结构如下: project |—src |—params //封装参数结构体模块 |—req.rs //封装请求参数结构体 |—resp.rs //封装返回数据结构体 |—resu…...

Centos7系统(最小化安装)安装zabbix7版本详细文章、nginx源代码配置、php源代码、mysql-yum安装

zabbix官网链接下载zabbix源代码安装包 选择zabbix版本(此文章使用zabbix7.0版本) 安装之前由于是最小化安装centos7安装一些开发环境和工具包 文章使用国内阿里源 cd /etc/yum.repos.d/;curl -O https://mirrors.aliyun.com/repo/epel-7.repo;curl -…...

rocketmq 环境配置[python]

因本人是 python 开发,macbook 开发。windows 可以采取配置远程 linux 解释器或者 pycharm 专业版的 docker 解释器进行开发 M1 芯片 本地运行 rocketmq rocketmq Python 开源地址: https://github.com/apache/rocketmq-client-python 因为需要 linu…...

前端学习(4)—— JavaScript(基础语法)

目录 一,介绍 1.1 是什么 1.2 组成 1.3 书写形式 1.4 输入输出 二,变量的使用 2.1 基本用法 2.2 动态类型 三,基本数据类型 3.1 数字类型 3.2 字符串类型 3.3 布尔类型 3.4 未定义数据类型 3.5 空值类型 四,运算符…...

简单介绍C++中线性代数运算库Eigen

Eigen 是一个高性能的 C 模板库,专注于线性代数、矩阵和向量运算,广泛应用于科学计算、机器学习和计算机视觉等领域。以下是对 Eigen 库的详细介绍: 1. 概述 核心功能:支持矩阵、向量运算,包括基本算术、矩阵分解&…...

原生小程序+springboot+vue+协同过滤算法的音乐推荐系统(源码+论文+讲解+安装+部署+调试)

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统背景 在数字音乐产业迅猛发展的当下,Spotify、QQ 音乐、网易云音乐等音乐平台的曲…...

[特殊字符] 如何优雅地避免 SQL 多表 LEFT JOIN 造成的笛卡尔积放大问题?

在实际项目开发中,我们经常需要从多个数据表中统计和聚合项目相关数据。但如果处理不当,多表 LEFT JOIN 容易造成 数据行数异常放大 的问题,也就是我们常说的“笛卡尔积放大”。 本文通过一个简单示例,直观讲清问题产生的原因&am…...

哈希表实现(1):

1. 哈希: 之前我们的红黑数的查找是由于左边小右边大的原则可以快速的查找,我们这里的哈希表呢? 这里是用过哈希函数把关键字key和存储位置建立一个关联的映射。 直接定址法(函数函数定义的其中一种): 直…...

【流程控制结构】

流程控制结构 流程控制结构1、顺序结构2、选择结构if基本选择结构if else语法多重if语法嵌套if语法switch选择结构 3、循环结构循环结构while循环结构程序调试for循环跳转语句区别 流程控制结构 1、顺序结构 流程图 优先级 2、选择结构 if基本选择结构 单if 语法 if&…...

敏捷-第二章 敏捷宣言与原则

敏捷宣言与原则之间的关系 将敏捷明确表述为一种思维模式,它由《敏 捷宣言》的价值观所界定,受敏捷原则指导, 4通过各种实践实现敏捷不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。 敏捷宣言(Manifesto)的4大价值…...

UAI 2025重磅揭晓:录取数据公布(附往届数据)

近日,第41届UAI公布了论文录用结果。本次大会共收到 750篇有效论文投稿,最终录用230篇,录用率为30.7%。录取率较去年(UAI 2024)相比有所上升(录取率:26.88%)。 会议概览 人工智能不…...

京东方10.1寸工业液晶屏GV101WXM-N80

第一篇:规格参数总览 产品标称 京东方(BOE) GV101WXM-N85 工业级显示单元 核心应用方向 教学终端设备|工业便携装置|车载控制系统 面板属性 非晶硅TFT液晶技术|全视角显示模式联合常暗配置 物理规格 对角线长度25.7cm&…...

实例分割AI数据标注 ISAT自动标注工具使用方法

文章目录 🌕ISAT安装和启动方法🌕下载和使用AI分割模型🌙SAM模型性能排行🌙手动下载sam模型 & sam模型下载路径🌕使用方法🌙从file中导入图片🌙点击左上角的图标进入分割模式🌙鼠标左键点击画面中的人则自动标注🌙点击右键该区域不标注🌙一个人一个人的…...

软件架构风格系列(4):事件驱动架构

文章目录 前言一、从“用户下单”场景看懂事件驱动核心概念(一)什么是事件驱动架构?(二)核心优势:解耦与异步的双重魔法 二、架构设计图:三要素构建事件流转闭环三、Java实战:从简单…...

软件架构风格系列(2):面向对象架构

文章目录 引言一、什么是面向对象架构风格1. 定义与核心概念2. 优点与局限性二、业务建模:用对象映射现实世界(一)核心实体抽象1. 员工体系2. 菜品体系 (二)封装:隐藏实现细节 三、继承实战:构建…...

python打卡day27

函数装饰器 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 日常ctrl点进某个复杂的项目,发现函数定义上方有一个xxx,它就是装饰器。装饰器本质上是一个 Python 函数,可以在不修改原函数代码的情况下&…...

智能AI构建工地安全网:跌倒、抽搐、区域入侵多场景覆盖

智能AI在工地安全中的应用:从监测到救援的全流程实践 一、背景:高温作业下的工地安全挑战 随着夏季高温持续,工地户外作业环境面临严峻考验。工人因高温疲劳、脱水或突发疾病引发的行为异常(如晕厥、抽搐、跌倒)频发…...

gflags 安装及使用

目录 引言 安装 如何用 gflags 库写代码 如何用命令行使用 gflags 库 gflags 库的其他命令行参数 引言 gflags 是 Google 开发的一个开源库,用于 C 应用程序中命令行参数的声明、定义 和解析。 gflags 库提供了一种简单的方式来添加、解析和文档化命令行标…...

金融问答系统:如何用大语言模型打造高精度合规的金融知识引擎

假如我现在向大模型提问,我的问题是:请查询在2021年度,68**38股票涨停天数? 或者我问:湖南*****科股份有限公司变更设立时作为发起人的法人有哪些? 大模型巴拉巴拉给我一个答案,那怎么让我信任大…...

Spring WebFlux与Quarkus实战:云原生微服务开发的两大主流框架深度解析

简介 云原生与微服务架构已成为企业数字化转型的核心驱动力,而Spring WebFlux和Quarkus作为两大主流框架,各自提供了独特的解决方案来应对高并发、低延迟和快速启动的挑战。本文将从零开始,详细讲解如何使用这两个框架构建高性能的云原生微服务,并通过实际案例展示它们在企…...

成功案例丨从草图到鞍座:用先进的发泡成型仿真技术变革鞍座制造

案例简介 在鞍座制造中,聚氨酯泡沫成型工艺是关键环节,传统依赖实验测试的方法耗时且成本高昂。为解决这一问题,意大利自行车鞍座制造商 Selle Royal与Altair合作,采用Altair Inspire PolyFoam软件进行发泡成型仿真。 该工具帮助团…...

学习日志09 java

我要(ง •_•)ง!! 1 面向对象里面的编程的属性,其实就是变量啦 在面向对象编程里,“属性”(Attribute)也被叫做 “成员变量” 或者 “字段”(Field),指的是类中用来存…...

深入解析Spring Boot与微服务架构:从入门到实践

深入解析Spring Boot与微服务架构:从入门到实践 引言 随着云计算和分布式系统的普及,微服务架构已成为现代软件开发的主流模式。Spring Boot作为Java生态中最受欢迎的框架之一,为开发者提供了快速构建微服务的强大工具。本文将深入探讨Spri…...

25考研经验贴(11408)

声明:以下内容都仅代表个人观点 数学一(130) 25考研数学一难度介绍:今年数学一整体不难,尤其是选填部分,大题的二型线面和概率论大题个人感觉比较奇怪,其他大题还是比较容易的。.26如何准备&a…...

Linux运行时的参数、命令、网络、磁盘参数和日志监控

一、监控 1. free 功能:用于查看系统内存使用情况,包括物理内存总量、已用内存、空闲内存、缓冲区(buffer)和缓存(cache)占用,以及交换内存(swap)的使用与剩余情况。常…...

Spring Boot循环依赖的陷阱与解决方案:如何打破“Bean创建死循环”?

引言 在Spring Boot开发中,你是否遇到过这样的错误信息? The dependencies of some of the beans in the application context form a cycle 这表示你的应用出现了循环依赖。尽管Spring框架通过巧妙的机制解决了部分循环依赖问题,但在实际开…...

如何打造MVP(最小可行性产品)(MVP=核心功能+快速验证+用户反馈+持续迭代)

文章目录 **一、MVP的核心原则**1. **聚焦核心价值**2. **快速迭代**3. **低成本验证** **二、MVP的打造步骤****1. 定义目标用户和核心需求****2. 确定MVP的核心功能**- **筛选关键功能**:1. 用户是否愿意为这个功能付费?2. 实现该功能的技术难度和成本…...

conda init执行了还是不好用

按照gpt的方法,还是方法一:以管理员身份运行 PowerShell 并设置执行策略 好用 你遇到的问题是典型的 Conda 环境激活失败 错误,提示如下: CondaError: Run conda init before conda activate但你已经运行了 conda init&#xff…...

crontab 定时任务不执行问题排查

*/5 * * * * sh /data03/jq/sparkjob.sh 定时任务不执行! Cron默认丢弃输出,错误信息无法查看。 将输出和错误重定向到日志文件: /bin/sh /data03/jq/sparkjob.sh >> /tmp/sparkjob.log 2>&1 检查日志文件 /tmp/sparkjob.log 定…...

require/exports 或 import/export的联系和区别,各自的使用场景

以下是 require/exports(CommonJS)与 import/export(ES6 Modules)的对比分析及使用场景说明: 一、核心联系‌ ‌模块化目标‌ 两者都用于实现代码模块化,解决全局作用域污染和依赖管理问题。 ‌跨环境适配‌…...

如何更改远程桌面连接的默认端口?附外网访问内网计算机方法

远程连接端口根据协议和场景不同有所差异,以下是常见远程连接端口的设置及修改方法,同时附外网访问内网计算机操作。 一、Windows远程桌面默认端口 ‌默认端口‌:3389(TCP协议),用于Windows远程桌面服务&…...

模拟jenkins+k8s自动化部署

参考 Jenkins+k8s实现自动化部署 - 掘金 手把手教你用 Jenkins + K8S 打造流水线环境 - 简书 安装插件 调整插件升级站点 (提高插件下载速度) 默认地址 https://updates.jenkins.io/update-center.json 新地址 http://mirror.xmission.com/jenkins/updates/update-center.json …...

Jenkins教程

参考 Jenkins 用户手册 Jenkins User Documentation 在项目创建Jenkinsfile文件 添加分支源 报错 不自动拉取分支,改为手工指定分支 又报了一个错, 解决方法,参考: Jenkins中连接Git仓库时提示:无法连接仓库:Error performing git command: git ls-remote -h_霸道流…...

从验证码绕过到信息轰炸:全面剖析安全隐患与防范策略

在数字化交互场景中,验证码作为区分人类操作与自动化程序的核心屏障,广泛应用于用户身份核验、操作权限确认等关键环节。其设计初衷是通过人机识别机制,保障信息系统交互的安全性与可控性。然而,当验证码验证机制出现异常突破&…...

CSS:颜色的三种表示方式

文章目录 一、rgb和rgba方式二、HEX和HEXA方式(推荐)三、hsl和hsla方式四、颜色名方式 一、rgb和rgba方式 10进制表示方法 二、HEX和HEXA方式(推荐) 就是16进制表示法 三、hsl和hsla方式 语法:hsl(hue, satura…...

math toolkit for real-time development读书笔记一-三角函数快速计算(1)

一、基础知识 根据高中知识我们知道,很多函数都可以用泰勒级数展开。正余弦泰勒级数展开如下: 将其进一步抽象为公式可知: 正弦和余弦的泰勒级数具有高度结构化的模式,可拆解为以下核心特征: 1. 符号交替特性 正弦级…...

超市营业额数据分析

1.推出5名销冠 2.新领导想看看他15天以来的业绩总增长情况,以及增长额前3的柜台 3.把所有柜台的销售额分为3个等级 import pandas as pd import matplotlib.pyplot as plt import numpy as np# 设置中文字体和显示方式 plt.rcParams.update({font.sans-serif&...

labelimg安装及使用指南(yolo)

1.安装 首先要安装Anaconda,然后打开Anaconda Prompt 构建一个新的虚拟环境(注:虚拟环境的python的版本应在3.9及以下,不然会在运行中报错) conda create -n label python3.9 其中这里label只是一个名字,…...

在 Ubuntu 系统中,将 JAR 包安装为服务

在 Ubuntu 系统中,将 JAR 包安装为服务可以通过 systemd 来实现。以下是详细的操作步骤: 准备工作 确保 JAR 文件路径和 Java 运行时环境已准备好。验证 Java 是否可用: java -version创建 systemd 服务文件 systemd 的服务文件通常位于 …...

我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近,我萌生了一个念头:能不能自己动手做一个功能丰富的 PDF 工具箱?市面上…...

WebSocket聊天室的简单制作指南

一、前言 最近在学习WebSocket技术,做了一个简单的聊天室Demo。这个项目虽然不大,但涵盖了WebSocket的核心功能实现。下面我将详细介绍这个聊天室的实现过程,希望能帮助到同样想学习WebSocket的朋友们。 二、技术选型 后端:Spri…...

非国产算力DeepSeek 部署中的常见问题及解决方案

随着大语言模型(LLM)在企业级应用场景中的快速推进,DeepSeek 一体机凭借其高性能推理能力和便捷的系统集成优势,正逐步成为多行业智能化转型的重要基础设施。然而,在实际部署过程中,技术团队常常会遭遇一系…...

大数据技术的主要方向及其应用详解

文章目录 一、大数据技术概述二、大数据存储与管理方向1. 分布式文件系统2. NoSQL数据库3. 数据仓库技术 三、大数据处理与分析方向1. 批处理技术2. 流处理技术3. 交互式分析4. 图计算技术 四、大数据机器学习方向1. 分布式机器学习2. 深度学习平台3. 自动机器学习(AutoML) 五、…...

Maven使用详解:Maven的概述(二)

一、核心定义与功能 Maven是由Apache软件基金会开发的开源项目管理工具,专为Java项目设计,主要用于自动化构建、依赖管理和项目标准化。其核心功能包括: 依赖管理:通过pom.xml文件声明依赖库,自动从中央仓库下载并管…...

在 Odoo 18 表单视图中使用 JS 类的方法

在 Odoo 18 表单视图中使用 JS 类的方法 一、模块结构创建 要为特定视图在 JavaScript 里注册一个类。后续在任意表单视图中添加相同类时,自定义视图就会被注入该表单。 具体要做的是: 把自定义视图创建出来当作模板。将视图注册成一个组件。把它和表…...