海珠营销型网站建设公司,山东城建建设职业学院教务网站,wordpress建站属于前端,有没有类似wordpress该面试题主要考察的是程序的性能方面。性能优化的核心思想就是快#xff0c;常见的优化手段有预先准备数据#xff08;如缓存#xff09;#xff0c;按需获取#xff0c;分段、异步获取等 由于JavaScript的阻塞特性#xff08;单线程运行#xff09;#xff0c;在每一个… 该面试题主要考察的是程序的性能方面。性能优化的核心思想就是快常见的优化手段有预先准备数据如缓存按需获取分段、异步获取等 由于JavaScript的阻塞特性单线程运行在每一个head
//脚本1
script defer srcjs/vendor/jquery.js/script
//脚本2
script defer srcjs/script2.js/script
//脚本3
script defer srcjs/script3.js/script
/head动态添加脚本元素 优点无论这段脚本是在何时启动下载它的下载和执行过程都不会阻塞页面的其他进程我们甚至可以直接添加到头部head标签中都不会影响其他部分。 通过这种方式下载文件后代码就会自动执行。但是在现代浏览器中这段脚本会等待所有动态节点加载完成后再执行。这种情况下为了确保当前代码中包含的别的代码的接口或者方法能够被成功调用就必须在别的代码加载前完成这段代码的准备 解决的具体操作思路是现代浏览器会在script标签内容下载完成后接收一个load事件我们就可以在load事件后再去执行我们想要执行的代码加载和运行在IE中它会接收loaded和complete事件理论上是loaded完成后才会有completed但实践告诉我们他两似乎并没有个先后甚至有时候只会拿到其中的一个事件我们可以单独的封装一个专门的函数来体现这个功能的实践性 function LoadScript(url, callback) {var script document.createElement(script);script.type text/javascript;// IE浏览器下if (script.readyState) {script.onreadystatechange function () {if (script.readyState loaded || script.readyState complete) {// 确保执行两次script.onreadystatechange null;// todo 执行要执行的代码callback()}}} else {script.onload function () {callback();}}script.src file.js;document.getElementsByTagName(head)[0].appendChild(script);}使用setTimeout延迟方法的加载时间script typetext/javascript function A(){$.post(/lord/login,{name:username,pwd:password},function(){alert(Hello);});}$(function (){setTimeout(A(), 1000); //延迟1秒})
/scriptXMLHttpRequest脚本注入动态添加script标签 优点1可以控制脚本是否要立即执行。因为我们知道新创建的script标签只要添加到文档界面中它就会立即执行因此在添加到文档界面之前也就是在appendChild()之前我们可以根据自己实际的业务逻辑去实现需求到了想要让它执行的时候再appendChild()即可2它的兼容性很好所有主流浏览器都支持它不需要像动态添加脚本的方式那样我们自己去写特性检测代码。 缺点由于是使用了XHR对象获取这种资源有“域”的限制。资源必须在同一个域下才可以不可以跨域操作。 var xhr new XMLHttpRequest();
xhr.open(get,test.js,true);
xhr.onreadystatachange function(){if(xhr.readyState 4){// 表示响应已经完成可以获取并使用服务器的响应了if(xhr.state 200 xhr.state 300 || xhr.state 304){//200表示成功/OKvar script document.createElement(script);script.type text/javascript;script.text xhr.requestText;document.body.appendChild(script);}}
}补充方法XHR.readyState的五种状态
XHR.readyState 状态01234
0请求未初始化还没有调用 open()
1请求已经建立但是还没有发送还没有调用 send()
2请求已发送正在处理中通常现在可以从响应中获取内容头
3请求在处理中通常响应中已有部分数据可用了没有全部完成
4响应已完成可以获取并使用服务器的响应了补充方法XHR.status常见的几种状态
XHR.status 200300404
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
200——成功
201——提示知道新文件的URL
300——请求的资源可在多处得到
301——删除请求数据
404——没有发现文件、查询或URl
500——服务器产生内部错误 index.php总结
JS延迟加载的方式有
1为script标签添加defer和async属性
2动态添加脚本元素
3使用setTimeout延迟方法的加载时间
4XMLHttpRequest脚本注入动态添加script标签