基本用法

在 HTML 中使用 <script> 元素引入 Javascript , <script> 有以下 4 个常用属性:

  • async: 异步加载,只对外部脚步有效。
  • defer: 规定是否对脚本执行进行延迟,直到页面加载为止。如果脚本不会改变文档的内容,可将 defer 属性加入到 <script> 标签中,以便加快处理文档的速度,同样只对外部脚步有效。
  • src: 引入外部脚本文件.
  • type:规定脚本的 MIME 类型。

MIME :多用途Internet邮件扩展(MIME,Multipurpose Internet Mail Extensions)类型 是一种标准化的方式来表示文档的性质和格式。 MIME 类型由两部分组成:媒介类型和子类型。对于 JavaScript,其 MIME 类型是 "text/javascript"。

以上四个常用的属性,只有 type 是必选的,其他的都是可选。如果要通过引入外部脚本, 那么 src 属性是必需的。

<script type="text/javascript">

function sayScript(){
alert('Hell Word')
} </script>

嵌入代码和外部文件

嵌入代码就是写在 <script> 标签内部的代码,比如:

<script type="text/javascript">

function sayScript(){
alert('Hell Word')
} </script>

而外部文件则是通过 src 属性进行引入的,比如:

<script src='./hello.js' type="text/javascript"></script>

外部文件相比直接嵌入代码,有以下优点:

  • 可维护,写在专门管理 JS 的文件夹下,开发人员能专心对付 JS 。
  • 可缓存,如果有两个 HTML 引入同一个 JS 文件,就可以只让浏览器下载一次,起到缓存的作用。

但是,外部文件有它的缺点,就是外部文件如果在我们的控制范围之外,容易遭受攻击。比如,引用一个心怀不轨的人开发的组件,被他修改起来是相当容易的。

脚本解析的顺序

1.传统做法:将外部文件放在 标签中,页面等到 JavaScript 文件加载完毕,遇到 标签才开始加载页面。

<!DOCTYPE html>
<html lang="en">
<head>
<title>KurryLuo 的个人站</title>
<script src="index.js"></script>
</head>
<body>
//主体内容
</body>
</html>

2.比较取巧的办法:将 JavaScript 代码放到 中,用户会因为看到了仅仅加载了空白的页面就会感觉到页面打开变快了。

<!DOCTYPE html>
<html lang="en">
<head>
<title>KurryLuo 的个人站</title>
</head>
<body>
<script src="index.js"></script>
//主体内容
</body>
</html>

3.手动延迟加载:在 <script> 标签中加入 defer 属性,作用是让页面加载完毕后再加载 JavaScript 文件。 defer 的意思就是“推迟”,光看字面上的意思就能理解。

<!DOCTYPE html>
<html lang="en">
<head>
<title>KurryLuo 的个人站</title>
<script src="index.js" defer="defer"></script>
</head>
<body>
//主体内容
</body>
</html>

4.异步脚本:HTML5 给 <script> 标签定义了 async 属性,这个属性和 defer 的作用类似,不同的是, defer 一般是按照 <script> 的排列顺序执行加载的,而 async 不按套路走。

<!DOCTYPE html>
<html lang="en">
<head>
<title>KurryLuo 的个人站</title>
<script src="index1.js" defer="defer"></script>
<script src="index2.js" defer="defer"></script>
</head>
<body>
//主体内容
</body>
</html>

上面代码中的 index2.js 可能比 index1.js 先加载,所以两者之间最好不要有任何联系,比如复用组件。同时,这两个脚步在加载时,也尽量不要修改 DOM 节点。


欢迎大家关注微信公众号:可视化技术( visteacher )

不仅有前端和可视化,还有算法、源码分析、书籍相送

个人网站:http://blog.kurryluo.com

各个分享平台的 KurryLuo 都是在下。

用心学习,认真生活,努力工作!

学习 JavaScript(二)在 HTML 中使用 JS的更多相关文章

  1. JavaScript:学习笔记(1)——在HTML中使用JS

    在HTML中使用JavaScript <script>元素 1.直接在网页中嵌入JS代码 说明: 请不要在代码的任何地方出现</script>字符串 这是由于解析嵌入式代码的规 ...

  2. 轻松学习JavaScript二十七:DOM编程学习之事件模型

    在介绍事件模型之前,我们先来看什么是事件和什么是event对象. 一事件介绍 JavaScript事件是由訪问Web页面的用户引起的一系列操作,使我们有能力创建动态页面.事件是能够被 JavaScri ...

  3. MVC学习随笔----如何在页面中添加JS和CSS文件

    http://blog.csdn.net/xxjoy_777/article/details/39050011 1.如何在页面中添加Js和CSS文件. 我们只需要在模板页中添加JS和CSS文件,然后子 ...

  4. Spring学习(二)——Spring中的AOP的初步理解[转]

      [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...

  5. Spring学习(二)——Spring中的AOP的初步理解

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

  6. Java学习笔记二十:Java中的内部类

    Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...

  7. 深入学习JavaScript(二)

    函数表达式和函数声明 函数声明 function 函数名(参数){函数体} 函数表达式 function 函数名(可选)(参数){函数体} 示例: function foo(){} // 声明,因为它 ...

  8. JavaScript二维码生成——qrcode.js

    在开发中,有时候,我们需要根据不同的内容来动态生成二维码,则可以使用qrcode.js这个小插件来实现. 1.qrcode.js文件内容: (1)未压缩(qrcode.js): /** * @file ...

  9. nodejs学习(二) ---- express中使用模板引擎jade

    系列教程,上一节教程  express+nodejs快速创建一个项目 在创建一个项目后,views目录下的文件后缀为 .jade . 打开 index.jade,具体内容如下图(忽略 header.j ...

  10. 学习javaScript必知必会(1)~js介绍、函数、匿名函数、自调用函数、不定长参数

    一.简单了解一下JavaScript(js) 1.什么是js? js:是网景公司开发的,是基于客户端浏览器, 面向(基于)对象.事件驱动式的页面脚本语言. 2.什么场景下使用到js? 表单验证.页面特 ...

随机推荐

  1. Beta 冲刺day 6

    1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:在导入导出方面遇到了困难,导出的文件不能直接导入. 今天解决的进度:完成了登录页面的背景设计,并再次测试了整个系统的功能. 明天要做的事 ...

  2. C++内存深入理解

    转载地址:http://www.cnblogs.com/DylanWind/archive/2009/01/12/1373919.html 前部分原创,转载请注明出处,谢谢! class Base  ...

  3. 团队项目第二阶段个人进展——Day5

    一.昨天工作总结 冲刺第五天,找到了一个专门的提供后端数据服务的网站:leancloud,并学习了相关操作 二.遇到的问题 对leancloud的数据如何请求和响应不懂 三.今日工作规划 深入学习le ...

  4. VS2010+OpenMP的简单使用

    OpenMP是把程序中的循环操作分给电脑的各个CPU处理器并行进行.比如说我要循环运行100次,我的电脑有两个处理器,那OpenMP就会平均分给两个处理器并行运行,每个处理器运行50次.使用方法 1. ...

  5. linux 用户空间与内核空间——高端内存详解

    摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对 ...

  6. springboot中logback打印日志

    http://blog.csdn.net/fan510988896/article/details/54409790

  7. 【转】利用 force index优化sql语句性能

    今天写了一个统计sql,在一个近亿条数据的表上执行,200s都查不出结果.SQL如下: select customer,count(1) c from upv_** where created bet ...

  8. 如何离线安装python的whl库

    对于使用公司内网环境办公的人来说,可能无法使用pip install 命令安装python的whl库.对于这种情况,我们可以用以下的方法安装一个whl库. 1 下载whl文件,下载时注意,whl文件的 ...

  9. 静态资源压缩(GZIP) 专题

    1.开GZIP有什么好处?答:Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度.Tips:如果网站的用户分布比较分散,并且静态文件过大,可以将 ...

  10. 产品 vs 服务,见识,耐心

    站在空无一人略有冷意的街头,突然有种恍如隔世的感觉:这就是传说中橘生淮北则为枳的淮北?咦,我为什么会出现在这里? 于是我陷入了深深的思考. 关于对过去的思考 托尔斯泰说过:幸福的家庭是相似的,不幸的家 ...