Commit 1 - 5:text、show、class、on等简单指令的实现

Commit 5: dump, destroy, fix filters

  • 主要改动:添加了一个大写的过滤器

Commit 4: filter value should not be written

  • 主要改动:
    1. bindings变量改为原型属性_bindings
    2. 增加了2个Seed的原型方法
      • dump():复制一份bindings
      • destroy():移除el上的事件
    3. 当需要过滤时,仍保存之前的值(之前会直接用过滤后的值覆盖掉原来的赋值)

Commit 3: naive implementation

  • 主要改动:实现了sd-前缀的指令(sd-textsd-showsd-classsd-on)

  • 怎么使用?

    具体思路与现在现在的 Vue 相差并不多,示例(就是dev.html):

    YOYOYO

    var Seed = require('seed')
    var app = Seed.create({
        id: 'test',
        // template
        scope: {
            msg: 'hello',
            hello: 'WHWHWHW',
            changeMessage: function () {
                app.scope.msg = 'hola'
            }
        }
    })
    

    用过 Vue 的人一定会觉得这个模式很熟悉,比如sd-text可以对应v-text。当我们知道这个指令有什么功能后,再去思考如何实现这个功能就会比较简单。因此虽然已经有点久远,但是还是推荐每个commit都对应着官网的文档看。

  • 原理:

    1. 思路与commit2类似。将页面中需要的变量如(msg),以及这个变量控制哪个节点、该变量发生改变时节点需要进行什么变化等等存储在bindings中。
    2. 给Seed实例中的响应属性修改get、set,使其与bindins连接起来
  • dev.html的执行过程

    Commit 1 - 5:text、show、class、on等简单指令的实现_第1张图片
    commit3.png
  • 总结

    commit3总结.png

Commit 2: rename

  • 主要改动:实现了诸如{{ msg }}形式的模板语法

  • 原理:

    1. 页面和对象通过bindings联系
    2. 通过set实现自动修改
    Commit 1 - 5:text、show、class、on等简单指令的实现_第2张图片
    Commit2.png
  • 代码实现

    1. getset.html

      
      
          
             ideal
             
         
         
             

      {{msg}}

      {{msg}}

      {{msg}}

      {{what}}

      {{hey}}

Commit 1: initial setup

  • 主要改动:初始化

  • 备注:代码中有很多配置文件,其中很多是比较旧的工具了,所以这一部分不做深入研究了

你可能感兴趣的:(Commit 1 - 5:text、show、class、on等简单指令的实现)