idea:贴心猫(IntimateCat)开发者自白书

发布:2017-09-10 14:07   点击:224次   回复:0

来源/核心 - aspx7,canphp

  • 源于7年的asp积累,最初用php的方式把之前的asp系统表现并改进 - 中间一个小插曲是为公司申请一个软件著作权
  • 然后就是想弄一个通用的小工具(选取了canphp,cakephp,thinkphp对比糅合)- 结果失败
  • 最后在canphp的基础上,写了一个工具+cms的雏形

命名规范 - 某erp

  • 我很体贴(包含我自己在内)的码农:我会坚决避免这些状况:
    • 文件夹里太多的文件或子目录列表,要滚动半天,找半天
    • 很长的文件名,目录名,中文文件名或目录名…
    • 拼写错误的文件名,目录名,字段名,表名…
  • 我的命名规范,受某erp影响较深
    • 尽量使用英文,而不是拼音,不管中文英文,不能有拼写错误
    • 一组相关的文件,表,字段等,用一个统一的简单前缀
    • 必要时,制定公布命名规范
    • 为规划命名字段,表,文件,目录等,常常花很多时间
    • 用一段时间后,发现不合理后,常常要改动...

模块/类别架构,脚本操作 - 某cms

  • 模块扩展
    • 之前的asp系统,可以扩展模型,类别;但都是放在一个(类)表里面
    • 数据一多,这个架构就出现瓶颈
    • 有了前面的教训,再看了某cms的模块/类别架构;我对这些架构分表扩展了。
  • 脚本操作
    • 最基本的要求是:扩展一个模型,即可常规的添加修改删除数据;
    • 而不是一些所谓的MVC,一定要来一个定义M,V,C过程
    • 其次是,能自由单独扩展处理,而且要简单,代码要少,好维护!

模板/标签 - lv/sf/某cms

  • 模板继承
    • 开始在 laravel / symfony 里看到,我觉得这个思想很好;
    • 我没有看他们具体怎么做,我自己也来一个,而且使用和处理非常简单;
    • {imp:"subdir/tplfile"}
    • {block:title}新标题{/block:title}
    • 再来个模板包含的例子 {inc:"c_pub/p-nav1"}
  • 标签系统
    • mvc中,通常在c中调用m,把数据取出来;丢到模板v中去调用
    • dedeCMS和某cms中,直接在模板标签中取出数据显示
    • 我选择了后者,并且仿照某cms,做了js标签,用于静态页调用部分动态信息
    • 本系统也兼容前者扩展方式,在Ctrl/Act中读取数据(见后面)…

分组(展示)入口 - asp,T某,某cms

  • 案例
    • 曾经做过asp企业站,前端有7个语言版本;7个语言版本各自一个目录;后台管理,一个总入口
    • T某,号称单入口,有一个分组功能,但是呢,这个分组,出问题很多(高级功能下小问题多)
    • 某cms,前端所有模板,在一个目录下;再来一个wap端,模板同样堆积一起,最后是很恐怖的!
    • 很多框架/csm,号称单入口,但是管理后台,由单独弄一个文件…
  • 现实
    • 一般的至少要一个后台,一个前端显示两个部分
    • 再主流一点,一个英文版,一个移动端…
    • 再前卫一点,还有一个API相关的部分,专门供APP,小程序调用等
    • 另外还有很多的,安装,ajax小功能,地图,第三方api等入口
  • 实践
    • 本系统,一个入口对应一个分组,独立配置,独立模板,独立js,css,images等
    • 注意公共js,css,images另外规划目录。
    • 本系统默认有:后台,会员,pc前端,wap前端,中文文档,英文文档 几个入口(分组)
    • 请看本系统相关目录文件;尽管每个分组独立目录,但是一些模板区块,可跨模板调用

助手函数/build 工具 - sf/yii

  • 助手函数/别名函数
    • 用了 symfony 的 dump 等 助手函数习惯了, 所以我也来了一套!
  • 应用生成工具
    • symfony, yii等,都有生成应用雏形的工具
    • symfony的工具,还放在命令行,自以为高大上
    • 我也来个 简单的build 工具,不用命令行,是个网页,可生成一个独立入口,
    • 入口包含首页,一个自定义模块,一个系统数据模块。
    • 其他工具还有:数据库管理, 辅助计划任务运行rplan.php等工具!

mkv/mvc - 特色与对比

  • 传统mvc路由的url举例
    • 模式1:/group/news/id/123456.html (需要配置服务器,支持伪静态,url重写)
    • 模式2:/index.php?g=group&m=new&a=detail&id=123456 (id=123456)
    • 模式3:/index.php?r=group/news/detail&id=123456
    • 静态:/topdir/news/2017/0910/123456.html
    • 如果pc/移动端,要生成两个不同静态文件,这里不一定能完成
  • 本系统mkv路由
    • 动态模式:/group.php?news.2017-ab-1234 (id=2017-ab-1234)
    • 动态不需要额外服务器配置
    • 静态模式:/topdir/news/2017/ab-1234.htm (topdir可取消,后缀可自定义)
    • pc/移动端都可以生成静态,只需定义不同后缀如:-m.htm;
    • 静态目录,只需从id中获得,不需要其他字段,比其他系统生成的url要短!
    • 本系统mkv路由 详细文档:
    • http://txmao.txjia.com/dev.php?start-names#s_mkv

字段内容存文件 - asp,网友要求

  • 之前asp中实现过,用来减少access/mssql数据库,提升查询效率
  • 现在由于各模型分表,开始不计划做这个
  • 后面由网友要求,自v3.6加上了 字段内容存文件 功能

移动适配 - 时代需求

  • 场景
    • 同一数据(如一个产品),PC/移动端 各一个静态页,这时需要js跳转
    • 动态页:PC/移动端 各绑不同模板,这时地址不变,PC/移动端版面效果不同
    • 简单页面,同一页面内容,用css3响应式,适配PC/移动端
  • 实践
    • 第一种:直接配置一个js变量即可:<script>var _pbase={}; _pbase.rdmob=1;,其他由系统处理
    • 第二种:模型中设置一个移动模板后缀参数即可:'tmfix' => '-mob',
    • 第三种:全部依靠前端处理,本系统一些提示页这样处理,其他页面,用户自己写css。

REST-API,其他 - yii等

  • REST-API
    • 思想来源于yii,
    • 凭用户token访问,可设置访问频率;
    • 可设置用户,权限,可自主管理token
  • 其他:Hook钩子函数(类), 用于扩展
    • 主流框架都有
    • 我不能少,自v3.5加上了!
  • 其他:前台-手动推送资料
    • 受困于从后台取资料
    • 这里可以自由设置资料

造轮子 - D某,T某

  • T某, 国内很著名的框架
    • 最开始关注时1.x…,结果是发现,他的动作太豪放,我跟不上:
    • 1.x, 2.x, 3.x, 5.1, 5.2每次都大改;
    • 3.2取消分组,用命名空间实现
    • 5.0完全颠覆和重构,连把之前配置参数大写惯例都改成了小写,
      把之前的单字母大写字母函数,改成小写单词函数,
    • 5.0-5.1重构的(对象化)路由,取消系统常量,大改命名空间
    • 对使用者,每次是完全重新学习?!我跟不上!
  • D某, 国内很著名的CMS
    • 他与T相反,非常稳定,导致10年来都没有改过
    • 代码,还在兼容php4.x, mysql4.x的基础上;他视乎还在PHP4/PHP5时代
    • 文件目录,几乎一成不变;死气沉沉!
    • 我同样也难以忍受…
  • 了解过一点:laravel / symfony / yii 什么的;
    • 又觉得他么比较庞大
    • 同时觉得他们太高深,一是我的思想不能达到这些高度,另一面是我想追求极轻极简的原则
    • 但另一方面,他们有的东西或想法,个人认为比较满意,我也尽力用更简单的方式,去仿造…
  • 造轮子了!
    • 既然我不适应别人的东西,那只得自己动手造轮子了:
    • 之前有同事说过,运营系统,不必要开发系统;我赞同的;
    • 我曾经问我自己,我要什么样的系统?
    • 我觉得我最好的系统,永远在心中,无法表达!
    • 一时兴致,表达我的想法和系统,就是本案!
    • 但我知道,每次表达完想法,或即将完成,我就会不满意了,觉得更有更好的想法
    • 所以,注定我要不断的去升级,改进!!!

总结

  • 以面向应用为主,不纠结于OOP,不纠结于MVC,不纠结于设计模式,自由奔放!
  • 极轻极简: 您可把他仅当成一个工具包!
状态:开放 Makedown 推荐   bug编号: ---
回复(0条)   >>我来回复 回复列表

关于 GitHub 导航 部门 反馈

提示:`/chn.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved. 粤ICP备07020797号.

Done:288.822/83.554(ms); 6(queries)/2.435(MB); Tpl:faqs/detail; Upd:2018-10-20 19:41:08