一、说说 script 标签的几个常用属性

  1. async 表示立即下载该 js 文件,但不妨碍页面中的其他操作(只对外部 js 文件有效)
  2. defer 表示该 js 文件可以延迟到整个页面被解析并显示之后再执行(只对外部 js 文件有效)
  3. src 指定要引入的 js 文件路径
  4. typelanguage 的替代属性,表示当前脚本的类型,如 text/javascript | text/babel

二、引入 js 文件

  1. 正常引入
<script src="./js/routerList.js"></script>
  1. 省略结束标签(不符合 HTML 规范,也得不到 IE 浏览器的正确解析)
<script src="./js/routerList.js" />

注意: 带有 src 属性的 script 标签里面不应该有代码,如果有,则会被忽略

三、解决跨域问题,如 jsonp 就是利用这一点

<script src="https://www.xxx.com/xxx/xxx.js"></script>

四、script 标签的位置

  1. 按照惯例放在 head 里面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/demo1.js"></script><script src="./js/demo2.js"></script><script src="./js/demo3.js"></script>
</head>
<body>...
</body>
</html>

那按照文档解析的顺序只能将这些 js 文件,加载、解析并执行完了之后,才去呈现 body 里面的内容(延迟,导致页面一片空白)

  1. 正确的做法是
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body>...<script src="./js/demo1.js"></script><script src="./js/demo2.js"></script><script src="./js/demo3.js"></script>
</body>
</html>

这样,等页面全部加载完成再去加载 js 文件,页面显示空白的时间缩短了,用户体验也很好

  1. 延迟脚本 defer – 等待页面都加载完成之后再去加载 js 文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script defer="defer" src="./js/demo1.js"></script><script defer="defer" src="./js/demo2.js"></script><script defer="defer" src="./js/demo3.js"></script>
</head>
<body>...
</body>
</html>
  1. 异步脚本 async
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script async src="./js/demo1.js"></script><script async src="./js/demo2.js"></script><script async src="./js/demo3.js"></script>
</head>
<body>...
</body>
</html>

告诉浏览器立即下载 js 文件,defer 是等待页面加载完成之后再加载、执行,async 是先下载,等页面加载完成之后(load 事件之后),再执行

  1. noscript– 看看浏览器支不支持 js
<noscript>如果你的浏览器不支持 javascript 我就会在页面出现</noscript>

—— 《javascript 高级程序设计》

关于引入 js 文件相关推荐

  1. 运行时动态引入JS文件

    运行时动态引入JS文件(尚在开发环境) 1.添加方法 requireJSFiles export function requireJSFiles (target, pathArr) {return n ...

  2. 单独使用elementui_Vue在单独引入js文件中使用ElementUI的组件

    Vue在单独引入js文件中使用ElementUI的组件 问题场景: 我想在vue中的js文件中使用elementUI中的组件,因为我在main.js中引入了element包和它的css,并挂载到了全局 ...

  3. JSP页面中引入js文件

    1)引入的js文件出错,  检查方法:将Js的内容写在当前的页面的<script> </script>之间,看是否能够正常运行,如果不能,请核查代码  2) 如果引入的代码在当 ...

  4. Uniapp引入json文件和引入Js文件

    1.引入JSON 文件 使用require // 引入json文件 let dnf = require('@/data/person.json') json文件 {"code": ...

  5. html引入js文件

    html引入js文件 在开发中我们常常会用到全局变量,通过修改public里面的js文件去修改变量,问题是我们怎么在html中引入这个文件,使文件在整个项目中起作用尼? 代码 <script s ...

  6. JSP页面如何引入JS文件

    JSP页面如何引用js文件?_世俗的大尾巴也熊的博客-CSDN博客_jsp页面引入js文件 jsp中导入js文件_hhah1122的博客-CSDN博客_jsp引入js

  7. Vue动态引入JS文件

    引入前请先: npm install jquery 正式代码: //动态引入JS文件 function loadJavaScript(src, callback) {let script_list=$ ...

  8. 自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)

    这个插件主要是结合jquery或者xhr异步请求来使用的,它可以把已经引入过的js文件记录在浏览器内存中,当下次再引入相同的文件就忽略该文件的引入. 当你用$.load("dir/my-pa ...

  9. ts文件引入js文件_如何编写一个d.ts文件的步骤详解

    前言 本文主要讲怎么写一个typescript的描述文件(以d.ts结尾的文件名,比如xxx.d.ts). 最近开始从js转ts了.但是要用到一些描述文件(d.ts),常用的比如jquery等都可以通 ...

最新文章

  1. Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy
  2. SOL注入——HTTP头部注入(2)(七)
  3. Ubuntu实现树莓派交叉编译
  4. android 双层饼图_python:给表格加上双层饼图,让同事的图表黯然失色
  5. Tampermonkey版Vimium
  6. MDK472a(Keil4)注册不成功问题
  7. 计蒜客模拟赛D2T3 蒜头君救人:用bfs转移状压dp
  8. linux grep 日期,linux 文本处理工具之一grep命令详解
  9. 【ZookeeperDubbo系列二】Zookeeper+Dubbo集群安装配置详解
  10. cam350 不能打开光绘文件_怎么使用CAM350打开gerber文件
  11. ssm学生学籍管理系统
  12. Text file busy问题解决
  13. 老九学堂 学习 C++ 第四天
  14. 冰箱10分钟启动一次_冰箱正常多久启动一次
  15. Pyinstaller的Spec文件用法
  16. 将CAD图纸转换为黑白的PDF文件要怎么操作
  17. 3D Experience — 产品协同研发平台
  18. 【java】猜字游戏
  19. 无线服务器功能,索尼WG-C20无线服务器 功能介绍
  20. Linux学习笔记---命令篇

热门文章

  1. 嵌套字典|python_Python | 如果不是,则使用嵌套,根据销售额计算折扣
  2. hive java udf_UDF_Hive教程_田守枝Java技术博客
  3. java最接近对点及距离_最接近点对问题_分治法
  4. php面试php数组变ahp,关于PHP字符串的一道面试题
  5. 在Python中使用OpenCV裁剪图像
  6. 手机子王掩码和网关查找_C程序使用位掩码查找奇数或偶数
  7. css中的换行符_如何使用CSS防止项目列表中的换行符?
  8. MyBatis Plus 批量数据插入功能,yyds!
  9. 经典面试题|ConcurrentHashMap 读操作为什么不需要加锁?
  10. 视频人脸检测——Dlib版(六)