路由概述
- 路由本质
- 动态网页本质 是 根据一组(某个规则)的url地址,展示动态的数据给用户;
- 路由的本质 是 规划管理这些规则,实现这个效果;
- 路由就是系统定义的 url中特定的参数,根据它来关联模板/处理数据/展示数据;
- 基本组成
- 模型:一个入口,可能有多个模型,那要一个参数:mod=xxx
- Key(ID):分类,详情等,需要一个ID参数:id=xxx
- Act(操作):当前是列表,还是详情参数:act=xxx
- 参数组合(新闻)
- 新闻首页:mod=news
- 新闻分类列表:mod=news&act=lists&type=1234
- 新闻详情:mod=news&act=detail&id=5678
- 参数组合(楼盘)
- 楼盘首页:mod=house
- 某区域楼盘列表:mod=house&act=lists&area=abcd
- 楼盘详情:mod=house&act=detail&id=5678
- 楼盘详情下的评论:mod=house&act=detail&id=5678&ext=remark
- 楼盘详情下的出租:mod=house&act=detail&id=5678&ext=rent
- 楼盘详情下的出售:mod=house&act=detail&id=5678&ext=sale
- 楼盘详情下的图片:mod=house&act=detail&id=5678&ext=pics
Mkv路由
贴心猫系统的参数 更简单!
- 贴心猫-参数组合
- 新闻首页:news
- 新闻分类列表:news-1234
- 新闻详情:news.5678
- 楼盘首页:house
- 某区域楼盘列表:house-abcd
- 楼盘详情:house.5678
- 楼盘详情下的评论:house.5678.remark
- 楼盘详情下的出租:house.5678.rent
- 楼盘详情下的出售:house.5678.sale
- 楼盘详情下的图片:house.5678.pics
ext
扩展参数
- 上述楼盘中的
ext
参数,某CMS为了表达这种需求,专门弄了一组addon
参数;
- 用类似 addon=1,addon=2,addon=2 对应上述的 ext=rent,ext=sale,ext=pics 等参数;
- 类似表达楼盘这种需求,在贴心猫系统里就成了类似:
house.5678.pics
;
- 当然了,贴心猫里,这个参数也是可有可无,根据需要设置;
mkv
路由
- TP的路由参数是:s=/news/detail
- Yii的路由参数是:r=/news/detail
- 贴心猫系统里,整个参数就是类似见上的:
news.5678
- 其实,贴心猫吧类似
mkv=news.5678
中路由参数的 [mkv=
] 省略了!
- 到此:这里的
mkv
就是上述 路由概述 > 基本组成
中提到的 model,kid,act(view) 缩写而来
ID风格
- 假设一个参数:brand(品牌)
- 风格一:brand=123,345,567,789
- 风格二:brand=huawei,zte,lenovo,coolpad (表意明了)
- 贴心猫的各类id,如模型,类别,栏目等;选择了风格二
- 假设一个订单号:order(订单)
- 风格:id=123,345,567,789
- 如果有个订单id为:100,那肯定猜测有前面的 id=99,98... 和后面的 id=101,102
- 这样的id容易猜测到,不安全
- 贴心猫的资料详情ID
- 风格三:id=2019-6n-ja1p, 2019-6u-bc9t, 2018-88-8899
- 贴心猫的各类详情id,如新闻,产品,楼盘等;选择了风格三
- 这些id利于生成静态,单个id是长了些,但按年月等特征,生成静态地址就短了;
- 曾经这样想过,一些特殊号id如:2018-88-8899,可预留,还可供运营收费!
- 风格四:id=19814-07a01,19814-3b502,19814-5ca03,19814-6d804
- 贴心猫中,一些特殊场景,如订单id,工单id等;选择了风格四(可自定义) - 这些id一看就知道一些大意
- DIY:更多id风格,见类文件:/imcat/core/blib/basKeyid.php
- (总结)ID不用数字的原因
- 表意明了
- 安全,不易猜测id
- 利于生成静态文件
- 避免自增属性在数据转换中容易丢失
- 贴心猫字符使用哲学 - 善用96个可显示ASCII码
- Demo - 一些ID与Url
探索与前行
- 纠结前行 --- 数字化id ?
- 对于像
2019-45-gzua
这样的id,一些人或一些场合,可能让人难以忍受!
- 特别是 现在的 缓存技术,伪静态技术普及,很多人都不生成实体静态文件了。
- 客观的说,如果不生成实体静态文件,像
2019-45-gzua
还不如用 自增的 1234
好了!?
- 模板与展示
- 回到路由的本质(本文最前面),贴心猫系统,就是通过 这个简洁的
Mkv路由
:
确定使用什么模板;展示什么数据。
- 这些我们在稍后的章节,继续玩味!