Angular 常量 - MEANJS
Angular Constant - MEANJS
编辑: 代码中的错误输入已修复。
我正在使用 MEANJS 堆栈,默认情况下它带有一个 default.js 文件,其中包含一些信息如下:
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
}
};
它通过 swig 模板引擎出现在应用程序模板中。例如:
<title>{{title}}</title>
打印:
<title>My App Title</title>
更改此值也按预期工作。
但是如果我添加我自己的变量它不识别它,所以:
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
new_title: 'My Apps New Title',
}
};
然后将视图更改为:
<title>{{new_title}}</title>
打印:
<title></title>
这些变量是否在我错过的其他地方注册/传递了?
它是一个 JSON 对象。您在代码中使用 =
而不是 :
。
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
new_title : 'My Apps New Title' //Here
}
};
无法识别该变量,因为尽管它已在您的配置文件中定义,但您必须在 express locals 对象中设置它。
如果您访问 express.js
配置文件,位于 /config/lib/
,您可以找到此代码块:
/**
* Initialize local variables
*/
module.exports.initLocalVariables = function (app) {
// Setting application local variables
app.locals.title = config.app.title;
app.locals.description = config.app.description;
if (config.secure && config.secure.ssl === true) {
app.locals.secure = config.secure.ssl;
}
app.locals.keywords = config.app.keywords;
app.locals.googleAnalyticsTrackingID = config.app.googleAnalyticsTrackingID;
app.locals.facebookAppId = config.facebook.clientID;
app.locals.jsFiles = config.files.client.js;
app.locals.cssFiles = config.files.client.css;
app.locals.livereload = config.livereload;
app.locals.logo = config.logo;
app.locals.favicon = config.favicon;
...
};
这就是它发生的地方。为了让您的配置变量可用于您的应用程序模板,只需添加以下行:
app.locals.new_title = config.app.new_title;
有关 express app locals 对象的更多信息,您可以查看官方 express 文档 here。
编辑: 代码中的错误输入已修复。
我正在使用 MEANJS 堆栈,默认情况下它带有一个 default.js 文件,其中包含一些信息如下:
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
}
};
它通过 swig 模板引擎出现在应用程序模板中。例如:
<title>{{title}}</title>
打印:
<title>My App Title</title>
更改此值也按预期工作。
但是如果我添加我自己的变量它不识别它,所以:
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
new_title: 'My Apps New Title',
}
};
然后将视图更改为:
<title>{{new_title}}</title>
打印:
<title></title>
这些变量是否在我错过的其他地方注册/传递了?
它是一个 JSON 对象。您在代码中使用 =
而不是 :
。
module.exports = {
app: {
title: 'My App Title',
description: 'My apps description',
keywords: 'some keywords',
googleAnalyticsTrackingID: process.env.GOOGLE_ANALYTICS_TRACKING_ID || 'GOOGLE_ANALYTICS_TRACKING_ID',
new_title : 'My Apps New Title' //Here
}
};
无法识别该变量,因为尽管它已在您的配置文件中定义,但您必须在 express locals 对象中设置它。
如果您访问 express.js
配置文件,位于 /config/lib/
,您可以找到此代码块:
/**
* Initialize local variables
*/
module.exports.initLocalVariables = function (app) {
// Setting application local variables
app.locals.title = config.app.title;
app.locals.description = config.app.description;
if (config.secure && config.secure.ssl === true) {
app.locals.secure = config.secure.ssl;
}
app.locals.keywords = config.app.keywords;
app.locals.googleAnalyticsTrackingID = config.app.googleAnalyticsTrackingID;
app.locals.facebookAppId = config.facebook.clientID;
app.locals.jsFiles = config.files.client.js;
app.locals.cssFiles = config.files.client.css;
app.locals.livereload = config.livereload;
app.locals.logo = config.logo;
app.locals.favicon = config.favicon;
...
};
这就是它发生的地方。为了让您的配置变量可用于您的应用程序模板,只需添加以下行:
app.locals.new_title = config.app.new_title;
有关 express app locals 对象的更多信息,您可以查看官方 express 文档 here。