javascript读书随笔2
2.1 require.js与AMD规范
require.js是一种支持AMD规范,是一种能将web前端变成模块化编程的框架,其中最重要的两个函数为require和define。define是开发者开发的方法,require是模块试用者关心的方法。
AMD规范即异步模块定义。
2.2加载器所在路径探知
补充知识点1:window.error简单解析
在javascript中也存在try-catch语句,在window.error中会传给error三个参数,第一个为message,是我们在throw new error中可以自行添加,也可以是系统自动给出。第二个参数为scriptURI,第三个参数为lineNumber,即你发生错误的代码的文件路径和代码行数。
如果在window.onerror绑定一个函数,然后改函数返回一个true浏览器将不会在状态栏中提示错误;默认返回false;
补充知识点2:js文件的加载解析
以我们已知的知识我们知道,所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。至到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。然而更加深入的理解js解析时,我们可以将js分为嵌入式和外部调用式的
嵌入式js:在js程序执行完之前,js会阻塞所有内容的呈现。
引入式js:js只会阻塞在其后的内容呈现。
番外篇:css文件,图片文件等都是可以并行下载的,但是如果其后有段js代码,它将会以js代码为分割线完成js代码前的下载,再进行后面的文件下载。
根本原因:因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。
推荐的一些方法:
1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。
2、如果嵌入JS放在head中,请把嵌入JS放在CSS头部。
3、使用defer
4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用setTimeout来调用 //其实是将它放入事件队列
补充知识点3:在ie下node.getAttribute的第二个参数含义
在ie下node,getAttribute具有第二个参数
0 --------- 默认为0,执行一个大小写不明感的属性查找,当属性存在返回一个修改的属性
1 --------- 执行一个大小写敏感的属性查找。大写字母和小写字母必须完全比配节点属性名
2 --------- 返回一个string类型的属性值,第二个参数为2对事件属性不起效果
4 --------- 返回一个完整的URL属性,这支队URL属性有效
function getBasePath(){ //请看补充知识点1 try{ a.b.c(); }catch(e){ if(e.fileName){ //firefox return e.fileName }else if(e.sourceURL){ //safari return e.sourceURL; } } /* 理解下一段,请先看补充知识点2 */ var nodes=document.getElementsByTagName("script") if(window.VBArray){ //ie678识别方法 例如!-[1,] for(var i=nodes.length,node;node=nodes[--i]){ if(node.readyState==="interactive"){ // break; } } }else { node=nodes[nodes.length-1]; } var src = document.querySelector ? node.src:node.getAttribute("src",4); //请看补充知识点3 return src; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。