查找将 Cloudfront 与 node.js Express 应用程序一起使用的简单设置
Finding a simple set up to use Cloudfront with a node.js express app
我正在尝试在我的 nodeJS Express 应用程序(使用 Jade 作为渲染引擎)中设置 Cloudfront,满足以下要求:
- 只在生产服务器上使用 Cloudfront(不在本地主机或暂存服务器上)
- 不对所有脚本和 css 在 jade 模板中使用条件语句
- 尝试寻找一个或两个班轮以防我需要切换到不同的供应商
我想出了一个可能的解决方案:覆盖 Jade 呈现链接和脚本的方式并仅在生产环境中添加 Cloudfront url:
Jade.override(“link”,function(){
if(prod) link.src = cloudfront_url + link.src
})
但是,Jade 不允许覆盖它的任何函数。有人知道在节点应用程序上使用 Cloudfront 的简单方法吗?
很遗憾,我没有适合您的 2 衬垫,但我认为这会给您带来很大的灵活性。第一步是将基础 url 分配给与 res.locals
属性 上的所有模板共享的局部变量,如下所示:
// add this to app.js
// its VERY important that this app.use comes BEFORE app.set('view engine'....
var isProd = true;
app.use(function(req, res, next) {
res.locals.CDN_URI = isProd ? 'http://zzzz.cloudfront' : '';
next();
});
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
.....
然后,第二步是稍微痛苦的部分 - 您需要更新所有模板以在您希望从云端服务的所有资产之前调用 CDN_URI:
img(src="#{CDN_URI}/img/logo.jpg")
script(src="#{CDN_URI}/js/main.min.js")
link(rel="stylesheet", href="#{CDN_URI}/stylesheets/style.css")
所以前期需要做一些工作,但我相信如果您将来需要更改 CDN_URI,或者如果您设置多个环境(开发、测试、舞台等)
另外,我不认为你会想盲目地将 cdn url 添加到你所有的 src 属性,因为你可能最终(如果你还没有)拉入 images/scripts 来自第三方网站 - 使用这种 "CDN_URI" 标记方法将允许您挑选和选择从云端加载的资产。
我正在尝试在我的 nodeJS Express 应用程序(使用 Jade 作为渲染引擎)中设置 Cloudfront,满足以下要求:
- 只在生产服务器上使用 Cloudfront(不在本地主机或暂存服务器上)
- 不对所有脚本和 css 在 jade 模板中使用条件语句
- 尝试寻找一个或两个班轮以防我需要切换到不同的供应商
我想出了一个可能的解决方案:覆盖 Jade 呈现链接和脚本的方式并仅在生产环境中添加 Cloudfront url:
Jade.override(“link”,function(){
if(prod) link.src = cloudfront_url + link.src
})
但是,Jade 不允许覆盖它的任何函数。有人知道在节点应用程序上使用 Cloudfront 的简单方法吗?
很遗憾,我没有适合您的 2 衬垫,但我认为这会给您带来很大的灵活性。第一步是将基础 url 分配给与 res.locals
属性 上的所有模板共享的局部变量,如下所示:
// add this to app.js
// its VERY important that this app.use comes BEFORE app.set('view engine'....
var isProd = true;
app.use(function(req, res, next) {
res.locals.CDN_URI = isProd ? 'http://zzzz.cloudfront' : '';
next();
});
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
.....
然后,第二步是稍微痛苦的部分 - 您需要更新所有模板以在您希望从云端服务的所有资产之前调用 CDN_URI:
img(src="#{CDN_URI}/img/logo.jpg")
script(src="#{CDN_URI}/js/main.min.js")
link(rel="stylesheet", href="#{CDN_URI}/stylesheets/style.css")
所以前期需要做一些工作,但我相信如果您将来需要更改 CDN_URI,或者如果您设置多个环境(开发、测试、舞台等)
另外,我不认为你会想盲目地将 cdn url 添加到你所有的 src 属性,因为你可能最终(如果你还没有)拉入 images/scripts 来自第三方网站 - 使用这种 "CDN_URI" 标记方法将允许您挑选和选择从云端加载的资产。