node.js / backbone.js应用程序加载配置文件设置

时间:2014-08-04 18:58:53

标签: javascript node.js backbone.js sails.js

我有一个node / backbone / sails项目,需要加载部署特定的配置文件。

因此,在应用程序的sails部分,我可以放置一个配置文件     的myapp /配置/ mysettings.js

并引用它 sails.config.mysettings.foo 。这可以按预期工作。

但是在应用程序的主干部分,我不能为我的生活弄清楚如何引用同一个文件(...为了简洁而剪短)。

define([
  'jquery',
  'async',
  ...,
  **'/config/mysettings.js'**
], function ($, async, ..., **mysettings**) {

  relevantAjaxFunction: function() {

  ...
  **fail**:
  console.log(mysettings.foo);

在控制台中生成未定义的消息。引用这样的应用程序范围设置文件的正确方法是什么?我看上去找不到任何东西,这让我觉得它显得非常明显,或者我把这个问题弄错了。

1 个答案:

答案 0 :(得分:1)

Sails不会使您的配置文件可公开浏览。那将是......糟糕的。

我可以在这里考虑一些选项:

  1. 资产文件夹中创建指向配置文件的符号链接。这里棘手的部分是符号链接将 as as is 复制到 .tmp / public 文件夹中,所以如果在符号链接中使用相对路径,则需要是 .tmp / public config / mysettings.js 的相对路径。或者你可以在符号链接中使用绝对路径。
  2. 使用fs创建一个自定义路由,然后使用require('fs') .createReadStream(sails.config.paths.config+"/mysettings.js") .pipe(res);

    path

    虽然您确实应该使用try/catch模块来确定文件路径,然后将整个内容包装在module.exports = function myConfigPolicy(req, res, next) { res.locals.mysettings = sails.config.mysettings; return next(); } 以防万一...

  3. 使用策略为每个请求在本地变量中添加配置设置,例如:

    <script type="text/javascript">
        var mySettings = <%= JSON.stringify(mysettings) %>;
    </script>
    

    并在您的 views / layout.ejs 中执行以下操作:

    {{1}}

    调整您选择的模板引擎。当然,这不会使用AMD在运行时加载配置,所以如果这是一个问题,请选择#1或#2!