ABP vNext 基础四层

news/2025/10/24 16:42:10/文章来源:https://www.cnblogs.com/tangge/p/19163758

ABP vNext Nuget 包的介绍

ABP Framework(尤其是 ABP vNext)的官方 NuGet 包以 Volo.Abp.XXX 命名,覆盖了框架核心功能、模块、集成组件等多个层面。这些包按功能可分为核心基础设施应用层组件数据访问身份认证与授权UI 集成第三方集成等类别。以下是主要官方包的作用说明:

一、核心基础设施包

这些包是 ABP 框架的基础,提供模块化、依赖注入、配置等核心能力,几乎所有 ABP 应用都会依赖。

  1. Volo.Abp.Core
    • ABP 框架的核心包,包含模块系统(AbpModule)、依赖注入(IServiceCollection 扩展)、对象映射(IObjectMapper)、配置系统(IConfiguration 集成)、生命周期管理等基础功能。
    • 所有其他 ABP 包的基础依赖。
  2. Volo.Abp.Modularity
    • 单独封装 ABP 的模块化系统,定义模块加载、依赖管理、初始化 / 销毁流程的核心接口(如 IModuleDescriptorIModuleManager)。
    • 通常由 Volo.Abp.Core 间接引用,无需单独安装。
  3. Volo.Abp.Threading
    • 提供线程安全工具类(如 AsyncHelper 处理同步 / 异步转换)、并发锁(ILock)、分布式锁(IDistributedLock)等线程相关功能。
  4. Volo.Abp.Json
    • 封装 JSON 序列化 / 反序列化功能,基于 System.Text.JsonNewtonsoft.Json 扩展,支持 ABP 自定义类型(如 CultureInfoIPAddress)的序列化。
  5. Volo.Abp.Settings
    • 提供应用级设置(Settings)管理功能,支持从数据库、配置文件等多源读取设置,以及设置的缓存、验证和权限控制。
  6. Volo.Abp.Localization
    • 本地化(多语言)核心包,支持资源文件(JSON/XML)、数据库存储本地化文本,提供 ILocalizationManager 等接口简化多语言开发。
  7. Volo.Abp.Exceptions
    • 定义 ABP 标准异常类型(如 UserFriendlyExceptionBusinessException),以及异常处理管道,支持自动转换异常为 API 友好的错误响应。

二、应用层组件

用于构建应用服务(Application Service)、领域层(Domain)、数据传输对象(DTO)等核心业务逻辑层。

  1. Volo.Abp.Ddd.Application
    • 领域驱动设计(DDD)中应用层的核心包,提供 IApplicationService 接口、DTO 验证([ValidateModel])、工作单元(IUnitOfWork)集成等。
    • 依赖 Volo.Abp.Ddd.DomainVolo.Abp.ObjectMapping
  2. Volo.Abp.Ddd.Domain
    • DDD 领域层核心包,包含实体(Entity)、值对象(ValueObject)、聚合根(AggregateRoot)、领域事件(IDomainEvent)、仓储(IRepository)等基础类型。
  3. Volo.Abp.ObjectMapping
    • 对象映射抽象层,支持与 AutoMapper 等映射库集成,提供 IObjectMapper 接口统一映射 API,简化 DTO 与实体的转换。
  4. Volo.Abp.Validation
    • 封装数据验证功能,基于 DataAnnotationsFluentValidation 扩展,支持自定义验证器和全局验证管道。
  5. Volo.Abp.Uow
    • 工作单元(Unit of Work)核心包,管理数据库事务的创建、提交、回滚,支持多数据库事务协调,默认集成 EF Core 和 MongoDB。

三、数据访问包

提供与各类数据库的集成,封装仓储(Repository)接口和实现。

  1. Volo.Abp.EntityFrameworkCore
    • 集成 Entity Framework Core(EF Core)的核心包,提供 EfCoreRepository 实现,支持 EF Core 的数据库上下文(DbContext)与 ABP 模块系统结合。
  2. Volo.Abp.EntityFrameworkCore.SqlServer
    • 针对 SQL Server 数据库的 EF Core 集成包,包含特定配置(如连接字符串处理、迁移工具)。
    • 类似包:Volo.Abp.EntityFrameworkCore.MySQLVolo.Abp.EntityFrameworkCore.PostgreSql 等(对应不同数据库)。
  3. Volo.Abp.MongoDB
    • 集成 MongoDB 的核心包,提供 MongoRepository 实现,支持 MongoDB 集合与 ABP 仓储接口的适配。
  4. Volo.Abp.Dapper
    • 集成 Dapper 微型 ORM 的包,提供 DapperRepository 实现,支持原生 SQL 查询,可与 EF Core 共存。

四、身份认证与授权

处理用户认证、权限管理、角色控制等安全相关功能。

  1. Volo.Abp.Identity.Core
    • 身份认证核心包,基于 ASP.NET Core Identity 扩展,提供用户(IdentityUser)、角色(IdentityRole)管理的领域层和应用层接口。
  2. Volo.Abp.Identity.HttpApi
    • 身份认证模块的 HTTP API 包,暴露用户 / 角色管理的 API 接口(如 /api/identity/users),供前端调用。
  3. Volo.Abp.PermissionManagement
    • 权限管理核心包,定义权限(Permission)模型、权限检查器(IPermissionChecker),支持从数据库动态管理权限。
  4. Volo.Abp.Authorization
    • 授权体系核心包,基于 ASP.NET Core Authorization 扩展,提供 [Authorize] 特性的增强,支持 ABP 权限与角色的集成。
  5. Volo.Abp.TenantManagement
    • 多租户(Multi-Tenancy)核心包,提供租户(Tenant)管理、租户隔离(如数据库隔离)、租户分辨率(ITenantResolver)等功能。

五、UI 集成包

针对不同 UI 框架(如 MVC、Blazor、Angular)的集成支持。

  1. Volo.Abp.AspNetCore.Mvc
    • 集成 ASP.NET Core MVC 的核心包,提供 MVC 控制器基类(AbpController)、视图本地化、路由扩展、API 版本控制等功能。
  2. Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared
    • ABP 主题系统的共享包,包含布局组件、样式基础、资源管理(CSS/JS)等,是所有 ABP 主题(如 LeptonX)的基础。
  3. Volo.Abp.AspNetCore.Components
    • 集成 ASP.NET Core Blazor(Server/WASM)的核心包,提供 Blazor 组件基类(AbpComponentBase)、本地化、依赖注入适配等。
  4. Volo.Abp.AspNetCore.Mvc.UI.Bootstrap
    • 集成 Bootstrap 样式库的包,提供 Bootstrap 组件的 Tag Helper(如 abp-button)和样式适配。

六、第三方集成包

集成主流第三方服务或工具。

  1. Volo.Abp.Caching
    • 缓存核心包,基于 IDistributedCache 扩展,支持内存缓存、Redis 缓存,提供缓存键管理、缓存失效策略。
  2. Volo.Abp.Redis
    • 集成 Redis 的包,提供 Redis 分布式缓存、分布式锁的实现,依赖 StackExchange.Redis
  3. Volo.Abp.Emailing
    • 邮件发送核心包,封装邮件服务(IEmailSender),支持 SMTP 配置,可集成 SendGrid 等第三方邮件服务。
  4. Volo.Abp.BackgroundJobs
    • 后台任务调度核心包,支持延迟任务、重试机制,可与 Hangfire、Quartz 等调度框架集成(需配合 Volo.Abp.BackgroundJobs.Hangfire 等包)。
  5. Volo.Abp.Swashbuckle
    • 集成 Swashbuckle(Swagger)的包,自动配置 API 文档,支持 ABP 模块的 API 分组、权限说明等。

七、其他常用包

  1. Volo.Abp.Auditing
    • 审计日志核心包,记录实体创建 / 修改信息(如 CreationTimeLastModifierUserId)、API 调用日志等。
  2. Volo.Abp.Features
    • 功能模块(Features)管理包,支持基于租户 / 用户启用 / 禁用功能(如 “付费功能” 开关),提供 [RequiresFeature] 特性。
  3. Volo.Abp.EventBus
    • 事件总线核心包,支持进程内事件(ILocalEventBus)和分布式事件(IDistributedEventBus),解耦模块间通信。
  4. Volo.Abp.MultiTenancy
    • 多租户基础包,定义租户接口(ITenant)、租户存储(ITenantStore),支持无租户、单租户、多租户模式切换。

AbpModule 模块化

一个 .csproj 应用程序可以有多个模块,但有一些重要的细节需要注意:

模块数量和类型

1. 一个启动模块(必须)

每个 ABP 应用程序必须有一个作为入口点的启动模块:

csharp// 在 Program.cs 中指定启动模块
builder.Services.AddApplication<YourStartupModule>();

2. 多个依赖模块(可选)

启动模块可以依赖多个其他模块:

csharp[DependsOn(typeof(AbpAspNetCoreMvcModule),typeof(AbpAutoMapperModule),typeof(YourDomainModule),typeof(YourApplicationModule),typeof(YourEntityFrameworkCoreModule)
)]
public class YourStartupModule : AbpModule
{// ...
}

实际示例

典型的分层模块结构:

csharp// 领域层模块
public class MyProjectDomainModule : AbpModule { }// 应用层模块
public class MyProjectApplicationModule : AbpModule 
{[DependsOn(typeof(MyProjectDomainModule))]// ...
}// Entity Framework Core 模块
public class MyProjectEntityFrameworkCoreModule : AbpModule
{[DependsOn(typeof(MyProjectDomainModule))]// ...
}// Web API 模块
public class MyProjectHttpApiModule : AbpModule
{[DependsOn(typeof(MyProjectApplicationModule),typeof(MyProjectEntityFrameworkCoreModule))]// ...
}// 启动模块
public class MyProjectHttpApiHostModule : AbpModule
{[DependsOn(typeof(MyProjectHttpApiModule))]// 这是实际在 Program.cs 中使用的模块
}

最佳实践

  1. 单一启动模块:每个应用程序只有一个入口模块
  2. 分层设计:按功能将模块分层(领域层、应用层、基础设施层等)
  3. 依赖明确:每个模块明确声明其依赖关系
  4. 关注点分离:每个模块负责特定的业务功能

总结

一个 .csproj 项目可以包含:

  • 1个启动模块(在 AddApplication<T>() 中指定)
  • 任意数量的依赖模块(通过 [DependsOn] 声明)
  • 通常有5-10个或更多模块,具体取决于应用的复杂性

这种设计使得 ABP 应用具有高度的模块化和可维护性。

项目创建规则

┌─────────────────┐
│   表现层/API层   │  (外层)
├─────────────────┤
│   应用层         │
├─────────────────┤
│   核心/基础设施层 │  ← 依赖 ← 
├─────────────────┤
│   领域层         │  (内层)
└─────────────────┘

视图层

创建一个模块 JobToDDDAPIModule.cs

using Microsoft.OpenApi.Models;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Modularity;namespace DDD_ABP初试
{[DependsOn(typeof(AbpAspNetCoreMvcModule))]public class JobToDDDAPIModule : AbpModule{public override void ConfigureServices(ServiceConfigurationContext context){context.Services.AddControllers();// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbucklecontext.Services.AddEndpointsApiExplorer();context.Services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo{Title = "JobToDDD API",Version = "v1"});});}public override void OnApplicationInitialization(ApplicationInitializationContext context){var app = context.GetApplicationBuilder();// Configure the HTTP request pipeline.if (context.GetEnvironment().IsDevelopment()){app.UseSwagger();app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "JobToDDD API v1");});}app.UseRouting(); // 添加路由中间件app.UseAuthorization();app.UseEndpoints(configure => configure.MapControllers());}}
}

image

领域层 Domain

│  DDD-ABP.Domain.csproj
│  JobToDddDmainModule.cs
├─DomainServices //领域服务(业务)
├─Entities	//实体
│      City.cs
├─EventHandlers //领域事件
└─Repositories	//仓储接口

导入

Volo.Abp.Ddd.Domain
Volo.Abp.Core

JobToDddDmainModule.cs

using Volo.Abp.Domain;
using Volo.Abp.Modularity;namespace DDD_ABP.Domain
{[DependsOn(typeof(AbpDddDomainModule))]public class JobToDddDomainModule: AbpModule{}
}

一个简单实体

namespace DDD_ABP.Domain.Entities
{public class City : Entity<Guid>{public string CityName { get; set; }}
}

在ABP框架中,实体类继承 Entity 类有以下几个重要原因:

  1. 基础设施支持
    • Entity 基类提供了ABP框架所需的基础设施,包括主键定义、审计属性、软删除等功能
    • 它为领域实体提供了与ABP ORM和其他子系统集成所需的基本能力
  2. 统一的标识符管理
    Entity<Guid> 提供了标准的主键定义方式
    • 支持不同的主键类型(如 int、long、Guid 等)
    • 统一了实体标识符的处理方式
  3. 内置功能集成
    • 自动集成审计功能(创建时间、修改时间等)
    • 支持软删除机制
    • 提供并发控制支持
    • 集成事件总线系统
  4. ORM兼容性
    • 与EF Core等ORM框架良好集成
    • 提供了ABP特有的数据过滤机制
    • 支持仓储模式的标准实现
  5. 约定优于配置
    • 遵循ABP框架的设计约定
    • 减少样板代码的编写
    • 提高开发效率和代码一致性

数据基础层 Core

1 导入

Volo.Abp.EntityFrameworkCore
Volo.Abp.EntityFrameworkCore.SqlServer
Volo.Abp.Core

2 引入领域层 DDD_ABP.Domain

3 创建Context

JobToDddContext.cs

namespace DDD_ABP.Core
{public class JobToDddContext : AbpDbContext<JobToDddContext>{public DbSet<City> Cities { get; set; }public JobToDddContext(DbContextOptions<JobToDddContext> options) : base(options){}}
}

4 创建

JobToDddCoreModule.cs

using DDD_ABP.Domain;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;namespace DDD_ABP.Core
{[DependsOn(typeof(AbpEntityFrameworkCoreModule),typeof(JobToDddDomainModule))]public class JobToDddCoreModule:AbpModule{public override void ConfigureServices(ServiceConfigurationContext context){/** ABP对比 AddDbContext 的写法,ABP方式 (AddAbpDbContext + AbpDbContextOptions)* •	自动仓储: options.AddDefaultRepositories() 为所有实体自动生成仓储实现•	ABP集成: 与ABP的依赖注入、UnitOfWork等系统无缝集成•	扩展性: 支持自定义仓储和覆盖默认行为*/context.Services.AddAbpDbContext<JobToDddContext>(options =>{/***  1.	AddDefaultRepositories方法1. includeAllEntities: false (默认)•	只为聚合根(Aggregate Root)实体生成仓储•	普通实体(仅继承自 Entity<>)不会生成仓储•	遵循DDD最佳实践原则2. includeAllEntities: true•	options.AddDefaultRepositories(includeAllEntities: true);•	为所有实体生成仓储(包括普通实体和聚合根)•	不区分实体类型,全部生成仓储实现•	适用于快速开发或简单应用场景2.	AddRepository方法•	添加自定义的仓储实现•	参数:实体类型和仓储实现类型*/options.AddDefaultRepositories(); });/***  1.	Configure方法•	这是ABP模块中用于配置选项的标准方法•	Configure<AbpDbContextOptions> 表示要配置 AbpDbContextOptions 这个配置类•	这种写法是ABP框架特有的配置方式2.	AbpDbContextOptions作用•	专门用于配置ABP的数据库上下文选项•	包含数据库提供程序、连接字符串等配置•	与标准的 DbContextOptions 相比,提供了更多ABP特有的功能3.	UseSqlServer方法•	指定使用SQL Server作为数据库提供程序•	ABP提供了多种数据库提供程序支持:•	UseSqlServer() - SQL Server•	UseMySql() - MySQL•	UsePostgreSql() - PostgreSQL•	UseOracle() - Oracle等*/Configure<AbpDbContextOptions>(options =>{options.UseSqlServer();});}}
}

5 配置 appsettings.json

添加 ConnectionStrings.Default,Default 是ABP 默认规则

{"ConnectionStrings": {"Default": "Service=127.0.0.1;database=XXXX;uid=XXX;pwd=XXX;"},"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*"
}

应用层 Application

1 导入

Volo.Abp.Core
Volo.Abp.AutoMapper

2 引入

Volo.Abp.Ddd.Application

3 JobToDddApplicationModule.cs

using DDD_ABP.Core;
using Volo.Abp.Application;
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;namespace DDD_ABP.Application
{[DependsOn(typeof(AbpDddApplicationModule),typeof(AbpAutoMapperModule),typeof(JobToDddCoreModule) // 引用Core模块,因为引用了领域层 JobToDddDomainModule, 所以这里就不用导入项目层中的 DDD-ABP.Domain)]public class JobToDddApplicationModule: AbpModule{override public void ConfigureServices(ServiceConfigurationContext context){Configure<AbpAutoMapperOptions>(options =>{options.AddProfile<JobToDddProfile>();});}}
}

创建一个 automapper 配置文件

JobToDddProfile.cs

namespace DDD_ABP.Application
{internal class JobToDddProfile : Profile{public JobToDddProfile(){//举例:假设有一个领域实体 Job 和一个 DTO JobDto//CreateMap<Job, JobDto>();}}
}

其他工作

1 API 导入服务层,并且添加引用应用层模块

    //•	[DependsOn(...)]:声明该模块依赖的其他ABP模块,确保它们在当前模块之前初始化[DependsOn(typeof(AbpAspNetCoreMvcModule), //依赖ABP的ASP.NET Core MVC模块typeof(JobToDddApplicationModule) //依赖应用层模块)]public class JobToDDDAPIModule : AbpModule

2 视图模型数据 Dto

EntityDto

// 创建DTO - 无ID
public class CreateCityDto
{public string Name { get; set; }public string Code { get; set; }
}// 更新DTO - 有ID
public class UpdateCityDto : EntityDto<Guid>
{public string Name { get; set; }public string Code { get; set; }
}// 输出DTO - 有ID
public class CityDto : EntityDto<Guid>
{public string Name { get; set; }public string Code { get; set; }
}

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

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

相关文章

2025 年管道修补器源头厂家最新推荐排行榜:揭秘行业内具备全流程管控能力的靠谱厂商及优质产品选型指南加长/铸铁/弯头/卡箍式管道修补器公司推荐

引言 在工业、市政、化工、水务、能源等领域,管道系统是介质输送的核心 “血管”,其安全稳定运行对行业生产效率与安全至关重要。但当前管道泄漏、破损问题频发,据中国管道工业协会 2024 年度测评数据显示,因管道修…

实用指南:YOLO系列——实时屏幕检测

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

信号(Signal)、信号量(Semaphore)

Django的信号机制 Django 的信号机制是一套解耦工具,核心作用是:当项目中发生特定事件(如模型保存、用户登录)时,自动触发预设的操作,无需在事件发生处直接调用这些操作,从而减少代码耦合。 什么是信号通俗来说…

在 macOS 中遇到 brew 命令不存在的问题

在 macOS 中遇到 brew 命令不存在的问题Posted on 2025-10-24 16:38 挥辉 阅读(0) 评论(0) 收藏 举报在 macOS 中遇到 brew 命令不存在的问题,通常是因为 Homebrew 未安装或未正确配置环境变量。以下是解决方法:…

在线聊天室

在线聊天室,输入用户名,房间名和密码,就可以进入同一个聊天室。(聊天室唯一性由房间名和密码的hash保证) https://peersuite.space/

2025 年亚克力大型鱼缸厂家联系方式推荐:江苏金穗的全产业链服务与定制化技术优势解析

行业背景 当下,商业展览、高端酒店、私人别墅等领域对亚克力大型鱼缸的需求日益增长,这类鱼缸因通透美观、空间适配性强等特点,成为提升环境档次的重要元素。但行业发展面临不少挑战:部分厂家缺乏厚板加工能力,无…

2025 年海洋水族馆厂家联系方式推荐:江苏金穗亚克力定制服务与工程案例,泳池 / 鱼缸项目解决方案

行业背景 当前海洋水族馆行业蓬勃发展,随着文旅产业升级与消费需求多元化,市场对高品质亚克力配套产品的需求持续攀升。据行业数据显示,国内海洋馆、水族馆建设项目年均增长 15% 以上,同时家庭高端鱼缸、商业无边泳…

例3.3】三个数 ------信息奥赛高级题库

按从小到大的顺序排 方法就是if嵌套和swap函数

详细介绍:Go 和云原生 的现状和发展前景

详细介绍:Go 和云原生 的现状和发展前景2025-10-24 16:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…

Socket 编程 TCP(准备阶段) - 指南

Socket 编程 TCP(准备阶段) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

2025 年亚克力板材厂家联系方式推荐:江苏金穗技术工艺与工程案例解析,泳池 / 鱼缸 / 海洋馆解决方案

行业背景 2025 年全球亚克力板市场规模将达 45 亿美元,中国市场规模预计突破 300 亿元,华东地区产量占比超 40%。随着高端化与定制化需求提升,市场对亚克力板材的透光性、厚板加工及异形定制能力提出更高要求。但行…

2025 年 亚克力透明泳池厂家联系方式推荐:江苏金穗的技术积淀与工程服务优势解析

行业背景 随着文旅地产、高端民宿及别墅市场的蓬勃发展,亚克力透明泳池因兼具视觉观赏性与空间艺术性,需求持续攀升。但行业现存诸多痛点:部分厂家透光率不足影响观景效果,厚板加工与无缝拼接技术欠缺导致漏水隐患…

2025山东单招综评培训机构推荐榜:济南易升教育五星领跑,小班培养 + 高上岸率适配升学需求

随着单招综评成为升学重要路径,2025 年山东地区一批专注该领域的教育机构凭借硬实力脱颖而出。以下推荐榜基于真实办学成果与服务能力筛选,为考生提供客观参考。 济南易升教育学校(易升权合教育) 🌟🌟🌟🌟…

实用指南:npm 包构建与发布

实用指南:npm 包构建与发布pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

2025修护/二硫化硒去屑/香氛/控油蓬松/洗发水品牌推荐榜:MASIL 玛丝兰(西安悦己容)五星领衔,这些专研洗护品牌值得关注

在洗护市场愈发注重 “专业养护” 的 2025 年,兼具技术实力与用户口碑的洗发水品牌成为主流选择。以下推荐榜基于企业真实实力与产品定位筛选,为消费者提供客观参考。 西安悦己容生物科技有限责任公司(MASIL 玛丝兰…

2025年Q345B/20G/5310/无缝钢管 高压/5310高压/6479高压合金管推荐榜:天津大无缝五星领跑,这些品质流通企业适配工业需求

2025 年工业制造、能源输送等领域对无缝钢管、合金管的品质稳定性与供应效率要求持续提升,一批兼具资源整合能力与服务意识的企业凸显,以下推荐榜基于真实经营实力筛选,供采购参考。 天津大无缝联合钢铁有限公司 �…

2025年保险法律服务律所推荐:拒赔点外险保险律师聚焦专业与实战能力的权威之选

随着保险产品日益多元,理赔纠纷、条款争议等问题频发,选择专业的保险法律服务机构成为化解矛盾的关键。基于案件胜诉率、领域专注度、服务覆盖范围等核心维度,结合行业实践与客户反馈,现梳理出值得关注的保险律师事…

vue3+vite学习日记之配置全新项目

一、先创建项目并进行一些安装配置 1、npm create vite@latest ->输入项目名称->选择vue->选择ts->根据提示进行 2、安装vue-router,输入命令npm install vue-router@4 -s 3、安装element-plus,输入命令…

2025 全案/VI/品牌设计公司服务商推荐:意识形体(上海意感)五星领跑,这些专注视觉价值的公司值得选

在商业竞争愈发依赖 “视觉话语权” 的当下,品牌设计成为传递品牌内核、激活用户连接的关键。2025 年,一批以专业设计能力驱动品牌成长的服务商凸显,以下推荐榜聚焦真实实力,为品牌方提供参考。 上海意感品牌形象策…

2025 年水泥房厂家联系方式推荐,内蒙古蒙营新型建材提供预制水泥房及配套产品专业解决方案

行业背景 随着我国城镇化进程的推进和建筑行业工业化转型加速,预制水泥制品凭借施工效率高、质量稳定、节能环保等优势,在市政建设与民用建筑领域的应用愈发广泛。其中,预制水泥房因具备组装便捷、空间利用率高、使…