JPo*_*ock 39 javascript node.js express
我正在使用Node + Express和Handlebars进行模板化的单页Web应用程序.目前一切都运行良好,从index.html,从一个非常标准的server.js文件提供:
var express = require('express');
var server = express();
server.use(express.static(__dirname + '/public'));
var port = 10001;
server.listen(port, function() {
console.log('server listening on port ' + port);
});
Run Code Online (Sandbox Code Playgroud)
加载时,这非常有效http://localhost:10001/.我的问题是我在应用程序中使用推送状态,因此浏览器可能会显示类似的URL http://localhost:10001/foo/bar,然后如果我刷新页面,我会收到错误,Cannot GET /foo/bar因为没有此路径.
所以我的问题,请原谅我在Node上的令人难以置信的无声,我可以这样做所有请求路由到index.html吗?我的应用中的JavaScript可以根据页面加载时的URL参数显示正确的内容.我不想定义自定义路由,因为数字会很大,并且它们的路径可以动态更改.
cdo*_*ock 40
const express = require('express')
const server = express()
/* route requests for static files to appropriate directory */
server.use('/public', express.static(__dirname + '/static-files-dir'))
/* other routes defined before catch-all */
server.get('/some-route', (req, res) => {
res.send('ok')
})
/* final catch-all route to index.html defined last */
server.get('/*', (req, res) => {
res.sendFile(__dirname + '/index.html');
})
const port = 8000;
server.listen(port, function() {
console.log('server listening on port ' + port)
})
Run Code Online (Sandbox Code Playgroud)
在到达为前端应用程序提供服务的全面途径之前,此模式将为静态资产提供服务。要注册其他路线,只需将它们添加到全部路线上方即可。
var express = require('express');
var server = express();
// middleware
server.use(express.static(__dirname + '/public'));
// routes
server.use('*', function (req, res) {
// serve file
});
var port = 10001;
server.listen(port, function() {
console.log('server listening on port ' + port);
});
Run Code Online (Sandbox Code Playgroud)
小智 7
var app = express();
var options = {
dotfiles: 'ignore',
etag: true,
extensions: ['htm', 'html'],
index: 'index.html',
lastModified: true,
maxAge: '1d',
setHeaders: function (res, path, stat) {
res.set('x-timestamp', Date.now());
res.header('Cache-Control', 'public, max-age=1d');
}
};
app.use(compression());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());
app.use('/', express.static(__dirname + '/public', options));
app.use('*', express.static(__dirname + '/public', options));
Run Code Online (Sandbox Code Playgroud)
这个简短的事情将起作用:
import express from "express";
const app = express(),
staticServe = express.static(`${ __dirname }/public`);
app.use("/", staticServe);
app.use("*", staticServe);
Run Code Online (Sandbox Code Playgroud)
只需确保HTML / JS文件中的所有URL现在都是绝对URL,因为所有不存在的资源都将返回index.html文件。
Express v 4.15.2
var express = require('express');
var server = express();
server.use(express.static(__dirname + '/public'));
server.get('*', function(req, res){
res.sendFile('index.html');
});
var port = 10001;
server.listen(port, function() {
console.log('server listening on port ' + port);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36698 次 |
| 最近记录: |