如何在 Sails 中访问资产中的全局变量?

How in Sails to access globals in assets?

我正在使用 Sails JS 并想访问我的资产中的全局变量 (sails.config.myGlobals),目前在 js 文件中。

我希望我有类似注入 ejs 文件的方式。但它不是。

有什么想法吗?我必须为此执行 Grunt 任务吗?

在您的 config 文件夹中创建一个配置文件,例如 MyConfig.js(名称无关紧要)。用你想要的东西填充那个配置。

module.exports.myconfig = {
  configA: 'this is config A'
}

在您的控制器中使用该配置,例如。

showconfig: function(req, res){
  res.view('viewname', {
    config: sails.config.myconfig
  });
}

现在在您调用的 EJS 文件中,例如 viewName.ejsviews 文件夹中,您可以像 <% config.configA %> 一样使用它,而 this is config A 将是打印。此外,如果您希望前端 js(在资产文件夹中)能够读取该值,只需将其打印在 script 标记中,就像这样。

<script>
  global.configA = '<%= config.configA %>';
</script>

或者如果你使用前端框架库,可以放在一些valueservice,或factory下,不弄脏全局变量,其他JS可以读取该值。

我认为 Sails 无法做到这一点。

但是,您可以在 ejs 视图文件中设置变量以访问其在 js 资产文件中的值。

// someView.ejs
<script>
    myGlobals = '<%= config.myGlobals %>';
</script>