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 ...
随机推荐
- 如何给所有的 await async 函数添加try/catch?
如何给所有的 await async 函数添加try/catch?做全局捕获异常. 面试官:如何给所有的 await async 函数添加try/catch?做全局捕获异常. 我们可以使用 windo ...
- js递归根据父级id获取所有的子节点
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 震惊p div 标签 可以编辑高度随内容的编辑而发生变化
震惊p标签可以编辑高度随内容的编辑而发生变化### 1==>只可编辑,粘贴复制字段长度不正常 <p contenteditable="true" >这是一个可编辑 ...
- C# 输入指定日期获取当前年的第一天 、当前年的最后天、某月的第一天 、某月的最后一天
方法 /// <summary> /// 取得当前年的第一天 /// </summary> /// <param name="datetime"> ...
- VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等
VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答.图文匹配.图片分类.常识推理等 多模态预训练模型通过在多种模态的大规模数据上的预训练,可以综合利用来自不同模态的信息,执行各种 ...
- 在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升
在数据增强.蒸馏剪枝下ERNIE3.0模型性能提升 项目链接: https://aistudio.baidu.com/aistudio/projectdetail/4436131?contributi ...
- 【五】强化学习之Sarsa、Qlearing详细讲解----PaddlePaddlle【PARL】框架{飞桨}
相关文章: [一]飞桨paddle[GPU.CPU]安装以及环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简 ...
- C++ Qt开发:运用QJSON模块解析数据
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QJs ...
- 8.2 Windows驱动开发:内核解锁与强删文件
在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理是通过调用ObSet ...
- 设计模式-2 简单工厂模式Factory Method
设计模式-2 简单工厂模式 1 意图: 定义一个用户创建对象的接口,让子类决定实例化那个类.Factory Method使一个类的实例化延迟到其子类 使用场景:将一个类的实例化延迟到其子类结构: 优缺 ...