重构的些许收获

题图:Pixabay

这个项目开始之初,赶时间上线。很多地方基本没怎么管代码规范,直到一期完毕回过头来看之前写的代码,不忍直视。为了之后接手的人能更加轻松,也为了自己之后debug更加顺手,边开始二期的部分需求,边重构一期的部分代码,还是有部分收获。

项目技术栈是:

nodejs

javascript

react

redux

react-router

webpack

之前的架构是react-router2,后面换成了react-router4。代码看起来更加的模块化。

入口模块化

项目本身是一个系统合集,用户根据权限的不同会展示不同的菜单导航。目前是有3个部分:

每个模块单独的action、router、reducer与server。

webpack切片打包

路由

根路由只需指向每个模块的路由文件即可

权限、接口转发

因为各个系统的后端不是同一批人,部署的机器也不是固定的,于是用 node 做了一层接口转发,前端页面访问固定的地址,然后通过 node 去访问不同的后端机器。同时权限部分需要携带cookie跨域,正好 node 一起做了。

测试、正式

这是之前的区分线上线下打包的地址,由于webpack没有做过多的设置,于是暂时用这样的方式区分打包环境。但是我更想用 shell 脚本来区分,可以更方便的直接调试线上接口。

枚举

前端静态枚举值

不允许页面出现以下字样:

1,2,3 ...int类型

'成功','失败',... 等字符类型

错误码 ,规范化错误提示

状态值 ,规范前端业务代码

前后端字段映射

前端是驼峰命名法,后端是下划线“_”,所以需要做一个映射,同时也更加方便debug。暂时用如下笨方法。这一块写在node那层比较好。

API层

目前 tools.buildParams(parameters) 这一块的传参还在纠结以对象传还是以数组传,以数组传直接传 arguments 就可以,缺点是传参以黑盒来传,无法判断参数,无法快速debug;优点是_fetchxxx里的参数也不需要列出,直接一个对象就行。 以对象传需要自己构建,缺点是需要重复写一次参数;优点是更加直观。

缓存

统一缓存命名规范,防止缓存冲突

Feature

模块按需加载,自定义各模块间通信机制

模块注册脚手架,前端接入提供注册工具,模块单独部署,动态注册,独立 CDN。编译由服务端统一执行

服务端项目代码自身预编译,提高执行性能、降低部署风险

编译结果统一保存,支持按分支名切换、回滚

Flag

还有很多好玩的东西可以搞,每一次的优化都是对自身的一次重构。2018 fighting!!!

本文来自企鹅号 - 花一个无所媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ml

c/c++----网站及其后门(CGI应用程序)

      C/C++学习到这儿,结合自己曾经学过的javasweb知识,现在让我们来看看,如何做一个CGI程序吧!       首先了解一下啥子叫CGI  :...

37140
来自专栏小程序·云开发专栏

小程序的全栈开发新时代

小程序·云开发是微信团队和腾讯云团队共同研发的一套小程序基础能力,简言之就是:云能力将会成为小程序的基础能力。整套功能是基于腾讯云全新推出的云开发(Tencen...

12.9K180
来自专栏大数据文摘

手把手 | 20行Python代码教你批量将PDF转为Word

36250
来自专栏微服务生态

性能分析系列-小命令保证大性能

最近在工作中经常和性能压测工作打交道,积累了一些性能分析经验,我觉得这些经验对每一个开发者都有帮助的,能开发出性能高的代码也是我们的最终目标。

11450
来自专栏H2Cloud

C++执行内存memcpy的效率测试

在进行memcpy操作时,虽然是内存操作,但是仍然是耗一点点CPU的,今天测试了一下单线程中执行memcpy的效率,这个结果对于配置TCP epoll中的wor...

47640
来自专栏谭广健的专栏

【小程序-云开发】手把手教你使用云开发(数据库开发)

继上一次程序员哥哥简单开发了一个照片储存小程序后,感觉还是有些小小缺陷,就是没办法对上传照片进行文字描述。因为主要都是文字,如果将文字描述再保...

5.5K10
来自专栏一名合格java开发的自我修养

计算机操作系统之存储管理

内存的回收与分配,地址变换(程序中的逻辑地址与内存中的物理地址之间的转换),内存扩充(借助虚拟技术或覆盖技术从逻辑上扩充内存容量),内存保护(保证进入内存的各道...

8610
来自专栏大内老A

谈谈分布式事务(Distributed Transaction)[共5篇]

[第1篇] SOA需要怎样的事务控制方式 在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,...

241100
来自专栏北京马哥教育

Linux文件系统的实现

23160
来自专栏架构师小秘圈

基于dubbo框架,如何进行大型微服务系统架构设计?

一,为什么需要微服务框架 Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的...

58140

扫码关注云+社区

领取腾讯云代金券