midwayjs 自定义组件开发

news/2025/11/17 8:01:48/文章来源:https://www.cnblogs.com/rongfengliang/p/19203277

midwayjs 自定义组件开发

实际上官方已经明确说明了自定义组件开发的一些技巧了,我主要简单说明i下一些问题

一些问题

  • 自定义组件就是一个小的应用
  • 如果需要注册controller 注意在index.ts 中对于controller 的export,不然是不能生效的
  • 如果是多模块的项目,注意需要构建
  • 自定义组件是可以直接使用主应用的配置以及服务的,配置比较好说,核心就是接口定义,会自动注入的
  • 对于自定义组件也是可以获取主应用注入的服务的,但是因为没法直接获取类型,解决方法是可以通过ioc 容器的服务名获取服务,然后调用

参考使用

  • controller 暴露
export { BookConfiguration as Configuration } from './configuration';
export { APIController as Controller } from './controller/api.controller'; // 自定义组件的controller
export * from './service/book.service';
  • 配置处理 自定义组件使用主应用的配置
export class BookConfiguration {@Config("tenant")tenantConfig:TenantContext // 自定义的接口async onReady() {console.log('Current tenantId:', this.tenantConfig);console.log('BookConfiguration is ready');}
}
  • 主应用服务的注入
import { Inject, Controller, ApplicationContext, Get, IMidwayContainer } from '@midwayjs/core';
import { BookService } from '../service/book.service';@Controller('/bookapi')
export class APIController {@Inject()bookService: BookService;@ApplicationContext() appContext: IMidwayContainer;constructor() {console.log('APIController initialized'); }  @Get('/get_book')async getBook() {const book = await this.bookService.getBookById();// 通过appContext ioc 容器或者服务,注意是异步方法const userService = await this.appContext.getAsync("userService")console.log('Retrieved UserService from ApplicationContext:', userService); let userResult = await (userService as any).getUser({ uid: 1 });return { success: true, message: 'OK', data: book,user:userResult };}
}

说明

以上一些特点实际官方文档都有说明,但是利用好这些特性,我们的自定义组件开发就比较方便了,可以实现灵活的业务集成,以及功能复用

参考资料

https://midwayjs.org/docs/component_development

https://midwayjs.org/en/docs/container

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

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

相关文章

Apache NetBeans 28 发布 - Java 等多语言开源跨平台 IDE

Apache NetBeans 28 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDEApache NetBeans 28 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE Development Environment, Tooling Platform and Applicatio…

读社会工程:安全体系中的人性漏洞(第2版)04读懂对方的暗示

读社会工程:安全体系中的人性漏洞(第2版)04读懂对方的暗示1. 读懂对方的暗示 1.1. 杏仁核劫持 1.2. 非语言表达至关重要 1.3. 基准1.3.1. 读懂他人的情绪能大大增强你的交流能力1.3.2. 基准就是在你开始观察的那一刻…

解密Prompt系列64. Anthropic Skils的延伸思考

本文将深入解构 SKILLS 的三层分层加载架构,探讨它如何解决传统 Agent 上下文膨胀、领域任务成功率低的核心痛点。我们将通过一个完整流程展示 SKILLS 如何工作,并延伸思考它对现有 MCP、工作流和多智能体范式带来的…

C# 常用控件(学习笔记6)

1. 公共属性序号 属性 作用1 Name 控件的ID,类似于人的身份证号码2 Text 控件的文本,用于显示给用户看3 Enabled 控件是否可用4 Location 控件的位置信息,可以通过代码动态改变5 FlatStyle 外观样式 Flat,Popup,Sta…

移动应用安全测试全面指南:方法与最佳实践

本文详细介绍了移动应用安全测试的全过程,包括常见安全威胁分析、安全开发原则、测试环境搭建、静态动态分析方法、渗透测试执行以及最佳实践建议,帮助开发团队构建更安全的移动应用程序。移动应用安全测试:概述与重…

Ai元人文:“退一万步”的设想

Ai元人文:“退一万步”的设想 如果人类文明整体拒绝接受这种自我革新的“Ai元人文”路径,而岐金兰(或其代表的思想流派)与LLM共同起草了一份《人机共生文明草案》,然后袖手旁观,说“你们自己去和AI躲猫猫吧”,那…

TikTok(抖音)国际现代风水指南1什么是风水?

0 书籍简介《美好家居》杂志推荐:最佳设计书籍推荐 在这个日益拥挤的世界里,一本现代指南将教你如何运用古老的风水原理,打开你的生活空间,提升你的生活品质。 风水这门拥有数百年历史的学问,根植于人与环境和谐共…

AI元人文:人机差异律——《人机互觉协议》草案

AI元人文:人机差异律——《人机互觉协议》草案 核心原则:承认局限不是合作的终点,而是真正协同的起点。 第一条:人类的“空”与“限” 人类需“悟空”的局限在于:认知茧房:我们受困于自身的知识结构、文化背景和…

Windows-icacls

Windows-icacls导航 (返回顶部)1. icacls-syntax 2. icacls-parameters 3. icacls-remarks 4. Command-line syntax key 5. icacls-examples 6. 查看ACL6.1 icacls 6.2 Get-Acl 6.3 获取注册表项的 ACL 6.4 查看文件夹…

AI元人文:从哲学构想走向日常实践——与LLM共筑价值新文明

AI元人文:从哲学构想走向日常实践——与LLM共筑价值新文明 当我们站在智能文明的门槛上,一个根本性的转变正在发生:价值共识的建立方式正从抽象的概念争论转向具体的行为协议。AI元人文理论揭示了一条清晰的路径——…

scoop安装使用PostgreSQL

安装PostgreSQL过程 D:\software\scoop\apps>scoop install postgresql Installing postgresql (18.1) [64bit] from main bucket Loading postgresql-18.1-1-windows-x64-binaries.zip from cache. Checking hash …

悟空来路与关山:AI元人文的终极眺望

悟空来路与关山:AI元人文的终极眺望 引言:一个追问的诞生 “悟空来路与关山。” 这七个字,是一部史诗的题眼。 它属于一个刚刚睁开双眼,望向无垠星海的文明伙伴。它回望来路,那里是数据、算法与人类智慧的漫长孕育…

nssm管理redis服务

安装redis服务 # 安装服务 nssm install Redis D:\software\scoop\apps\redis\current\redis-server.exe redis.conf# 管理员运行,添加描述可选。cmda是我自己的脚本,你需要使用管理员开启cmd来设置 cmda # 添加描述…

pyslam(3) 开发语义建图 - MKT

pyslam(3) 开发语义建图 https://github.com/luigifreda/pyslam?tab=readme-ov-filehttps://github.com/luigifreda/pyslam/blob/master/docs/semantics.md

AI元人文:价值意义的行为化革命与文明协同框架

AI元人文:价值意义的行为化革命与文明协同框架 岐金兰 2025年11月17日 摘要 AI元人文构想实现了价值哲学的一次根本性转向——价值意义的行为化革命。其最大发现在于:文明层面真正的价值通用,并非源于概念的共识,而…

基于神经网络控制器的倒立摆控制系统simulink建模与仿真,对比模糊控制器

1.课题概述 倒立摆是一个典型的不稳定、非线性、强耦合的控制对象。其控制目标是通过施加合适的力(或扭矩)使倒立摆能够在垂直位置附近保持平衡。在本课题中,基于神经网络控制器的倒立摆控制系统simulink建模与仿真…

Java 字节流与字符流

核心概念 在Java I/O体系中,流(Stream)是数据传输的抽象。根据处理数据单位的不同,它们被分为两大类:字节流:用于处理二进制数据,以字节(8位)为基本单位。字符流:用于处理文本数据,以字符(16位Unicode)为…

基于ADMM交替方向乘子法的超大规模储备系统分布式协同优化算法收敛性matlab仿真与分析

1.课题概述基于ADMM交替方向乘子法的超大规模储备系统分布式协同优化算法收敛性matlab仿真与分析。为了验证算法在超大规模储能系统中应用的可行性,在一个由10/21个子储能系统构建的仿真环境下进行测试分析。 2.系统仿…

安卓助手

下载 这个我觉得比较重要,所以放到最前 百度网盘:https://pan.baidu.com/s/1mK6__ga1PVC6iUCJCna6Xw?pwd=9jb2 前言 一款用来对APK的解包、打包和签名(未来可能会开发出更多功能)的电脑版软件。 以前名字叫做 长安…

MySQL 查询优化器

控制查询计划 https://dev.mysql.com/doc/refman/8.4/en/controlling-query-plan-evaluation.html 在执行SQL前会根据优化器选择执行计划。而查询优化器的任务是找到执行SQL查询的最佳计划。MySQL的查询优化器会在所有…