javascript - 在 React JS 中为资产创建静态链接
问题描述
我需要创建一个活动 url 或链接,以在我的应用程序中显示资产。
因此,例如 dog.png 应该在以下位置找到:localhost:3000/static/media/dog.png
在 React 中,对于图像文件,如果我这样做了
import cat_png from '../../game_book/images/cat.png';
cat_png 实际上将包含以下对我有用的值:
http://localhost:3000/static/media/cat.35853d78.png
尽管 javascript 将 cat.png 更改为 cat.35853d78.png 在我的情况下这很好,因为我有一个指向该资产的静态 URL……(你怎么称呼这种链接?它被称为资产链接吗?).. .
但是,如果我这样做,对于我的 json 文件:
import animals_json from '../../game_book/images/animals.json';
animal_json 实际上将包含 json 文件的内容,例如
{frames: {…}, meta: {…}}
并且没有给我一个可以显示 json 文件内容的活动 URL。
我想要的是一个链接,例如:
http://localhost:3000/static/media/animals.json
这将显示我的文件的内容
我正在阅读一本关于 javascript 游戏编程的书,示例代码通过资产的那些活动 URL 链接加载资产....
这个怎么做?
解决方案
Webpack 4 提供对 json 文件的原生处理。这意味着默认情况下,json 文件的导入将由 webpack 处理,当我们尝试导入时,我们总是将 json 作为 javascript 对象。
请参阅 Loaders 部分下的 Webpack 文档https://webpack.js.org/concepts/ -
开箱即用,webpack 只理解 JavaScript 和 JSON 文件。
因此,如果您想覆盖此行为并将 json 作为 URL 导入,则必须添加一个额外的加载程序,该加载程序可以处理 json 文件并修改默认行为。
其中之一是 url-loader。在您的 webpack.config.js 中添加以下行 -
{
test: /\.json$/,
loader: 'url-loader',
options: {
limit: false,
publicPath: 'assets'
},
type:'javascript/auto'
}
这会将所有 json 文件加载为 url。
推荐阅读
- sas - Sas 宏:对数组中的每个元素运行宏
- microsoft-graph-api - 错误: createdDateTime 在 /beta/users 中为空
- javascript - 函数式编程接口js
- ios - 是否可以通过提供 iCloud 凭据的任何应用程序/工具从 iCloud(公共、共享、私有)中获取所有备份数据而无需越狱?
- javascript - 关联性和优先级是特定于平台的标准或实现吗?
- swift - @3x 设备上的 UIView 帧不正确
- javascript - 在 Highcharts 中使用 pointPadding 更改条形宽度
- laravel - 未找到基表或视图:1146 表
- vba - Excel 2013 无法解析 Outlook 收件人
- java - 从表中更新一列并插入新行。SQLite,Java