JavaScript的引入并执行-包含动态引入与静态引入
JavaScript的引入并执行-包含动态引入与静态引入
JavaScript引入方式
html文件需要引入JavaScript代码,才能在页面里使用JavaScript代码。
静态引入
行内式直接在DOM标签上使用<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript引入方式</title>
</head>
<body>
<div>var code = "970bb8cf-8823-46c1-8b9f-797d6c0b14a7"</div>
<div onclick="alert(1111)">行内式</div>
</body>
</html>
内嵌式写在script标签内<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript引入方式</title>
</head>
<body>
</body>
<script>
alert('内嵌式')
</script>
</html>
外链式通过script标签引入js文件<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript引入方式</title>
</head>
<body>
</body>
<script src="./index.js"></script>
</html>
与
html文件同一目录下的./index.js:alert('外链式')
动态引入
在js运行过程中,构建script标签并插入到DOM文档中,或者通过引用链接,把已经写好的js文件通过script标签并插入到DOM文档。
- 使用
原生JavaScript中提供的动态加载<script>元素的方法,可以创建<script>元素,并将其添加到HTML文档中,以动态加载JS文件或代码。添加方法可以使用
document.body.appendChild(script标签元素);document.write()如document.write('<script src="https://example.com/example.js"></script>');;
手写的js代码
const script = document.createElement("script");
script.innerHTML = 'console.log("DOM动态创建并运行脚本+预加载优化");';//这些代码可以手动写,也可以用ajax请求并使用。
document.body.appendChild(script);
引入外链js代码
setTimeout(() => {
console.log(1, window.fang);//1 undefined;
const script = document.createElement("script");
script.src = "./动态js文件.js";
document.body.appendChild(script);
console.log(2, window.fang);//2 undefined;
}, 0);
setTimeout(() => {
console.log(3, fang);//{fang: '方一'};
}, 3000);
同一目录下
动态js文件.jsconsole.log("这个就是动态js文件");
var fang = { fang: "方一" };//{fang: '方一'};
- 使用
通过
import()动态模块。- 使用
ES6中引入的import()方法动态加载JS模块,该方法可以在运行时动态地加载JS模块。引入外链js代码
async function loadJSModule() {
const module = await import("./动态js模块.js");
//console.log("module--->", module);
// 加载成功后可以使用该模块
module.fang.theFunction();//Symbol(动态js模块里的东西);
} loadJSModule();
同一目录下
动态js模块.jsconsole.log("这个就是动态js模块");//这个就是动态js模块
const theSymbol = Symbol("动态js模块里的东西");
let fang = {
fang1: "方一",
theFunction: () => {
console.log(theSymbol);
},
};
export { fang };
- 使用
使用
AJAX技术加载JS代码,可以通过XMLHttpRequest或fetch方法动态加载JS代码,并使用eval()或Function()方法执行代码。引入外链js代码
const xhr = new XMLHttpRequest();
xhr.open("GET", "./动态js文件.js");
xhr.onload = function () {
if (xhr.status !== 200) {
return;
}
eval(xhr.responseText);
//(new Function(xhr.responseText))()
console.log(3, fang); //{fang: '方一'};
};
xhr.send();
同一目录下
动态js文件.jsconsole.log("这个就是动态js文件");
var fang = { fang: "方一" };//{fang: '方一'};
JavaScript的引入并执行-包含动态引入与静态引入的更多相关文章
- 最全Windows版本jemalloc库(5.2.1)及其使用:包含动态库和静态库、x86版本和x64版本、debug版本和release版本
编写服务器程序时,需要频繁的申请和释放内存,长时间运行会产生大量的内存碎片,这就导致即使当前系统中的闲置内存还足够多,但也无法申请到大的连续可用的内存块,因为此时的物理内存已经千疮百孔像个马蜂窝.此外 ...
- vert.x学习(六),动态模板与静态文件的结合
这篇学习在动态模板里面引入css,把动态模板与静态文件结合起来使用. 编写DynamicReference.java package com.javafm.vertx.helloworld; impo ...
- 怎么样加快JavaScript加载和执行效率
概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器在下载 ...
- 加快JavaScript加载和执行效率
JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其 ...
- javascript的装载和执行
前言 为什么要采用js来create一个script标签,设置src然后append到head中,而不是直接使用script标签,这样不是更简单点吗? javascript的装载和执行 首先,我想说一 ...
- javascript从定义到执行 js引擎 闭包
javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境 栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链 ...
- 【转】JavaScript 的装载和执行
承接前面一篇文章<浏览器的渲染原理简介> ,本文来说下JavaScript的装载和执行. 通常来说,浏览器对于 JavaScript 的运行有两大特性: 1) 载入后马上执行 2) 执行时 ...
- JavaScript 从定义到执行,你应该知道的那些事
JavaScript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.执行环境.全局对象.变量对象.活动对象.作用域和作用域链等 ...
- JavaScript代码是怎么执行的?
前言 众所周知,JavaScript是单线程语言.所以JavaScript是按顺序执行的! 先编译再执行 变量提升 请看下面的例子: console.log(cat) catName("Ch ...
- [转]Javascript中的自执行函数表达式
[转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 20 ...
随机推荐
- [转帖]生产环境 TiDB 集群混合部署实践
https://tidb.net/book/tidb-monthly/2022/2022-04/usercase/tidb-cluster 一.背景 由于各种场外因素导致我们不能自由选择的理想硬件环 ...
- [转帖]文件操作之zip、bzip2、gzip、tar命令
文件操作之zip.bzip2.gzip.tar命令 原创 丁同学19902015-10-15 00:02:51博主文章分类:liunx基础著作权 文章标签linux tarlinux文件压缩linux ...
- [转帖]45个处理字符串的Python方法
https://baijiahao.baidu.com/s?id=1738413163267646541&wfr=spider&for=pc 一.题目解析 先来看一个题目: 判断用 ...
- [转帖]gcc与makefile常用操作(绝对常用,也绝对够用)
makefile与gcc常用操作 一.温故知新 1.可执行程序的生成过程 2.gcc的常用操作 二.make操作 三.编写Makefile文件时常用操作 注意:在Makefile文件中 空格和缩进是完 ...
- [转帖]【JVM】JVM概述
1.JVM定义 JVM 是Java Virtual Machine(JVM )的缩写,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令进行执行,这样实现了Java"一次编译, ...
- CentOS7 安装Oracle11g的过程.
1. 安装preinstall https://www.cnblogs.com/mjiu/ 里面有一个简单方法: cd /etc/yum.repos.d wget http://yum.oracle. ...
- 源码学习之Spring容器创建原理
1 前言 众所周知,Spring可以帮我们管理我们需要的bean.在我们需要用到这些bean的时候,可以很方便的获取到它,然后进行一系列的操作.比如,我们定义一个bean MyTestBean pub ...
- 【一文搞定】Linux、Mac、Windows安装Docker与配置教程!
目录 一.Windows 安装 1.1 安装与启用 Hyper-V 1.2 安装 WSL 1.3 Docker Desktop 官方下载 1.4 安装Docker Desktop 二.MacOS 安装 ...
- docker中的mysql时区修改
永久修改 进入容器 docker exec -it mysql5.7 bash 查看当前时区 date -R 修改时区 cp /usr/share/zoneinfo/PRC /etc/localtim ...
- 宝塔 websocket连接wss配置
https要使用wss连接,wss://xxxxx.com/wss 就转发到了 服务器内的127.0.0.1:2346服务. 具体转发可以放在 文件配置或者 伪静态里面 建议放在伪静态里面容易管理 n ...