在create-react-app
项目中使用公共文件夹(通常是public
文件夹)中的脚本,可以通过以下几种方式实现:
create-react-app
是一个用于快速搭建React应用的脚手架工具,它提供了一个public
文件夹,用于存放不需要经过Webpack处理的静态资源,如图片、字体文件等。这些文件在构建过程中会被复制到输出目录(通常是build
文件夹)的根目录下。
public
文件夹中,可以简化资源的管理和维护。public
文件夹中的内容会被自动复制到输出目录,无需手动操作。<link>
标签引入。在public/index.html
文件中,你可以直接通过<script>
标签引用public
文件夹中的脚本文件。
<!DOCTYPE html>
<html lang="en">
<head>
<!-- ... 其他头部信息 ... -->
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!-- 引用公共文件夹中的脚本 -->
<script src="%PUBLIC_URL%/scripts/myScript.js"></script>
</body>
</html>
如果你需要在JavaScript代码中动态引用公共文件夹中的脚本,可以使用环境变量process.env.PUBLIC_URL
。
const scriptUrl = `${process.env.PUBLIC_URL}/scripts/myScript.js`;
const script = document.createElement('script');
script.src = scriptUrl;
document.head.appendChild(script);
原因:可能是路径错误或者构建过程中文件未被正确复制。
解决方法:
%PUBLIC_URL%
或process.env.PUBLIC_URL
正确指向了公共文件夹。npm run build
重新构建项目,确保文件被正确复制。假设你在public/scripts
文件夹中有一个名为myScript.js
的脚本文件,以下是如何在React组件中动态加载它的示例:
import React, { useEffect } from 'react';
function App() {
useEffect(() => {
const scriptUrl = `${process.env.PUBLIC_URL}/scripts/myScript.js`;
const script = document.createElement('script');
script.src = scriptUrl;
script.async = true;
document.head.appendChild(script);
// 清理函数
return () => {
document.head.removeChild(script);
};
}, []);
return (
<div className="App">
<h1>Hello, World!</h1>
</div>
);
}
export default App;
通过以上方法,你可以在create-react-app
项目中有效地使用公共文件夹中的脚本文件。
领取专属 10元无门槛券
手把手带您无忧上云