LingYanSi / blog

博客
https://github.com/LingYanSi/blog/issues
9 stars 0 forks source link

学习计划 #8

Open LingYanSi opened 9 years ago

LingYanSi commented 9 years ago

没有目的性的学习,效率不太高。 需要系统性的深入学习

LingYanSi commented 9 years ago

canvas画二维码

LingYanSi commented 9 years ago

写一个js模版引擎

业内的话arttemplate应该还不错

简单的模版引擎已经实现,代码如下

rendeTpl: function(template,obj) {
    // template进来后,需要解析,简单一点的花就是匹配{{}}
    // 然后将花括号内的变量替换为字符串?
    var arr1 = template.split(/\{{2}[^\}\{}]+\}{2}/); // 把字符串按{{xxxx}} split成数组
    var arr2 = template.match(/\{{2}[^\}\{}]+\}{2}/g); // 匹配所有{{xxxx}}
    var str = arr1.map(function(ele,index,arr){
        var str = '' ;
        if(arr2[index]){
            var arr3 = arr2[index].replace(/[\{\}]/g,'').split('.').slice(1);
            var obj_1 = obj ;
            for(var i=0,len=arr3.length;i<len;i++){
                obj_1 = obj_1[arr3[i]] ;
            }
            str = obj_1 ;
        }
        return ele+str ;
    }).join('');
    return str ;
}

以上,并不能执行逻辑,只是简单的解析、赋值

LingYanSi commented 9 years ago

Reactjs学习

简单的todomvc已经实现,但还是太简单了

LingYanSi commented 9 years ago

vue.js学习

关于webpack vue-loader那一套

LingYanSi commented 9 years ago

数据驱动的实现

所谓数据驱动,就是在数据发生变化的时候,可以被监听到,然后就可以做一些事情,比如说dom渲染,以及请求服务器做CURD等

实现方法

1.自己创建一个对象,但是属性的改变不是通过object.property改变的,而是通过其他途径,其代表为backbone 2.使用Object.defineProperty(property,desp),覆盖默认的属性定义,获取属性的getter,setter方法,自定义其行为,其代表为vue.js 3.使用Object.observe(),es7标准,大部分浏览器都不支持

综上,使用Object.defineProperty来实现是比较合适的