ssts-hospital-web-master项目实战记录十二:项目迁移-架构设计(架构库、插件库)

记录时间:2024-02-24

一、准备工作

【使用“文心一言”搜索vite项目设计文件结构】

在Vite项目中设计TypeScript文件结构时,你希望确保代码的组织是模块化的、易于维护的,并且遵循最佳实践。以下是一个适用于Vite和TypeScript项目的文件结构示例:

复制代码
  my-vite-project/
  ├── index.html # 项目入口HTML文件
  ├── package.json # 项目依赖和配置
  ├── tsconfig.json # TypeScript配置文件
  ├── vite.config.ts # Vite配置文件
  ├── src/ # 项目源代码目录
  │ ├── assets/ # 静态资源目录(如图片、字体等)
  │ ├── components/ # Vue组件目录
  │ │ ├── Buttons/ # Button组件的子目录
  │ │ │ ├── PrimaryButton.tsx # 主按钮组件
  │ │ │ └── SecondaryButton.tsx # 次按钮组件
  │ │ ├── Layouts/ # 布局组件子目录
  │ │ │ ├── DefaultLayout.tsx # 默认布局组件
  │ │ │ └── SidebarLayout.tsx # 侧边栏布局组件
  │ │ └── index.ts # 导出所有组件
  │ ├── hooks/ # React Hooks目录
  │ │ ├── useAuth.ts # 身份验证Hook
  │ │ └── index.ts # 导出所有Hooks
  │ ├── stores/ # 状态管理目录(例如使用Pinia)
  │ │ ├── userStore.ts # 用户状态管理
  │ │ └── index.ts # 导出所有stores
  │ ├── services/ # 后端服务或API调用目录
  │ │ ├── auth.ts # 身份验证服务
  │ │ └── index.ts # 导出所有服务
  │ ├── types/ # 类型定义目录
  │ │ ├── customTypes.ts # 自定义类型定义
  │ │ └── index.ts # 导出所有类型定义
  │ ├── utils/ # 工具函数目录
  │ │ ├── helpers.ts # 通用帮助函数
  │ │ └── index.ts # 导出所有工具函数
  │ ├── views/ # 页面视图目录
  │ │ ├── HomeView.tsx # 首页视图
  │ │ ├── AboutView.tsx # 关于页面视图
  │ │ └── index.ts # 导出所有视图
  │ ├── App.tsx # 项目根组件
  │ ├── main.ts # 应用的入口文件
  │ └── theme.ts # 主题和样式变量
  ├── .env # 环境变量文件
  └── .eslintrc.js # ESLint配置文件(可选)

在这个结构中:

  • components 目录包含Vue组件,按照功能或布局进行分组。
  • hooks 目录包含React Hooks,这些是可复用的状态逻辑。
  • stores 目录用于状态管理,例如使用Pinia来管理Vue应用的状态。
  • services 目录包含与后端交互的服务或API调用。
  • types 目录包含自定义的类型定义,以便在项目中重复使用。
  • utils 目录包含工具函数和辅助函数。
  • views 目录包含页面视图组件,这些组件通常与路由关联。
  • App.tsx 是项目的根组件文件,通常包含应用的顶级逻辑和样式。
  • main.ts 是应用的入口文件,负责初始化应用、设置Vue实例等。
  • theme.ts 是一个可选文件,用于定义全局的主题和样式变量。

请注意,这个结构并不是唯一的,也不适用于所有项目。根据你的项目需求、团队约定和所使用的库或框架,你可能需要调整或扩展这个结构。例如,如果你使用的是Vue 3而不是React,你可能不需要hooks目录,而是需要更多的Vue相关的目录和文件。最重要的是确保你的代码结构能够清晰地反映你的应用逻辑,并且便于维护。

 

【使用“文心一言”搜索说明Vite构建Vue项目设计文件结构】

Vite是一个由Vue.js的创建者Evan You开发的现代前端构建工具,它原生支持Vue,并且利用了ES模块导入(ESM)来提供极速的更新和启动速度。下面是对Vite构建Vue项目设计文件结构的说明:

项目根目录:

  • index.html: 项目的入口HTML文件,通常包含了对main.jsmain.ts的引用。
  • package.json: 项目的npm依赖管理文件,包含项目所需的依赖和脚本命令。
  • tsconfig.json: TypeScript编译器配置文件,如果项目使用TypeScript编写。
  • vite.config.ts 或 vite.config.js: Vite项目的配置文件,用于定制Vite的行为。
  • .env.env.development.env.production: 环境变量文件,用于存储不同环境下的配置信息。
  • .eslintrc.js: ESLint配置文件,用于代码质量和风格检查。
  • .prettierrc: Prettier配置文件,用于代码格式化。

源代码目录 (src):

  • assets/: 存放静态资源文件,如图片、字体、SVG等。
  • components/: Vue组件目录,通常按照原子设计(Atomic Design)原则划分为atomsmoleculesorganismstemplates
    • atoms/: 最小、不可再分的组件,如按钮、图标等。
    • molecules/: 由原子组件组合而成的组件,如卡片、表单等。
    • organisms/: 由多个分子组件组成的较大组件,如页眉、页脚等。
    • templates/: 由多个组织组件组成的页面布局或模板。
  • hooks/: 存放自定义的Vue Composition API Hooks。
  • stores/: Vuex状态管理目录,如果项目使用Vuex进行状态管理。
  • views/: 存放页面组件,通常与路由配置相对应。
  • App.vue: 根组件,通常包含全局样式和路由配置。
  • main.ts 或 main.js: 项目的入口文件,用于初始化Vue应用并挂载到DOM上。
  • router/: 路由配置目录,如果项目使用Vue Router进行路由管理。
  • store.ts 或 store.js: Vuex状态管理入口文件,如果不使用模块化配置。
  • types.ts: 全局类型定义文件,用于定义项目中使用的自定义类型。
  • utils/: 工具函数目录,存放一些辅助函数或工具库。

静态资源目录 (public):

  • 通常存放不需要经过Vite处理的静态资源文件,如favicon.icorobots.txt等。

测试目录 (tests):

  • 如果项目包含单元测试或集成测试,通常会在此目录下按照组件结构进行组织。

此外,Vite还提供了一个public目录,用于存放不需要经过Vite处理的静态资源。这些资源可以直接通过路径访问。

整体来看,Vite构建Vue项目的文件结构遵循了模块化、组件化和原子设计的原则,使得项目结构清晰、易于维护和扩展。同时,通过使用Vite提供的特性(如HMR、ESM等),可以大大提高开发效率和体验。

 

【使用“文心一言”搜索说明Vite构建Vue项目设计文件结构,添加包含ts文件的framework目录】

 在Vite构建的Vue项目中,如果添加了一个包含TypeScript文件(.ts)的framework目录,这个目录的结构和用途可能会有所不同,但通常它会被用作存放与项目框架或库相关的TypeScript代码和类型定义。 

以下是包含framework目录的Vite构建Vue项目的文件结构示例:

复制代码 
  my-vue-project/
  ├── index.html
  ├── package.json
  ├── vite.config.ts
  ├── tsconfig.json
  ├── .env
  ├── .env.development
  ├── .env.production
  ├── src/
  │ ├── assets/
  │ ├── components/
  │ ├── hooks/
  │ ├── stores/
  │ ├── views/
  │ ├── App.vue
  │ ├── main.ts
  │ ├── router/
  │ └── types.ts
  ├── public/
  │ ├── favicon.ico
  │ └── ...
  ├── tests/
  │ └── ...
  └── framework/
  ├── components/
  │ ├── MyFrameworkComponent.vue
  │ ├── AnotherComponent.vue
  │ └── index.ts
  ├── hooks/
  │ ├── useFrameworkHook.ts
  │ └── index.ts
  ├── types/
  │ ├── componentProps.ts
  │ └── index.ts
  ├── utils/
  │ ├── frameworkUtil.ts
  │ └── index.ts
  ├── index.ts
  └── framework.d.ts

 

在这个结构中,framework目录包含了以下子目录和文件: 

  • components/: 存放与框架相关的Vue组件。
  • hooks/: 存放与框架相关的自定义Composition API Hooks。
  • types/: 存放与框架相关的TypeScript类型定义文件。
  • utils/: 存放与框架相关的实用工具函数。
  • index.ts: 作为framework目录的入口文件,可能用于导出目录中的所有公共API或组件。
  • framework.d.ts: 全局类型定义文件,用于定义框架特有的类型或在项目中全局可用的类型。 

这些TypeScript文件(.ts)可能包含框架特定的逻辑、API、类型定义或实用工具函数,它们对于项目的其他部分是可用的,并且可以被导入和使用。 

通过在framework目录中编写TypeScript代码,项目可以获得类型安全性和自动补全等IDE功能的好处,从而提高代码的可读性和可维护性。同时,这也便于在项目中管理和组织与特定框架或库相关的代码。 

 

二、架构重构说明

架构库

common.js

1.jQuery、兼容支持,作废

 

2.扩展内置对象的原型,作废

//=========================================
//公共方法说明(扩展内置对象的原型(如 String.prototype)是一种有争议的做法,不再使用)
//=========================================

// 字符串替换
// String.prototype.replaceAll
// 方法是在 ECMAScript 2021 标准(也被称为 ES12)中引入的。

// 字符串左补位
// String.prototype.trimLeft
// 可以使用String.prototype.padStart替代, 方法是在 ECMAScript 2017 标准(也被称为 ES8)中引入的。

// 字符串右补位
// String.prototype.trimRight
// 可以使用String.prototype.padEnd替代, 方法是在 ECMAScript 2017 标准(也被称为 ES8)中引入的。

// 字符串的左右两端清除空格
// String.prototype.trim
// 方法是在 ECMAScript 5 (ES5) 中引入的。

// 字符串的左端清除空格
// String.prototype.trimLeft
// 可以使用String.prototype.trimStart替代, 方法是在 ECMAScript 2019 标准(ES10)中引入的。

// 字符串的右端清除空格
// String.prototype.trimRight
// 可以使用String.prototype.trimEnd替代, 方法是在 ECMAScript 2019 标准(ES10)中引入的。

// 字符串首字母大写
// String.prototype.caption
// 可以自定义函数实现

// 字符串反转
// String.prototype.reverse
// 可以自定义函数实现

// 判断当前字符串是否以另外一个给定的子字符串开头
// String.prototype.startWith
// 可以使用String.prototype.startsWith替代, 方法在 ECMAScript (ES) 标准中是在 ES6 (ECMAScript 2015) 中引入的。

// 判断当前字符串是否以另外一个给定的子字符串结尾
// String.prototype.endWith
//可以使用String.prototype.endsWith替代,方法在 ECMAScript (ES) 标准中是在 ES6 (ECMAScript 2015) 中引入的。

// 字符串转Ascii码
// String.prototype.toAscii
// 可以自定义函数实现

// 计算字符串长度(汉字占2个字符)
// String.prototype.strLen
// 可以自定义函数实现

// 截取含中文的字符串(从start字节截取length个字节)
// String.prototype.subCHStr
// 可以自定义函数实现

// 对Date的扩展,将 Date 转化为指定格式的String
// Date.prototype.format
// 可以自定义函数实现

 

 

3.常用处理函数

作废:$.format、forbidBackSpace、UrlDecode、QuerySting
utils/convert-util.ts:StringToAscii、ASCIIToString

 

ManageInner.js

$、对话框函数

全部作废

 

web.common.js 

1.获取页面信息

全部作废

 

2.函数

utils/log-local.ts:全部

 

3.记录到服务端日志

utils/log-serve.ts:全部

4.数据库查询

全部作废

 

5.获取配置文件配置

utils/config-util.ts:全部

 

web.logDB.js

utils/log-db.ts:全部

 

web.master.js

master/index.ts:全部

 

web.object.js

object-info/index.ts:全部

 

web.system.js

1.作废:GetBusinessDir、$().ready 

2.函数定义(空)

待评估

 

3.倒计时操作

utils/page-time-util.ts:全部

 

4.跳转页面

utils/go-page-util.ts:全部

 

5.页面弹框

utils/page-alert-util.ts:全部

 

5.流程操作

utils/go-flow-util.ts:全部

 

6.system对象

system/index.ts:全部

6.1.系统自适应样式

6.2.系统数据

6.3.系统数据操作

6.4.系统函数
6.4.1.系统终端操作(业务功能)

6.4.2.系统日志操作

 6.4.3.系统终端操作(前台管理)

 

6.4.4.系统用户查询

6.4.5.通用处理函数

  

  

插件库

待评估

  

三、文件目录结构对比

1、Html项目js文件目录结构(VS2015)

架构库+插件库

 

 2、Vue项目ts文件目录结构(VS Code)

架构库

  

插件库

 

 

posted @ 2024-02-24 10:00  lizhigang  阅读(3)  评论(0编辑  收藏  举报