Skip to content

ZZZWTGitHub/Website-for-Knowledge-Graph-Inference

Repository files navigation

Website-for-Knowledge-Graph-Inference

this is HW for BIT BigData Course in 2022 Spring

Design

关于可视化平台的构建,以性能为重心。

以服务大数据为目的的可视化平台,首当其冲,就是尽可能减少后端的工作量。

因此在架构中实现前后端分离,一方面减少后端的静态请求,一方面预防拒绝访问攻击。静态资源可以分别部署在多地区的静态资源服务器CDN上,同时实现负载均衡。

为了实现前后端分离,我们把可以提取的业务逻辑提取到前端,脱离后端实现路由跳转,项目中使用react-router实现前端路由;

以闭包的思想,我们使用react-redux进行统一的状态和操作的管理;

以当前的axios取代ajax,实现基于promise的网络资源请求,以此连接动态资源服务器。

优化:采用新特性react-function-component取代普遍的react-class-component,实现网页解析的优化(类组件需要创建实例并继承react.component,也会解析出更多冗余的代码)

并且,函数组件不允许存在私有的state,刚好契合redux的特性进行统一管理,dispatch处理。

这部分有一个问题:react在v17及之后版本componentwillmount生命周期被移除,didmount生命周期又会产生死循环问题,这里目前还在找解决方法,将于暑期深入研究源码寻找解决方式。

后端手写一个轻量级服务器,只对特定接口开放数据处理和发送功能的处理。

对于大数据量显然单节点存储不现实,拟解决方法有:寻找适合的拓扑结构;云存储网络请求。目前使用的第二种,暂使用neo4j提供的沙盒。

FrontEnd

以react框架为基础,

以react function component实践函数组件的新特性

使用react-router解决前端路由

使用react-redux进行统一的数据管理

使用axios实现网络请求

使用Echarts实现可视化

BackEnd

以nodejs为基础

使用新标准neo4j-driver实现连接远程neo4j数据库

使用neo4j沙盒提供的远程数据库(后期会修改,因为只申请到七天)

封装了query模块,采用模块化思想

使用express为后端框架,

以cors-middleware实现跨域资源共享

以postman进行后端的集成测试

使用nodemon作为开发工具,提高代码修改时反馈效率

Problems

  • 前后端均以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框架,对于网页适配效果极佳,打算在有时间时进行学习

Summary

  • 关于技术选型
    • 这次选用的技术栈,基本都是我之前没用过的,不熟悉的。一方面是实践中学习;另一方面是对自己的一个小挑战
    • 后端方面,使用nodejs搭建较为小巧的服务器,这是对于后端方面的第一次尝试。之前玩前端经常提到的同源策略、跨域资源共享,在此也得到实践
  • 关于学习资源
    • 顺位第一优先级为视频资源,这类反馈快,实践可用概率大
    • 其次就是官网,这次项目多数是官网的学习资源,主要麻烦的就是语言问题,还有梯子网速问题
  • 关于代码远程托管
    • 多人协作中经常有这样的需要,诸多便利
    • 如项目中出现难以解决的bug,因此回退到稳定版本重新进行构思和编写
  • 待解决
    • neo4js远程数据库请求慢问题
    • 请求数据实现实际的可视化填充
    • 多模态的detail展示页面
    • 优化代码结构 √
    • 使用AntDesign组件库进行优化界面设计
    • 工期预期在下周完成,因为基本的技术结点均已打通
  • 关于提高与成长
    • 完整的开发逻辑,从UI设计到,技术选型,再到学习和代码编写
    • 全栈开发的尝试,填充了此前前端开发中不理解的一些概念。
    • 多人协作的尝试,使用代码托管工具,实用、有效
    • 技术栈的扩充,尝试了诸多新技术,也在多查多看中扩充了之后的学习列表

About

this is HW for BIT BigData Course in 2022 Spring

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published