16

我正在构建一个 Chrome 打包应用程序。如果配置文件在资源目录中并且在启动时想要通过 Javascript 读取它,我想将脚本配置放入。

例如

  • 项目
    • 网页内容
      • 索引.html
      • 清单.json
      • main.js
      • 资源
        • 配置属性

这里我希望 main.js 在开头加载 config.properties 文件并获取键值对。

有没有人做过这样的事情?

4

6 回答 6

37

按照 sowbug 的回答,有一种超级简单的方法可以做到这一点,但不需要任何 XHR 或文件读取。

步骤 1. 像这样创建 resource/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);
    }
  }
  ...
于 2013-10-14T00:58:21.287 回答
7

您可以使用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');
}); 
于 2014-08-28T08:42:33.440 回答
2

我知道这在很久以前就被接受为答案,但从来没有真正的“原样” .properties 答案。只有不使用它,而是将其转换为 .js。显然,这将是可取的,但并不总是可能的。如果不可能,例如在某个地方也有 JavaScript 的 Java 应用程序中,并且 .properties 文件被 Java 大量使用并由 JavaScript 共享以避免重复,那么最好使用实际的 .properties 答案。

如果您使用的是 ES6、React、Vue、Angular 等,则可以导入它。假设它是 URL.properties 文件中的 URL 列表。即使在 JavaScript 中也不需要指定路径,但需要唯一的名称。

import URL from 'URL';

对于带有点的键(例如 widgetAPI.dev),语法可能很棘手。您不能简单地将其作为 URL.widgetAPI.dev 调用。由于属性文件(内容)一旦到达 JavaScript 就是一个对象,因此您可以像任何 Object 键一样引用它,例如:

console.log(URL['widgetAPI.dev'])

如果您不在 ES6 中,jQuery 有库,并且总是有已经提到的无处不在的 messageResource。

于 2020-01-09T21:12:48.703 回答
0

npm install dotenv -D

let port = "8080";

//region read from local.properties
const result = require("dotenv").config({path: "local.properties"});
if (!result.error && !!result.parsed) port = result.parsed.port;
//endregion

本地属性

port=9000
于 2021-11-16T06:25:46.427 回答
-1

将文件构造为 JSON。使用 File API 或 XHR 将其读入字符串。然后 JSON.parse(string)。

于 2013-10-12T14:34:05.770 回答
-3

使用 JSF 非常简单,但每次需要从 JavaScript 读取新参数时,都必须修改 HTML 文件。我在项目目录中的属性文件 ( config.properties ) 具有以下参数作为键值对。

parameter.key=parameter.value

属性文件名在faces-config.xml中配置

<application>
    <resource-bundle>
        <base-name>com.example.project.properties.config</base-name>
        <var>configuration</var>
    </resource-bundle>
</application>

因此,您可以在 HTML 文件内的隐藏输入中使用属性值。

<h:inputHidden id="parameter_key" value="#{configuration['parameter.key']}" />

并从 JavaScript 函数中,使用以下行读取参数值。

var parameter_value = document.getElementById("parameter_key").value;

祝您愉快..!!!

于 2018-06-03T19:18:17.103 回答