Node.js / backbone.js应用加载配置文件设置

node.js / backbone.js application load configuration file settings

本文关键字:js 配置文件 设置 加载 backbone Node 应用      更新时间:2023-09-26

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

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

并引用sails.config.mysettings.foo

但是在应用程序的主干部分,我一辈子都不知道如何引用同一个文件(…)

define([
  'jquery',
  'async',
  ...,
  **'/config/mysettings.js'**
], function ($, async, ..., **mysettings**) {
  relevantAjaxFunction: function() {
  ...
  **fail**:
  console.log(mysettings.foo);

在控制台中产生未定义的消息。像这样引用应用程序范围设置文件的正确方法是什么?我已经看过了,但没有找到任何东西,这让我认为这要么是超级明显的,要么是我的问题措辞错误。

Sails不会让你的配置文件公开可浏览。那就……糟了。

你有几个我能想到的选项:

    assets文件夹中创建一个指向配置文件的符号链接。这里棘手的部分是,符号链接将按原样复制到.tmp/public文件夹中,所以如果你在符号链接中使用相对路径,它需要是从.tmp/publicconfig/mysettings.js的相对路径。或者你可以在符号链接中使用绝对路径。
  1. 创建一个自定义路由,只使用fs:

    传输文件
    require('fs')
    .createReadStream(sails.config.paths.config+"/mysettings.js")
    .pipe(res);
    

    虽然你应该真正使用path模块来确定文件路径,并将整个东西包装在try/catch中,以防万一…

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

    module.exports = function myConfigPolicy(req, res, next) {
        res.locals.mysettings = sails.config.mysettings;
        return next();
    }
    

    视图/布局。ejs执行如下操作:

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

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