我想了解express.js中的顺序优先级.例如,如下面的代码
var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api');
app.use('/api', api);
app.use('/users', users);
app.use('/:name', function(req, res, next) {
console.log('from app.js name:', req.params.name);
res.render('index', {
title: req.params.name
});
}, routes);
app.use('/', function(req, res, next) {
res.render('index', {
title: 'MainPage'
});
});
Run Code Online (Sandbox Code Playgroud)
如果请求来自客户端localhost:3000/api/abc和localhost:3000/user/abc,则来自api和用户模块的响应.但是如果我发出像localhost:3000/myName/xyz这样的请求,app模块会返回一个响应.这种行为让我关注表达式的优先级和路由器模块的正确顺序.为什么路由器不会在动作"api","users"和参数":name"之间混淆.请让我清楚地了解快递的作用和优先级.
我使用 Websocket 编写网络聊天。问题是用户切换浏览器的选项卡,我想播放声音让他们知道有人想在聊天选项卡中与他交谈。
我看到 Facebook 和 GMail 可以在非活动选项卡中的聊天中有新消息时播放“ping”。
他们是如何用 JavaScript 做到这一点的,或者有什么解决方案吗?
我从画布上获得了base64对象
var imageData = canvas.toDataURL('image/png');
Run Code Online (Sandbox Code Playgroud)
我尝试通过ajax将此base64对象(imageData)发送到服务器:
var _data = {};
// set test property:
_data.avatar = imageData;
console.log(_data);
// Make an Ajax request
$.post('./setup', _data, function(result) {
console.log('result', result);
});
Run Code Online (Sandbox Code Playgroud)
在我的nodejs服务器(仅使用表达中间件)中,我有一个简单的路由器来处理此请求
router.post('/setup', function(req, res, next) {
console.log('setup: data', req.body.data);
console.log('setup: check', req.body.check);
console.log('setup avatar: ', req.body.avatar);
res.json({
success:true
});
});
Run Code Online (Sandbox Code Playgroud)
实际上,它不起作用,我想知道为什么无法发送base64对象。在其他情况下,我的带有文本的json对象可以正常发送到服务器。感谢您的帮助和解决方案,将base64对象发送到expressjs服务器