home-code

示例❤源码



### 路由概述


* 路由本质
  - 动态网页本质 是 根据一组(某个规则)的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

| 说明     | Mkv路由 |
|  ----   | --- |
| 新闻首页 | [news](http://txjia.com/home.php?news) |
| 系统新闻 | [news-nsys](http://txjia.com/home.php?news-nsys) |
| 新闻详情 | [news.2015-cs-fk01](http://txjia.com/home.php?news.2015-cs-fk01) |
| 楼盘详情 | [house.2019-45-gzua](http://txjia.com/house/home.php?house.2019-45-gzua) | 
| 楼盘相册 | [house.2019-45-gzua.tu](http://txjia.com/house/home.php?house.2019-45-gzua.tu) | 
| 关联出租 | [house.2019-45-gzua.cz](http://txjia.com/house/home.php?house.2019-45-gzua.cz) |


### 探索与前行

* 纠结前行 --- 数字化id ?
  - 对于像 `2019-45-gzua` 这样的id,一些人或一些场合,可能让人难以忍受!
  - 特别是 现在的 缓存技术,伪静态技术普及,很多人都不生成实体静态文件了。
  - 客观的说,如果不生成实体静态文件,像 `2019-45-gzua` 还不如用 自增的 `1234` 好了!?

* 模板与展示
  - 回到路由的本质(本文最前面),贴心猫系统,就是通过 这个简洁的 `Mkv路由` :
    确定使用什么模板;展示什么数据。
  - 这些我们在稍后的章节,继续玩味!

-End-