有没有办法从javascript,meteor中的文本文件导入字符串?

时间:2013-07-03 16:53:16

标签: javascript meteor

我有一个程序,我需要长多行字符串。将它们存储在.js文档中是一件痛苦的事,因为js没有多行字符串,而且我的屏幕宽度线的长度只有两倍,看起来像“这是一个例子。\ n”。

有没有办法有一个txt文件,我可以用新行导入字符串(或者至少只导入字符串)?

3 个答案:

答案 0 :(得分:7)

有一个Meteor Assets对象,允许您以下列方式读取应用的private目录中的文件,例如文本文件。

Assets.getText("foo.txt", function (err, res) { ... });

查看完整文档: http://docs.meteor.com/#assets

答案 1 :(得分:2)

以前的答案仅适用于公共文件。如果要访问仅在服务器上可见的文件数据,则应该使用“fs”npm模块。这里详细描述:http://www.eventedmind.com/posts/meteor-file-uploader-part-2-server-side-save

答案 2 :(得分:1)

meteor-yaml包使这很简单 - 它会自动加载项目中的任何.yaml文件,将它们解析为JavaScript对象,并使它们在YAML.data中可用。

在我的应用程序中,我在流星应用程序之外有一些需要相同设置的代码,所以我更喜欢将配置文件放在meteor项目目录之外。然后我像这样加载文件:

var fs = Npm.require('fs');
fs.readFile('<path to file>.yaml', 'utf8', function(err, data) {
  if(err) { 
    //Throw exception if the file is missing
    throw new Error("Missing config file")
  }
  else {
    //Read the file into a JavaScript object
    config = YAML.parse(data); 
  }
});

不幸的是,meteor-yaml软件包有点过时了,流星团队现在想要加载节点包,所以如果你使用的是最新版本的meteor,那么这个软件包将无法开箱即用

我提交了bug关于此问题,但在此期间,为了解决这个问题,我将其安装为private package,而不是从大气中安装,并修复了错误。要做到这一点:

  1. 在您的项目包/目录
  2. 下克隆回购
  3. 注释掉Npm.require行。
  4. 添加对depends的调用:

    Npm.depends({yamljs:“0.1.4”});

  5. 运行流星。 Meteor将检测meteor-yaml私有包并安装依赖项。