标签: middleware

什么是Node.js的Connect,Express和"中间件"?

尽管我非常了解JavaScript,但我很困惑Node.js生态系统中这三个项目究竟做什么的.它是否像Rails的机架?有人可以解释一下吗?

middleware node.js

626
推荐指数
4
解决办法
14万
查看次数

bodyParser已弃用快递4

我正在使用快递4.0,我知道身体解析器已被取出快递核心,我使用推荐的替代品,但我得到了

body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12 body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29

我在哪里可以找到这个假设的中间件?或者我不应该收到此错误?

var express     = require('express');
var server      = express();
var bodyParser  = require('body-parser');
var mongoose    = require('mongoose');
var passport    = require('./config/passport');
var routes      = require('./routes');

mongoose.connect('mongodb://localhost/myapp', function(err) {
    if(err) throw err;
});

server.set('view engine', 'jade');
server.set('views', __dirname + '/views');

server.use(bodyParser()); 
server.use(passport.initialize());

// Application Level Routes
routes(server, passport);

server.use(express.static(__dirname + '/public'));

server.listen(3000);
Run Code Online (Sandbox Code Playgroud)

middleware node.js express

372
推荐指数
8
解决办法
18万
查看次数

Node.js/Express.js - app.router如何工作?

在我问起之前我app.router想我应该至少解释一下我在使用中间件时的想法.要使用中间件,要使用的功能是app.use().当中间件被执行时,它将通过使用next()或调用下一个中间件来调用,因此不再调用中间件.这意味着我放置中间件调用的顺序很重要,因为某些中间件依赖于其他中间件,而某些中间件甚至可能甚至都没有被调用.

今天我正在处理我的应用程序并让我的服务器在后台运行.我想进行一些更改并刷新页面并立即查看更改.具体来说,我正在改变我的布局.我无法让它工作,所以我搜索了Stack Overflow的答案并找到了这个问题.它说要确保它express.static()在下面require('stylus').但当我查看OP的代码时,我看到他app.router在他的中间件调用结束时接到了他的电话,我试图找出原因.

当我创建我的Express.js应用程序(版本3.0.0rc4)时,我使用了该命令,express app --sessions --css stylus并在我的app.js文件中设置了app.router上面的代码express.static()require('stylus')调用代码.所以看起来,如果它已经设置了那样,那么它应该保持这种方式.

重新安排我的代码后,我可以看到我的Stylus更改,它看起来像这样:

app.configure(function(){
  //app.set() calls
  //app.use() calls
  //...
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});

app.get('/', routes.index);

app.get('/test', function(req, res){
  res.send('Test');
});
Run Code Online (Sandbox Code Playgroud)

所以我决定第一步是找出为什么app.router在我的代码中有重要性.所以我评论了它,开始我的应用程序并导航到/.它显示我的索引页面就好了.嗯,也许它有效,因为我从路线文件(routes.index)导出路由.接下来我导航到/test屏幕上显示Test.哈哈,好的,我不知道是什么app.router.无论它是否包含在我的代码中,我的路由都很好.所以我肯定错过了一些东西.

所以这是我的问题:

有人可以解释一下app.router它的重要性,它的重要性,以及我应该把它放在我的中间件调用中的哪个位置?如果我得到一个简短的解释,那也很好express.static().据我所知,express.static()是我的信息缓存,如果应用程序找不到请求的页面,它将检查缓存以查看它是否存在.

middleware node.js express

295
推荐指数
1
解决办法
8万
查看次数

什么是中间件?

我听过很多人最近谈到中间件,但中间件的确切定义是什么?当我查看中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎大多数所有"商品"都处于中间状态.那么,所有东西都是中间件吗?

或者你有一个不是中间件的软件的例子?

frameworks middleware

187
推荐指数
9
解决办法
13万
查看次数

使用Express.js中的next()将变量传递给下一个中间件

好吧,我的问题是我想将一些变量从第一个中间件传递到另一个中间件,我尝试这样做,但是" req.somevariable有一个给定为'undefined'".


//app.js
..
app.get('/someurl/', middleware1, middleware2)
...
Run Code Online (Sandbox Code Playgroud)
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...
Run Code Online (Sandbox Code Playgroud)
////middleware2
...
some conditions
...
variable = req.somevariable;
...
Run Code Online (Sandbox Code Playgroud)

javascript middleware next node.js express

161
推荐指数
6
解决办法
9万
查看次数

如何在Django REST Framework上启用CORS

如何在我的Django REST框架上启用CORS?该参考文献没有多大帮助,它说我可以用中间件做,但我怎么能这样做?

python django middleware cors django-rest-framework

69
推荐指数
10
解决办法
6万
查看次数

在Express中使用特定中间件用于除特定路径之外的所有路径

我在node.js中使用Express框架和一些中间件函数:

var app = express.createServer(options);
app.use(User.checkUser);
Run Code Online (Sandbox Code Playgroud)

我可以使用.use带有附加参数的函数仅在特定路径上使用此中间件:

app.use('/userdata', User.checkUser);
Run Code Online (Sandbox Code Playgroud)

是否可以使用路径变量,以便中间件用于除特定路径之外的所有路径,即根路径?

我在考虑这样的事情:

app.use('!/', User.checkUser);
Run Code Online (Sandbox Code Playgroud)

所以User.checkUser总是被调用除了根路径.

middleware routes node.js express

60
推荐指数
5
解决办法
6万
查看次数

是否有用于开发iPhone/Android应用程序的多平台框架?

我有兴趣为iPhone和Android平台编写应用程序.我希望找到一个中间件/框架,它抽象出API中的一些差异,并允许我在构建时指定目标平台.是否存在或计划了这样的框架?

iphone android frameworks middleware

58
推荐指数
8
解决办法
6万
查看次数

如何向Redux添加多个中间件?

我已经插入了一个中间件,redux-thunk,我想添加另一个,redux-logger.

如何配置它以便我的应用程序使用两个中间件?我试过传递一组[ReduxThunk, logger]但是没有用.

码:

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import ReduxThunk from 'redux-thunk';
import logger from 'redux-logger';

import App from './components/app';
import reducers from './reducers';
require('./style.scss');

const createStoreWithMiddleware = applyMiddleware(ReduxThunk)(createStore);

ReactDOM.render(
  <Provider store={createStoreWithMiddleware(reducers)}>
    <App />
  </Provider>,
  document.querySelector('#app')
);
Run Code Online (Sandbox Code Playgroud)

middleware reactjs redux redux-thunk react-redux

57
推荐指数
3
解决办法
3万
查看次数

req.locals与res.locals vs. res.data vs. req.data与Express中间件中的app.locals

有一些类似的问题,但我的问题是,如果我想传播我得到的不同路由中间件的中间结果,那么最好的方法是什么?

app.use(f1); app.use(f2); app.use(f3);

function f1(req,res,next) {
  //some database queries are executed and I get results, say x1
  res.locals.dbResults = {...};
  next();
}

function f2(req,res,next) {
  // more processing based upon req.locals.dbResults 
  res.locals.moreResults = {....};
  next();
}
// ...
Run Code Online (Sandbox Code Playgroud)

我认为通过使用req .locals ,我可以通过不同的中间件获得相同的数据传播.此外,似乎请求和响应对象都在请求开始时将locals属性初始化为空对象.

另外,还可以设置res.mydata或req.mydata属性吗?

从理论上讲,app.locals也可用于通过不同的中间件传递这些数据,因为它将持续穿过中间件,但这与app.locals的传统使用相反.它更多地用于特定于应用程序的数据.还需要在请求 - 响应周期结束时清除该数据,以便相同的变量可用于下一个请求.

通过中间件传播中间结果的最佳和标准方法是什么?

middleware node.js express

53
推荐指数
1
解决办法
4万
查看次数