是否可以使用公共文件夹中的 create-react-app 提供静态文件?

IT技术 javascript reactjs import static
2021-04-11 12:55:13

基本上我为客户制作了一个(相对)简单的应用程序。该应用程序工作正常,但他们一直要求更改数据。

鉴于应用程序最初预期的简单性以及它保存静态数据的事实,我没有将它链接到任何后端。数据位于本地静态文件中,对象保存数据。

问题是 fle 被捆绑到 buld 中,所以如果我只想更改一些静态数据而不必 rbuild,我不能!

我的数据文件可以在公共文件夹中访问资产,并且这些资产运行良好。我试图用 js 文件实现同样的想法。

我无法从 /src 文件夹外部导入。

有没有办法可以从以某种方式添加到构建中的静态文件夹中访问静态数据?

2个回答

是的,您可以将资产放置在静态文件夹中。

文档:使用公共文件夹

  • 您可以index.html使用%PUBLIC_URL%/path/resource.
  • 您可以process.env.PUBLIC_URL + '/path/resource'在 javascript 代码中使用

这两种方法在最终构建的构建时都会被替换。

如果这些是 javascript 资产,构建将不会意识到它们。您需要将其构建为外部 javascript 库并将它们存储在您可以在代码中引用的全局变量中。然后你可以在你的index.html

谢谢,我现在已经阅读了文档,那时应该可以,但我似乎无法让它工作。我需要在几个 js 文件中导入这些数据。到目前为止,大多数示例都是针对资产的(我已经设法对图像做到了这一点),但我需要从特定文件中导入一个变量。我已将此文件放在公共文件夹中。我究竟如何将它导入到需要它的脚本中?
2021-05-30 12:55:13
这是一个稍微不同的问题。您不能在公开的 javascript 中引用 javascript 代码,您需要将其作为外部源文件加载。
2021-06-03 12:55:13

假设您想读取包含数据的 json 文件,您可以通过以下方式进行:

class App extends Component {
  async getData() {
    const res = await fetch("/json/sample.json");
    const data = await res.text();
    console.log(data);
    return this.setState({ data });
  }

  componentDidMount() {
    this.getData();
  }

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <div>{this.state.data}</div>
        </header>
      </div>
    );
  }
}

json公用文件夹中创建文件夹的位置。使用create-react-app. 希望这可以帮助。