Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Vue3 意见收集 是否需要加入微前端架构? #459

Closed
Labels
enhancementNew feature or request
@LengYXin

Description

@LengYXin

Vue3

rc 版本已发布一段时间 WTM 的 Vue3 分离版本已提上日程。

在此收集 一些 基础架构的意见和规则方便后续开发

有什么需求都可以提出来 多多益善

常见的路由&多语言等配置现在都是自动化 根据 路径名称匹配 当然也可以手动设置

UI 集成Antd

Grid 集成AgGrid

富文本 集成Ckeditor

页面目前的结构如下

 ── page    │      │── controller        | 控制器 或者说 store 状态存储    │   ├── entity.ts     | 实体类    │   ├── index.ts      | 页面控制器    │── views    │   ├── action.vue    | 页面操作& 行数据操作    │   ├── details.vue   | 详情&预览&编辑表单    │   ├── filter.vue    | 搜索条件    │   ├── grid.vue      | 表格    │── index.vue         | page 入口    │── locales.ts        | 多语言配置 枚举

基本上都是 Vue3 文件推荐语法 当然默认情况下以 @vue-class-component 的 class 组件为主

比较关键的位置 为

entity.ts 配置

import{$i18n,WTM_EntitiesField}from'@/client';import{EnumLocaleLabel}from'../locales';/** * 页面实体 */classEntity{ITCode:WTM_EntitiesField={// form 的 name 属性 解析为 Entity.ITCodename:['Entity','ITCode'],// label 字段描述label:EnumLocaleLabel.ITCode,// 输入框提示placeholder:$i18n.toPlaceholder(EnumLocaleLabel.ITCode),// 校验规则rules:[{required:true,message:$i18n.toRulesMessage(EnumLocaleLabel.ITCode)}],}Password:WTM_EntitiesField={name:['Entity','Password'],label:EnumLocaleLabel.Password,placeholder:$i18n.toPlaceholder(EnumLocaleLabel.Password),rules:[{required:true,message:$i18n.toRulesMessage(EnumLocaleLabel.Password)}],}Email:WTM_EntitiesField={name:['Entity','Email'],label:EnumLocaleLabel.Email,placeholder:$i18n.toPlaceholder(EnumLocaleLabel.Email),rules:[{required:true,message:$i18n.toRulesMessage(EnumLocaleLabel.Email)}],}Name:WTM_EntitiesField={name:['Entity','Name'],label:EnumLocaleLabel.Name,placeholder:$i18n.toPlaceholder(EnumLocaleLabel.Name),rules:[{required:true,message:$i18n.toRulesMessage(EnumLocaleLabel.Name)}],}Gender:WTM_EntitiesField={name:['Entity','Gender'],label:EnumLocaleLabel.Sex,placeholder:$i18n.toPlaceholder(EnumLocaleLabel.Sex),// 字段 输入类型 radio表现 单选按钮valueType:"radio",// 远程数据request:async()=>[{label:$i18n.t(EnumLocaleLabel.Sex_Male),value:'Male'},{label:$i18n.t(EnumLocaleLabel.Sex_Female),value:'Female'}],rules:[{required:true,message:$i18n.toRulesMessage(EnumLocaleLabel.Sex)}],}SelectedGroupCodes:WTM_EntitiesField={name:'SelectedGroupCodes',label:EnumLocaleLabel.GroupName,placeholder:$i18n.toPlaceholder(EnumLocaleLabel.GroupName),// 字段 输入类型 radio表现 单选按钮valueType:"checkbox",// 远程数据request:async()=>Ajax.get('/api/_FrameworkUserBase/GetFrameworkRoles'),rules:[{required:true,message:$i18n.toRulesMessage(EnumLocaleLabel.GroupName)}],}}exportconstPageEntity=newEntity()

使用实体 WtmField 组件 传入 entityKey

<template><WtmDetails @finish="onFinish"><WtmFieldentityKey="ITCode"/><WtmFieldentityKey="Password"/><WtmFieldentityKey="Email"/><WtmFieldentityKey="Name"/><WtmFieldentityKey="Gender"/></WtmDetails></template><scriptlang="ts">import{ Vue, Options, Inject, Provide}from"vue-property-decorator";@Options({components:{}})exportdefaultclassextendsVue{  @Inject()PageController;  @Provide()formState={Entity:{ITCode:"",Password:"",},};onFinish(values){console.log("LENG ~ extends ~ onFinish ~ values",values);}created(){}}</script><stylelang="less"></style>

源代码 在WalkingTec.Mvvm.Vue3Demo

是否需要微前端架构?这是一个问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp