鉴于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文件导入当前文件?
答案 0 :(得分:2)
不,不是。用于导入内容的ES6模块语法还需要正确导出所请求的对象,而json文件或文本文件将不会被导出。此外,由于我们尚未在浏览器中使用ES6,因此在构建项目时,所有这些漂亮的语句都会转换为commonjs-modules。
我认为你有两种选择。
将文件放在公共文件夹中并通过ajax加载它们是一个简单的解决方案,虽然不是很优雅。
很酷的选择是添加一个自己的预处理器,它将你的json文件包装在一个正确的export-statement中作为构建步骤。这将是相当多的工作,可能需要深入潜入ember-cli和西兰花,以便在正确的时间附上它。
答案 1 :(得分:1)
是的,只要你有合适的插件,ember-cli就可以导入JSON和非JS文件。
这个允许导入JSON文件: https://github.com/IvyApp/ember-cli-json-module
......这个适用于YAML:https://github.com/joankaradimov/ember-cli-yaml-module。