程序日记2018-05-19

小感悟

跟young聊天后,发觉自身对于某些事情如何去分配时间,还需要学习。比如我去评估一个项目是否接,我要把每个细节想透,时间花费大,而且像外卖系统那样,花太多时间,结果被退掉了。时间是有成本的,时间是有价值的,我把所有东西想明白之后再做,太迟了,已经过时了。 以后想项目,大概看看每个模块功能大概怎样实现的思路,然后评估实现时间。还有,格局一定要大,不能用云浮的价格去看其他城市,深圳是1500每天。每当我觉得不爽的时候,想逃避的时候,要勇敢面对,其实是到达了舒适圈的边界,就像火箭离开大气层,一定要突破第二宇宙速度那样。一定要积极思考,才能突破界限。


CMSWing分析再续

再次学习src/extends/controller/hook 函数,加深了对钩子对理解,也初步领略用到钩子的妙处:钩子,我的理解就是一个触发点、一个开关、一个命令,只要一碰到、触发、或者说按下就会引起系统一系列操作,可以把大段逻辑代码分离于使用位置之外,让调用钩子部分文档逻辑更清晰,更简洁,把大段逻辑代码分离于使用位置之外还可以使用消息机制,但是消息机制做不到按需加载,不利于扩展,钩子通过状态控制可以做到按需加载。这里的钩子分为两类:1、视图(type=1) 2、控制器(type=2) ,对于高级网站设计有重要意义。
1.钩子用于视图,可以对视图输出内容进行数据提取和逻辑处理;
2.钩子用于控制器,可以对控制器里面已经存在对数据进行逻辑处理。

钩子已经缓存了,(钩子关联的)插件状态为启用,而且钩子用于视图,将钩子实例化并异步处理后的结果 放进一个钩子数组(hookarr),( await xxxx() 相当于 Promise 里面的resolve ),如果钩子用于控制器则返回一个实例化的插件控制器实例。

钩子已经缓存了,如果(钩子关联的)插件状态为其他,先从数据库中的model表查询(钩子关联的)插件,如果插件存在,则实例化插件,同时判断插件是视图插件还是控制器插件,视图则加入hookarr,控制器则返回控制器实例。

接下来是对视图钩子对处理,这里通过第一个hometitle钩子全流程分析:这个钩子可以实现这个hometitle这个标签显隐。

流程从这里开始

传入'hometitle'

src/controller/home/index
index方法

跳转到hook函数,

src/extend/controller/hook
hook函数

跳转到hookscache函数

src/model/cmswing/hooks
hookscache

返回到hook函数里面


hook函数

跳转到extConfig函数,查询插件状态


extConfig
src/model/cmswing/ext
extcache函数

查数据库数据,发现question不在表中


ext表

返回空值到status,直接执行else


hook 函数

从缓存到模型中获取名为'question'到cache

src/model/cmswing/model
get_model函数

先获取所有状态为1 且id不为1的模型缓存


_get_model

通过传入{name:'question'},返回question对象。


model模型

返回到hook函数,实例化/src/controller/mod/question/hooks

hook函数

实例化后的question hooks,这时候调用modIndex里面的hookRender函数


mod/question/hooks类

此时应该跳转到hookRender,但是软件一直没有跳转,未有看看继承的think.cmswing.modIndex,这里到底具体位置在哪里,后来发现可以在src/controller/extend/thinkjs.js 可以看到modIndex类的真实位置。


扩展think框架
src/controller/cmswing/modindexbase
这里extend其实是controller里面的路径
hookRender真实位置

查询thinkjs文档,render加参数是指定渲染文件,根据传入参数,p应该是‘hometitle’,mod应该是'question',因此应该渲染src/controller/mod/question/view/pc/hooks_hometitle


redner

最后,找到这个渲染文件

hooks_hometitle.html模版文件

有返回到hook函数了,这里判断这个hook为视图hook,因此将渲染后的视图加入数组。

同时将hookarr里面已经渲染的模版拼接起来,赋值给HOOK@hometitle


hook函数

最后就在

/src/view/home/index_index.html
模版钩子使用

hook函数分析

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容