美文网首页
程序日记2018-05-09

程序日记2018-05-09

作者: Purson | 来源:发表于2018-06-20 07:17 被阅读0次

    继续Cmswind的研究

    昨天明白了怎样对扩建进行扩展。今天继续分析src/controller/home/index/index。


    两个需要搞明白的
    • this.active[] 到底有什么用?
      查到thinkjs的文档,发现这是一种默认注入的方法,这里的this应该是controller:


      默认注入参数

      注入后可以在模版调用:


      模版调用
    • this.hook 钩子有什么用?
      点击command + 鼠标左键 可以跟踪到hook 在 src/extend/controller.js

      根据昨晚到判断,这是对controller功能扩展。 hook方法
      粗略看了一下是传入hook名字,然后缓存,然后读取关联的插件,然后初始化插件,然后返回对象数组或对象,赋值给前端。好处就是不用在同一个页面写太多代码,也方便管理。

    今晚再详细看了一下,首先通过this.hook('hometitle'); 启动钩子,然后进入hooks方法,首先通过钩子名称‘hometitle’查询数据库 cmswing/hooks 返回钩子hometitle所有信息,主要是字段ext的内容


    hooks表结构

    然后通过读取ext字段再次查询数据库cmswing/ext, 这次查状态,状态为1就是开启的插件,开启后就读取钩子配置/controller/ext/{h}/hooks.js ,这里采用this.controller(上述路径),

    • 模版加载顺序
      cmswing采用nunjucks模版引擎。
    模板引擎就是基于模板配合数据构造出字符串输出的一个组件。比如下面的函数就是一个模板引擎:
    function examResult (data) {
        return `${data.name}同学一年级期末考试语文${data.chinese}分,数学${data.math}分,位于年级第${data.ranking}名。`
    }
    

    --例子来自廖雪峰大神
    主模版是index_index.html ,主模版框架来自inc_base.html,定了几个block,{% block style %} {% block content %} {% block script %} ,index_index.html 通过extends 继承后,可以拥有他的结构,同时可以重写上述block。

    可以通过 {{ username }} 来输出变量,默认输出的变量会自动转义,如果不想被转义,可以通过 {{ username | safe }} 来处理。 这种{{ ... | ...}}都是过滤器,官方内置过滤器文档:http://jinja.pocoo.org/docs/2.10/templates/#id11
    cmswing里面也自定了好多过滤器,详情在src/config/view.js

    相关文章

      网友评论

          本文标题:程序日记2018-05-09

          本文链接:https://www.haomeiwen.com/subject/kqvgrftx.html