Skip to content

SIMON-TANG-Liu/Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwanLab-Core-App

SwanLab前端核心模块,app基座。

开发IDE、依赖和启动项目

项目开发IDE为Webstorm,node.js版本为20.17.0,npm版本为默认版本,项目使用npm为包管理工具。

开发环境启动项目

⚠️ 启动项目相关配置还在完善,在此之前只需要npm install安装依赖,运行npm run dev启动项目即可。

如果需要使用完整的项目功能,请按照以下步骤进行

  1. 确保本机环境已经安装Node.js,版本为20.17.0
  2. 确保本机已安装docker
  3. 确保SwanLab-Cloud项目已经能启动,端口号为5177
  4. 确保Next-Login项目已经能启动,端口号为3002
  5. 运行npm install安装依赖,运行npm run dev启动项目,端口号为3001
  6. 在本项目/dev目录下运行docker-compose up启动网关,端口号为8080

微前端实现

从微应用的角度出发,我们应该将各个模块分割为不同的项目单独维护、部署,通过路由展示。next.js的rewrites只能用作单页面应用的路由重定向,无法实现微应用的目标。 因此理想情况下,会将一些需要解耦的模块分割为不同项目,通过路由区分,这样可以减少单个项目的复杂度,提高开发效率。

但是问题在于历史上我们使用的大多数框架为vue,因此如果需要实现微应用的目标,需要后端网关的介入,详见mirco-frontend。 此外,为了避免初始化时的请求开销,需要使用sessionStorage缓存用户信息。

因此一些共享的模块,如header组件、全局主题样式、语言切换函数和sessionStorage信息传递函数等,通过npm包的方式引入,存放在SwanLab-App-Components仓库中。

cookie传递

对于一些用户自定义选项,如果语言、深色模式等,一方面next.js需要在服务端渲染时获取到这些信息,另一方面也需要在不同的项目间传递,因此需要使用cookie传递。

目前所使用到的前端设置cookie如下:

key value description
NEXT_LOCALE zh, en 语言设置
NEXT_COLOR_MODE dark, light, system 深色模式设置

相关方法存储在SwanLab-App-Components仓库中。

项目结构划分

在实际生产中会将项目划分为多个模块,每个模块单独维护,通过路由区分,路由图如下图所示, 红色为core-app, 绿色为cloud, 紫色为next-login

router-structure.png

其中不同模块通过后端网关完成分发。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published