2026-10-23 19:13:34
在 JavaScript 中调用另一个 JavaScript 文件可通过以下三种主要方法实现,具体选择取决于文件位置、运行环境和项目需求:
一、直接通过 <script> 标签引入适用场景:文件位于同一目录或可公开访问的静态资源路径,无需复杂依赖管理。实现方式:在 HTML 文件中插入 <script> 标签,通过 src 属性指定目标文件路径:
<script src="./other-script.js"></script>特点:
示例:若 other-script.js 定义了函数 showMessage(),引入后可直接调用:
showMessage(); // 直接使用全局函数二、通过 AJAX 动态加载适用场景:需要跨域获取文件,或需在运行时动态决定加载哪些脚本。实现方式:使用 XMLHttpRequest 或 fetch 异步获取文件内容,并通过 eval() 或动态创建 <script> 标签执行。
方法 1:XMLHttpRequest + eval
const xhr = new XMLHttpRequest();xhr.open("GET", "方法 2:动态创建 <script> 标签
const script = document.createElement('script');script.src = "特点:
适用场景:现代前端项目(如 React/Vue),需模块化、按需加载和依赖管理。常见模块规范:
1. CommonJS(Node.js 环境)通过 require 同步引入模块,返回模块导出对象:
// 引入模块const otherScript = require("./other-script.js");// 调用模块方法otherScript.init();特点:
通过 define 定义模块,require 异步加载:
// 定义模块(other-script.js)define([], function() { return { init: function() { console.log("模块初始化"); } };});// 加载模块require(["other-script"], function(otherScript) { otherScript.init();});特点:
通过 import/export 语法实现静态模块化:
// 导出模块(other-script.js)export function init() { console.log("模块初始化");}// 引入模块import { init } from "./other-script.js";init();特点:
AJAX 请求需目标服务器配置 CORS。
模块加载器(如 ES Modules)在本地文件系统(file:// 协议)下可能受限,建议使用开发服务器。
合并多个脚本减少 HTTP 请求。
使用 defer 或 async 属性优化 <script> 标签加载。