【20211202】CmsWing代码分析 - src/controller/home/detail.js(三)

2021SC@SDUSC

从这一篇开始,我们将要和对应的html文件一起分析,通过调用JavaScript文件的方式来推测更多使用的细节。

view/home/ceshi_hooks.html

这里是钩子。钩子是什么?https://www.jianshu.com/p/3382cc765b39介绍了钩子函数的使用方式。Hook技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。当然,这篇文章说的是Java程序里的Hook技术,但在JavaScript中也可以如此看待。

在这个Html文档中,让我们看看测试的钩子是如何运转的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--带 $hook_type 参数的 视图钩子调用,HOOK+@钩子名+@$hook_type-->
{
  {HOOK@adminArticleEdit@1|safe}} <hr>
<!--带 $hook_key 参数 视图钩子调用, HOOKS+@钩子名[$hook_key]-->
{
  {HOOKS@adminArticleEdit['aaaa']|safe}}<hr>
{
  {HOOKS@adminArticleEdit['bbbb']|safe}}<hr>
<!--带 $hook_type 和 $hook.key 参数 视图钩子调用, HOOKS+@钩子名[$hook_type]+@$hook_type-->
{
  {HOOKS@adminArticleEdit@2['bbbb']|safe}}<br>
<!--默认调用 HOOK+@钩子名-->
{
  {HOOK@adminArticleEdit|safe}}

</body>
</html>

前面是Html文档惯有的写作模式,不必多说。body一块让我们重点看一看。这里是写了一些示例的钩子调用,包括带$hook_type参数的视图钩子调用,带$hook_type$hook.key参数视图钩子调用,带$hook_type$hook.key 参数视图钩子调用,默认调用。

src/controller/home/detail.js

下面再让我们回头去看src/controller/home/detail.js。这里存放了一些钩子相关的函数。

this.assign('info', info);
// 文档内容底部钩子钩子
await this.hook('documentDetailAfter', info);
// 视频播放器钩子
await this.hook('videoPlayer', info);
// 加载页面头部底部钩子
const editor = !think.isEmpty(info.editor) ? info.editor : await this.model('cmswing/model').get_model(info.model_id, 'editor');
const field_group = await this.model('cmswing/model').get_model(info.model_id, 'field_group');
const fields = await this.model('cmswing/attribute').get_model_attribute(info.model_id, true);
const fg = parse_config_attr(field_group);
const farr = [];
for (const key in fg) {
   
  for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值