级联地区选择的一种实现方式

1,507 阅读1分钟
原文链接: zhuanlan.zhihu.com
相信大部分程序员都遇到过在公司项目中
实现级联地区选择的经历

一般大家都会想到下面这样的一种表结构设计

id name  level parent
1   浙江省   1   null
2   杭州市   2    1
3   西湖区   3    2

这样的设计方便扩展,但每次都要查询数据库,即使加上缓存也还是有较大的时间开销

之前在公司的项目中发现前人就是这么设计的,但每选择一次select都是一次查询,加上缓存还是非常慢。

国家的统一行政区划编码

后来发现国家已经有统一的行政区划编码了,我想把这些地址都静态化成json文件,请求的时候统一走nginx转发静态文件,这样的性能也会提升不少。以下是github的demo地址
istommao/RegionCode​github.com图标

具体思路

省份一般不太会变动,是没有必要请求的,所以固定写死即可

监听select事件,省份变化后请求静态json文件,然后渲染市和区

json文件结构的示例

GIF示例



以后其他需要地址级联选择的地方都可以统一使用这种方式。是不是很简单,而且性能也有很大提升