【问题标题】:Can ember-cli import json and other non-JS files?ember-cli 可以导入json等非JS文件吗?
【发布时间】:2015-01-04 23:40:46
【问题描述】:

鉴于 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 文件导入当前文件?

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

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

    在我看来,您有两种选择。

    将文件放在公共文件夹中并通过 ajax 加载它们是一种简单的解决方案,虽然不是很优雅。

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

    【讨论】:

    • 如果我能弄明白的话,我更喜欢“酷”选项。如果我使用将 JSON 文件转换为 ES6/AMD js 模块的 Broccoli 插件,有没有办法将生成的 js 模块导入主 app.js 文件(位于 assets/app.js)?
    • 将其放入 app.js 可能会很棘手,但使用 app.import() 将其放入 vendor.js 中应该已经足够好了。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 2018-07-17
      相关资源
      最近更新 更多