今天完成的事情:angularJS权威教程看了XHR实践、promise、服务器通信、测试、事件、digest循环;看了正则中零宽断言、负向零宽断言、递归匹配;
明天计划的事情:看完angularJS权威指南中剩下的,等下一周目细看;看锋利的Jquery;熟练正则的简单使用;继续做我的仿知乎小程序;如果有空学个抓包。
遇到的问题:拦截器不会写、原型类的方法和属性看不懂。Vue和React哪个更好一点?感觉Vue好像更好学,毕竟中文官方文档不用蹩脚的翻译。
收获:
www.hackerrank.com/domains/regex/re-introduction
regexper.com
浏览器兼容问题:
IE的if条件Hack
1. 〈!--[if !IE]〉〈!--〉 除IE外都可识别 〈!--〈![endif]--〉
2. 〈!--[if IE]〉 所有的IE可识别 〈![endif]--〉
3. 〈!--[if IE 5.0]〉 只有IE5.0可以识别 〈![endif]--〉
4. 〈!--[if IE 5]〉 仅IE5.0与IE5.5可以识别 〈![endif]--〉
5. 〈!--[if gt IE 5.0]〉 IE5.0以及IE5.0以上版本都可以识别 〈![endif]--〉
6. 〈!--[if IE 6]〉 仅IE6可识别 〈![endif]--〉
7. 〈!--[if lt IE 6]〉 IE6以及IE6以下版本可识别 〈![endif]--〉
8. 〈!--[if gte IE 6]〉 IE6以及IE6以上版本可识别 〈![endif]--〉
9. 〈!--[if IE 7]〉 仅IE7可识别 〈![endif]--〉
10. 〈!--[if lt IE 7]〉 IE7以及IE7以下版本可识别 〈![endif]--〉
11. 〈!--[if gte IE 7]〉 IE7以及IE7以上版本可识别 〈![endif]—〉
使用controllerAs时,可以将controller定义成JavaScript的原型类,在HTML视图中直接绑定原型类的属性和方法。可以使用更高级的ES6或者typeScript来编写controller,避开了所谓的child scope原型继承带来的一些问题。
ui-route中的resolve
resolve选项就是一个对象,其中键就是要注入到控制器中的依赖的名称,而其值就是待解析的factories,如果传入一个字符串,ui-route会尝试匹配一个现有的已注册的服务,如果传入一个函数,则注入这个函数,而函数的返回值就是依赖。如果这个函数返回一个promise,它会在控制器被实例化之前解析,同时其值会注入到控制器中。
JSON.parse用于从一个字符串中解析出json对象
JSON.stringify用于从一个对象中解析出字符串
jsonp跨域原理:通过<script>标签发起一个GET请求来取代XHR请求。JSONP生成一个<script>标签并插到DOM中,然后浏览器会接管并向src属性所指向的 地址发送请求。当服务器返回请求时,响应结果会被包装成一个JavaScript函数,并由该请求所对应的回调函数调用。
AngularJS在$http服务中提供了一个JSONP辅助函数。通过$http服务的jsonp方法可以发送请求:
$http.jsonp("https://api.github.com?callback=JSON_CALLBACK").success(function(data){});
当请求被发送时,AngularJS会在DOM中生成一个如下所示的<script>标签:
<script src="https://api.github.com?callback=angular.callbacks._0"></script>
注意,JSON_CALLBACK被替换成了一个特地为此请求生成的函数。
当支持JSONP的服务器返回数据时,数据会被包装在AngularJS生成的具名函数angular.callbacks._0中。
响应看起来如下所示:
angular.callbacks._0({
'meta':{
'X-RateLimit-Limit':'60',
'status':200
},
'data':{
'current_user_url':'https://api.github.com/user'
}
})
当AngularJS调用指定的回调函数时会对$http的promise对象进行resolve
零宽断言 | (?=exp) | 匹配exp前面的位置 |
---|
(?<=exp) | 匹配exp后面的位置 |
(?!exp) | 匹配后面跟的不是exp的位置 |
(?<!exp) | 匹配前面不是exp的位置 |
评论