ember-cli 可以导入 json 等非 JS 文件吗?

Can ember-cli import json and other non-JS files?

鉴于 ember-cli 使用 ES6 模块语法导入其他 JavaScript 文件,是否也可以使用相同的语法导入非 JavaScript 文件,例如 JSON 文件或其他文本文件?

假设我的当前目录中有一个名为 "foo.json" 的 JSON 文件。我如何将该文件的内容导入到当前 JavaScript 文件中的变量中?我尝试了以下几种变体,但没有成功:

import foo from 'foo.json';

if (typeof foo === 'object') {
  // Success
} else {
  // import failed
}

是否可以使用 import 语句或任何其他方式将非 JavaScript 文件导入当前文件?

不,不是。导入内容的 ES6 模块语法还需要正确导出所请求的对象,而您的 json 文件或文本文件不会。此外,由于我们在浏览器中还没有真正使用 ES6,因此在构建项目时,所有这些漂亮的语句都将转换为 commonjs-modules。

据我所知,您有两种选择。

将文件放入 public 文件夹并通过 ajax 加载它们是简单的解决方案,但不是很优雅。

最酷的选择是添加一个您自己的预处理器,将您的 json 文件包装在适当的导出语句中作为构建步骤。不过,这将需要做更多的工作,并且可能需要深入研究 ember-cli 和西兰花才能在正确的时间附加它。

是的,ember-cli 可以导入 JSON 和非 JS 文件,只要你有合适的插件。

这个允许导入 JSON 个文件: https://github.com/IvyApp/ember-cli-json-module

... 这个适用于 YAML:https://github.com/joankaradimov/ember-cli-yaml-module.