2013-07-03 84 views
2

我有一個程序,我需要很長的多行字符串。這是把它們存放到的.js文檔中的痛苦,因爲JS沒有多線串,我最終不得不一個只要屏幕寬度線看上去醜的兩倍「這是一個例子。\ n」個有沒有一種方法可以從JavaScript,流星中的文本文件導入字符串?

有沒有辦法有一個txt文件,從哪裏我可以用新行(或至少只是導入字符串)導入字符串?

+0

更多信息。它是HTML嗎?它在一個對話框中嗎?該計劃是做什麼的?的 – Dropzilla

+1

可能重複[我怎樣一個文本文件的內容加載到一個javascript變量?](http://stackoverflow.com/questions/196498/how-do-i-load-the-contents-of-a- text-file-into-a-javascript-variable) – zurfyx

+2

不,絕對不是重複的;這在Meteor中很難做到,而且這個功能還沒有實現。 –

回答

1

meteor-yaml包讓一切變得簡單 - 它自動加載任何.yaml文件在您的項目,其解析爲JavaScript對象,並使其在YAML.data可用。

在我的應用程序有一個需要相同的設置流星應用程序之外的一些代碼,所以我更喜歡有config文件中的流星項目目錄之外。然後我打開這樣的文件:

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); 
    } 
}); 

不幸的是,流星YAML包是過時的一點與流星團隊如何想因此,如果您使用的是最新版本的節點程序包被裝載現在,流星的包裝將無法正常工作。

我對此提交了一個bug,但同時爲了解決這個問題,我將它安裝爲private package,而不是從大氣中安裝它,並修復了這個錯誤。要做到這一點:

  1. 克隆回購您的項目包/目錄下
  2. 註釋掉Npm.require線。
  3. 添加呼叫到取決於:

    Npm.depends({yamljs: 「0.1.4」});

  4. 運行流星。 Meteor將檢測流星 - 私人包並安裝依賴關係。你是如何呈現的字符串將是有益的

+0

非常感謝你!這將讓我的生活變得如此簡單! – Euphe

+0

哦,它似乎是隕石。我不能使用它。無論如何感謝 – Euphe

+0

噢,這讓我想起 - 流星yaml軟件包有一個愚蠢的錯誤,使得它不適用於最新版本的流星。爲了解決這個問題,我將它安裝爲一個定製的包,而不是一個氣氛包。我會更新我的答案,包括該信息 – jrullmann

7

有一個流星Assets對象,它允許您通過以下方式讀取應用程序的private目錄中的文件,例如文本文件。

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

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

+0

文檔說資產必須是靜態的。有什麼方法可以讓我在應用程序運行時加載新文件並獲取文本? – FullStack

+0

您需要動態提供這些服務。 –

相關問題