idea:贴心猫(IntimateCat)开发者自白书
发布:2017-09-10 14:07
点击:1492次
回复: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钩子函数(类), 用于扩展
- 其他:前台-手动推送资料
造轮子 - 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,不纠结于设计模式,自由奔放!
- 极轻极简: 您可把他仅当成一个工具包!