this is HW for BIT BigData Course in 2022 Spring
关于可视化平台的构建,以性能为重心。
以服务大数据为目的的可视化平台,首当其冲,就是尽可能减少后端的工作量。
因此在架构中实现前后端分离,一方面减少后端的静态请求,一方面预防拒绝访问攻击。静态资源可以分别部署在多地区的静态资源服务器CDN上,同时实现负载均衡。
为了实现前后端分离,我们把可以提取的业务逻辑提取到前端,脱离后端实现路由跳转,项目中使用react-router实现前端路由;
以闭包的思想,我们使用react-redux进行统一的状态和操作的管理;
以当前的axios取代ajax,实现基于promise的网络资源请求,以此连接动态资源服务器。
优化:采用新特性react-function-component取代普遍的react-class-component,实现网页解析的优化(类组件需要创建实例并继承react.component,也会解析出更多冗余的代码)
并且,函数组件不允许存在私有的state,刚好契合redux的特性进行统一管理,dispatch处理。
这部分有一个问题:react在v17及之后版本componentwillmount生命周期被移除,didmount生命周期又会产生死循环问题,这里目前还在找解决方法,将于暑期深入研究源码寻找解决方式。
后端手写一个轻量级服务器,只对特定接口开放数据处理和发送功能的处理。
对于大数据量显然单节点存储不现实,拟解决方法有:寻找适合的拓扑结构;云存储网络请求。目前使用的第二种,暂使用neo4j提供的沙盒。
以react框架为基础,
以react function component实践函数组件的新特性
使用react-router解决前端路由
使用react-redux进行统一的数据管理
使用axios实现网络请求
使用Echarts实现可视化
以nodejs为基础
使用新标准neo4j-driver实现连接远程neo4j数据库
使用neo4j沙盒提供的远程数据库(后期会修改,因为只申请到七天)
封装了query模块,采用模块化思想
使用express为后端框架,
以cors-middleware实现跨域资源共享
以postman进行后端的集成测试
使用nodemon作为开发工具,提高代码修改时反馈效率
-
前后端均以javascript语言为基础,而产生的逻辑混乱
-
以添加后缀文件使用不同的标准(ECMA JS、CommonJS、JSX语法扩展)进行区分和运行,其中VSCode的一些开发者工具起到很大的帮助
-
Node连接Neo4j相关资源,简中互联网有效信息太少
- 在学习使用Nodejs尝试连Neo4j在线数据库时,查找资料的困难,简中资源基本为python、java适配
- 同样的,在实践react新特性:函数组件中也遇到此种困难
-
关于前端架构中的MVVM与MVC模式区别之体会
- 此前开发项目中使用Vue框架较多,而Vue是在前后端分离方面做的很好,使用的MVVM的模式进行双向绑定等操作;这与React中的一些MVC思想相差甚远,在进行技术迁移学习时,包括项目开发过程中均有碰壁
-
组件库与设计模式在不同框架下适配程度之差异
- 此前经常使用的element-ui组件库在react框架中使用出现问题,后查阅发现其实二者适配性较差,小巧的elementui更适合之前常用的vue,而react或许与AntDesign更适合。此处实际解决是以手撕CSS代码方式
- 在此查阅过程中,也看到了不少css框架,对于网页适配效果极佳,打算在有时间时进行学习
- 关于技术选型
- 这次选用的技术栈,基本都是我之前没用过的,不熟悉的。一方面是实践中学习;另一方面是对自己的一个小挑战
- 后端方面,使用nodejs搭建较为小巧的服务器,这是对于后端方面的第一次尝试。之前玩前端经常提到的同源策略、跨域资源共享,在此也得到实践
- 关于学习资源
- 顺位第一优先级为视频资源,这类反馈快,实践可用概率大
- 其次就是官网,这次项目多数是官网的学习资源,主要麻烦的就是语言问题,还有梯子网速问题
- 关于代码远程托管
- 多人协作中经常有这样的需要,诸多便利
- 如项目中出现难以解决的bug,因此回退到稳定版本重新进行构思和编写
- 待解决
- neo4js远程数据库请求慢问题
- 请求数据实现实际的可视化填充
- 多模态的detail展示页面
- 优化代码结构 √
- 使用AntDesign组件库进行优化界面设计
- 工期预期在下周完成,因为基本的技术结点均已打通
- 关于提高与成长
- 完整的开发逻辑,从UI设计到,技术选型,再到学习和代码编写
- 全栈开发的尝试,填充了此前前端开发中不理解的一些概念。
- 多人协作的尝试,使用代码托管工具,实用、有效
- 技术栈的扩充,尝试了诸多新技术,也在多查多看中扩充了之后的学习列表