5

我正在構建Chrome打包應用程序。如果配置文件在資源目錄中並且在啓動時想要通過Javascript讀取,我想要放置腳本配置。如何從項目目錄中讀取JavaScript中的屬性文件?

例如

  • 項目
    • 的WebContent
      • 的index.html
      • manifest.json的
      • main.js
      • 資源
        • 個config.properties

在這裏,我想main.js加載config.properties文件在開頭和獲取鍵值對。

有沒有人做過這樣的事情?

回答

21

有一個超級簡單的方法來做到這一點,沿潮蟲的答案的線,但並不需要任何XHR或文件讀取。

步驟1. 像這樣創建資源/ config.js:

gOptions = { 
    // This can have nested stuff, arrays, etc. 
    color: 'red', 
    size: 'big', 
    enabled: true, 
    count: 5 
} 

步驟2. 包括在你的index.html文件:

<!doctype html> 
<head> 
    <script src="resource/config.js"></script> 
    ... 

步驟3. 訪問您的選項直接從您的main.js(或任何地方):

... 
    if (gOptions.enabled) { 
    for (var i = 0; i < gOptions.count; i++) { 
     console.log(gOptions.color); 
    } 
    } 
    ... 
+4

答案不能解決問題。我也有第三方代碼中使用的屬性文件。按照您的建議,我無法將其重寫爲json。 – anakkin

+1

原來的問題沒有這些限制。如果您有不同的要求,請提出一個不同的問題,我們會爲您提供一些幫助(在您的情況下,可能使用沙盒頁面)。 –

+0

我認爲它的確如此。也許它不清楚你是什麼意思的[「屬性文件」](http://en.wikipedia.org/wiki/.properties) – bacar

4

您可以使用messageResource.js,這是我創建的一個簡單的JavaScript庫,用於加載屬性文件。

1)在你的index.html中包含messageResource.js。

<script src="messageResource.min.js"></script>  

2)您可以使用以下代碼從main.js獲取config.properties的鍵值對。

// initialize messageResource.js 
messageResource.init({ 
    // path to directory containing config.properties 
    filePath : 'resource' 
}); 

// load config.properties file 
messageResource.load('config', function(){ 
    // load file callback 

    // get value corresponding to a key from config.properties 
    var value = messageResource.get('key', 'config'); 
}); 
+1

爲什麼我將'key'作爲值而不是屬性文件中的寫入值? – sarwar026

+0

@Khan我試過了你在答案中提到的確切過程,但是我遇到了和sarwar026一樣的問題。 – chaitanya89

+0

首先確保config.properties可以通過url訪問。在調用messageResource.get函數之前,您應該使用下面的代碼加載屬性文件。 'messageResource.load('config',function(){ //加載文件回調 }); ' – Khan