我正在Google App Engine灵活环境(托管虚拟机)上使用Node JS开发Express Web应用程序。基本上我只需要一个静态HTML页面,因为所有内容都是在Angular JS中动态加载的。
在阅读Express best practices时,我注意到他们不鼓励使用res.sendFile,这正是我在开发过程中所做的。
由于我正在转向制作,我想按照建议使用静态服务,但我找不到任何解释如何模拟res.sendFile的文档。
您可以在下面找到我当前的代码。
var app = express();
app.use(express.static('www'));
app.get('/', oauth2.required, function (req, res) {
// ...
res.sendFile(path.join(__dirname + '/www/dashboard.html'));
// ...
});
答案 0 :(得分:1)
要提供静态文件,您可以在expressJS
中定义静态文件夹内容app.use('/public', express.static(path.join(__dirname, './public')));
这意味着当您点击时,公用文件夹中的每个文件都将作为静态内容提供,并且 mydomain.com/public/image.png
编辑:如果可能,请在您的开发环境中
您可以使用nginx服务器为您提供静态文件,并让node.js服务器处理动态内容。它通常是最优化的解决方案,用于减少node.js服务器上的请求,例如,服务器静态文件比nginx慢。
nginx配置可能是
root /home/myapp;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location /public/ {
alias /home/myapp/public/;
}
location / {
proxy_pass http://IPADRESSOFNODEJSSERVER:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
}
每个使用/ public /在url的第一部分的请求都将由nginx处理,并且每个其他请求都将代理到您IPADRESSOFNODEJSSERVER:NODEJSPORT
上的nodejs应用程序,通常IPADRESSOFNODEJSSERVER
是localhost < / p>
使用NGNIX的第二个选项是指文档部分
更好的选择是使用反向代理来提供静态服务 文件;有关详细信息,请参阅使用反向代理。
http://expressjs.com/en/advanced/best-practice-performance.html#proxy