加载js时,很容易导致js的堵塞,该怎么处理?

JavaScript026

加载js时,很容易导致js的堵塞,该怎么处理?,第1张

无阻塞加载js

浏览器加载静态资源和js的方式都是线性加载,所以一般情况可以将js放到</body>前,防止UI线程的阻塞。

而某些时候我们既希望js在整个网页的头部就加载,又担心js阻塞导致网站加载缓慢,就可以用到无阻塞加载js技术。

Dynamic Script Elements 动态脚本元素

DOM允许我们使用Javascript动态创建HTML的几乎所有文档内容,一个新的<script>元素可以非常容易的通过标准DOM创建:

var script = document.createElement ("script")script.type = "text/javascript"script.src = "file1.js" document.body.appendChild(script)

新的<script>元素加载file1.js源文件。此文件当元素添加到页面后立刻开始下载。此技术的重点在于:无论在何处启动下载,文件的下载和运行都不会阻塞其他页面处理过程。

当文件使用动态脚本节点下载时,返回的代码通常立即执行(除了Firefox和Opera,它们将等待此前的所有动态脚本节点执行完毕)。

大多数情况下,我们希望调用一个函数就可以实现Javascript文件的动态下载。下面的函数封装实现了标准实现和IE实现:

function loadScript(url, callback){ var script = document.createElement ("script")   script.type = "text/javascript" if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null callback() } } } else { //Others script.onload = function(){ callback() } } script.src = url document.getElementsByTagName("head")[0].appendChild(script) } loadScript("file1.js", function(){ //调用 alert("File is loaded!") })

此函数接受两个参数:Javascript文件的Url和一个当Javascript接收完成时触发的回调函数。属性检查用于决定监视哪种事件。最后一步src属性,并将javascript文件添加到head。

动态脚本加载是非阻塞Javascript下载中最常用的模式,因为它可以跨浏览器,而且简单易用。

页面要想实现好的互动性Java是必不可少的,特别是在一些网站专题页面对于互动性要求更高,中级和高级web前端工程师js是必须要掌握的,下面为大家详细介绍一下Java。

虽然仍有一些人对 Java 的批评特别是对Java 用于后端任务心存疑虑,但这些并不妨碍Java成为广泛用于客户端的语言,成为前端开发必不可缺少的工具。Java和html一样都是客户端(浏览器执行)的语言,通常Java脚本是通过嵌入在HTML中来实现功能的。

下面为大家介绍java的特点:

1、java是一种解释性脚本语言不进行预编译,而c、c++等编程语言都是先编译后执行,java是逐行解释运行的。

2、基于对象的语言,它不仅可以创建对象,也能使用现有的对象。

3、以嵌入HTML页面,也可写成单独的js文件。

4、多平台运行,在大部分浏览器浏览器的支持下,可以在多种平台下运行比如Android、iOS等。

那么,怎么才能在js领域内学的轻松甚至游刃有余呢?我总结了一些实战意义的js学习经验:

首先要紧紧抓住它的地位

时刻都不能忘记,否则很容易犯“一叶障目不见泰山”的错误。

不要学了很久就知道js是编程语言,就是写代码、而且特点就是乱七八糟就完了,那样是学不好js的。

要时时抓住它的地位,确切的说是它在整个WEB中的地位:它属于前端的核心,主要用来操控和重新调整DOM,通过修改DOM结构,从而来达到修改页面效果的目的。

要用这个中心思想去指导后续的一切js的学习,并且形成条件反射。

要有一条清晰的学习路线

这个只能是过来人给你提供参考了。

我的学习路线如下:

A:js基础部分,如:定义变量、函数、数组、字符串等的处理,内置函数、内置对象等。

B:js面向过程编程思想,封装出各个函数,试着用这些去做一些常见的小功能,如:选项卡,自定义多选按钮,自定义播放器,3D幻灯片;

C:js面向对象编程思想,试着去封装一些你自己的对象,提供出有意义的接口出来;

D:学了上述的内容,然后学常用的库,这里必须学jquery

E:学基于Jquery之上的常见插件,如:bootstrap,Layer,富文本编辑器等。

F:综合应用上面的多种库写实际项目的模板,多写几套。

注意学习方法

我的学习方法总结如下:

A:多买几本国外的js书籍,不要购买那种20天精通之类的书。

否则你是很难学通的,更怕的是:本来你买本好书自学3个月可能学会的,它们硬是能折腾你两年......

书籍推荐(仅供参考)

《Java DOM编程艺术》

《Java权威指南》

《java DOM高级程序设计》

《Java设计模式》

《锋利的jquery》

争取把书上的功能都自己练习多次,不是一次。书读百篇,其义自见。

B:从多角度去学习和领悟

充分调动你所学的东西,从多角度的去做某一功能,如:以前你是从面向过程角度做的,

现在改为从面向对象的角度再来做,或者继续做成可以直接使用的插件,提供属性、方法等出来。争取让你做的这个功能逐渐能使用到实际项目中来。

这样的好处:既综合应用了你的所学,又能有实际意义。

C:一定不要好高骛远

不要放过哪怕很小的动手机会,如做一个选项卡。

千万不要认为有了类似的甚至更好的插件就不需要自己写了,知识是别人的,不是你的,你即使会用了也对你的技术技能水平没有任何提升。

你要多问自己,如果要我来做,我该怎么做?

D:脚踏实地的同时,也不要脱离实际

多看现在网上已经出现的效果好的功能,让它去激发你的学习热情,尽量去学着模拟,调动你的知识去和实际相结合。

E:多写总结

这种总结不但包括源代码、显示效果截图,还应该很容易犯的错误和对应的解决方法以及最后一两句精简的结论性语句。

对自己写的总结不是写完了就了事了,要多回顾,多改进,多精简。到做项目的时候,应该是看里面的一两句话就知道是讲什么了,而不要再去看长篇大论了。

F:构建知识导图

这个可以让你越学越清晰,比如:http://www.phpkhbd.com/sky.html,你可以按你喜欢的任何形式去做,只要自己印象深刻就行。

注意:知识导图也应该是经常修改、修正,让它更合理、更清晰。

注意事项

A:充分利用一切手段

很多人总感觉时间紧,没有大块的时间学习。我要说你不会学了,你不应该只是抱怨,而是要利用一切手段去学习,要知道,不一定只有看书才叫学习。

当你冷静的坐在某个地方,思考了一下,总结了一下,你也都叫学习,但凡有灵感,就可以记录下来,比如:记录在手机上,等方便了再记录在专门的地方。这都叫学习。

B:贵在坚持

要沉的下心。没有一蹴而就的成功,否则那也不是成功,只能叫“侥幸”。

不但要老老实实的把每个功能都试着去实现,而且要精益求精的不断去修正,这个过程是漫长的,也是考验一个人是否是人才的标准。

C:注意培养信心

此时的你,不适合一来就看很复杂很炫的网页效果的源代码,也不适合一来就学jquery,angular,vue,bootstrap这些东西。

这些内容包含了很多深奥的知识在里面,在没有任何基础的情况下直接学这些,会严重打击你的自信心。

而此时你是弱小的,你需要的是培养信心,而不是反过来,否则结局很可能是“夭折”,离学有所成也就遥遥无期了。

D:多跟学的好的过来人学习

站在巨人的肩上,才能看的更远。

E:不要浪费在工具的不停选择上

js的编辑工具很多,如果无从下手,建议使用:sublime,或者使用Hbuilder;很多公司里的技术人员都用这些,你直接用这个也减少了和别人之间的沟通问题。

我也是用这个,感觉很好。

总结

感觉js学起来“杂而乱”的原因是因为你太“聪明”了,一开始就管的太宽,利害得失也计算的太精细。

要求太完美则心里承受能力下降,很容易出现“障”。此时,你应该“笨”一些,不要考利那么长远,“傻人有傻福”,只要做好今天就够了。

一些不合理的学习方法和心态也让你迷失了自我:如:心浮气躁、眼高手低、好高骛远,这些都会让你在“乱七八糟”的js面前深陷迷雾、不能自拔。

此时,你应该重新定位自己的位置,重新去认识js,放下包袱,方能轻松上阵。把杯子先倒空,才能灌新水......

其实,js是前端的核心。影响越来越深的互联网+会渴求越来越多的js人才,只有经历过真正刻骨铭心的学习经历,才能造就出赢得未来的真正精英。

1. 在HTML里面加入JavaScript;方法非常简单,就是通过一对标签,然后在标签里面书写代码即可;2. 标签位置;按照以前传统的方法,我们的script标签都是放在head标签里面的。但是由于浏览器进行渲染的时候是由上往下进行渲染,这样会导致浏览器在呈现页面的时候出现延迟。延迟的时候就是空白,影响用户体验。所以现在的方法,都是讲script标签写body里面,元素的后面。;3. 外部JS文件;1)可维护性高;2)可缓存:例如有两个HTML文件(A,B)都是用的同一个JS文件。当用户请求A页面的时候,A页面的HTML文件和JS文件一起被下载到本地。接下来用户再请求B页面的时候,只需要下载B页面的HTML页面即可,因为JS文件已经有了。4. JavaScript语法;1)JavaScript区分大小写test和Test表示不同变量2)标识符;JavaScript里面的标识符由数字,字母,下划线(_)和$组成,不能以数字开头3)注释:JavaScript注释有两种:多行注释和单行注释