当前位置: 首页 > news >正文

JavaScript的引入并执行-包含动态引入与静态引入

JavaScript的引入并执行-包含动态引入与静态引入

JavaScript引入方式

html文件需要引入JavaScript代码,才能在页面里使用JavaScript代码。

静态引入

  1. 行内式 直接在DOM标签上使用

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>JavaScript引入方式</title>
    </head>
    <body><div onclick="alert(1111)">行内式</div>
    </body>
    </html>
    
  2. 内嵌式 写在script标签

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>JavaScript引入方式</title>
    </head>
    <body>
    </body><script>alert('内嵌式')</script>
    </html>
    
  3. 外链式 通过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('外链式')
    

动态引入

  1. 在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文件.js

        console.log("这个就是动态js文件");
        var fang = { fang: "方一" };//{fang: '方一'};
        
  2. 通过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模块.js

        console.log("这个就是动态js模块");//这个就是动态js模块
        const theSymbol = Symbol("动态js模块里的东西");
        let fang = {fang1: "方一",theFunction: () => {console.log(theSymbol);},
        };
        export { fang };
        
  3. 使用AJAX技术加载JS代码,可以通过XMLHttpRequestfetch方法动态加载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文件.js

      console.log("这个就是动态js文件");
      var fang = { fang: "方一" };//{fang: '方一'};
      
http://www.lryc.cn/news/22755.html

相关文章:

  • 第四阶段01-酷鲨商城项目准备
  • Uncaught ReferenceError: jQuery is not defined
  • 面试阿里测开岗,被面试官针对,当场翻脸,把我的简历还给我,疑似被拉黑...
  • 2. 驱动开发--驱动开发环境搭建
  • 《数据库系统概论》学习笔记——第四章 数据库安全
  • 山洪径流过程模拟及洪水危险性评价
  • LeetCode HOT100 (23、32、33)
  • 电力监控仪表主要分类
  • 山野户外定位依赖GPS或者卫星电话就能完成么?
  • SAP 应收应付重组配置
  • 算法练习(八)计数质数(素数)
  • 用反射模拟IOC模拟getBean
  • 【Ap AutoSAR入门与实战开发02】-【Ap_s2s模块01】: s2s的背景
  • C语言数据结构(3)----无头单向非循环链表
  • Android 实现菜单拖拽排序
  • 通过window.open打开新的页面并修改样式添加内容
  • Java中 Synchronized 的用法
  • Rust语言的基本介绍
  • 新冠小阳人症状记录
  • SQL零基础入门学习(十四)
  • Excel工作表不能移动或复制?看看是不是这两个原因
  • 利用递归实现括号匹配
  • 14.线程数量怎么制定?
  • C++中STL标准模板库学习记录
  • 《数据库系统概论》学习笔记——第六章 关系数据理论
  • Odoo | Webserivce | 5分钟学会【JSONRPC】接口开发
  • 搜广推 NeuralCF - 改进协同过滤+矩阵分解的思想
  • dbever连接kerberos认证的hive
  • pom依赖产生的各种问题
  • RPC编程:RPC框架设计目标