Tag: 表示

Node.js Express3 – 中间件将渲染数据添加到所有渲染请求

是否可以通过快递中间件或其他方法向应用程序路线中的每个呼叫添加渲染数据(res.render中的第二个选项)。 我的应用程序使用护照进行身份validation,我希望中间件始终将用户信息附加到每个呈现的模板。 目前我每次调用res.render的样子都差不多。 我想删除用户:req.user并将其添加到中间件function。 // Page 1 res.render("somepage1",{data : "somepage1", user : req.user}); // Page 2 res.render("somepage2",{data : "somepage2", user : req.user});

nodejs发送html文件给客户端

我使用这个函数发送HTML文件到客户端,但在客户端,我什么也没有(空白页)没有错误。 我错了什么?请帮忙? var express = require('express'); var fs = require('fs'); var app = express(); app.set('view engine', 'jade'); app.engine('jade', require('jade').__express); app.get('/test', function(req, res) { fs.readFile(__dirname + '/views/test.html', 'utf8', function(err, text){ res.send(text); }); var port = process.env.PORT || 80; var server = app.listen(port); console.log('Express app started on port ' + port); 我的test.html文件 <!DOCTYPE html> <html> <head> <meta […]

req.locals与res.locals与res.data与req.data与快速中间件中的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(); } … 我认为我可以通过使用req .locals来通过不同的中间件获得相同的数据传播。 而且,看起来请求和响应对象在请求开始时都具有初始化为空对象的本地属性。 另外,还可以设置res.mydata或req.mydata属性呢? 从理论上讲,app.locals也可以用来通过不同的中间件传递这些数据,因为它将会持续存在于中间件中,但这与传统的app.locals的使用是相反的。 它更多地用于应用程序特定的数据。 在请求 – 响应周期结束时清除这些数据也是必要的,因此下一个请求可以使用相同的variables。 通过中间件传播中间结果的最佳和标准方法是什么?

使用节点在SASS编译期间注入variables

在我正在工作的应用程序中,我必须在客户端呈现之前dynamic编译SASS(caching系统即将到来,不用担心)。 目前我正在使用节点sass ,一切都很好。 这是我到目前为止的工作。 其他项目特定的代码已被删除,以简洁起见: var sass = require('node-sass'), autoprefixer = require('autoprefixer-core'), vars = require('postcss-simple-vars'), postcss = require('postcss'), function compileCSS() { var result = sass.renderSync({ file: 'path/to/style.scss' }); return postcss([autoprefixer]).process(result.css.toString()).css; } 现在我需要从节点传递dynamic数据,并像普通的SASSvariables那样编译。 最初我尝试使用PostCSS ,因为我注意到,variables注入是它可以做的事情 。 不幸的是,这并没有奏效。 PostCSS在编译阶段之后就开始了,这个失败很惨。 接下来,我尝试使用下划线模板尝试使用node-sass“ importer() ”进行覆盖: var result = sass.renderSync({ file: 'path/to/style.scss', importer: function(url, prev, done) { var content = fs.readFileSync(partial_path), […]

在Express / EJS模板中,什么是最简洁的方式来循环数组?

我有一个使用EJS模板设置的Express.js应用程序。 我用经典的JS语法成功地遍历了一个数组: <% for (var i = 0; i < myArray.length; i++) { this = myArray[i]; // display properties of this } %> 但是我想知道,有没有更干净的方法来做到这一点? 具体来说,我可以使用Underscore或Lodash循环与.each? 谢谢

使用Express的Node.js:在Jade视图中使用脚本标记导入客户端JavaScript?

我有一个运行Jade模板引擎的node.js express服务器。 我有一个布局的翡翠文件,导入个人意见的正文像这样: !!! html head title= title || 'Title not set.' body #header h1 Header. #content!= body //- this renders the body of an individual view #footer p Footer. 例如,下面的索引页面: p Welcome to the front page. p This page serves as a now.js test. 这工作正常。 不过,我现在想包含两个客户端JavaScript库专门为此索引页(因此不是每个页面,这就是为什么我不能把它放在布局的头)。 这工作: //- import jquery script(type='text/javascript', src='./jquery-1.5.2.min.js'); //- import […]

如何在使用express / connect和会话存储时查找会话ID?

如果用户已经login并尝试在新实例中重新login,我希望它注销另一个用户实例。 我不希望同一个用户在我的应用程序上login两次。 目前会话存储在Redis存储中,我使用快速/连接来处理会话存储。 可用于破坏会话的function之一如下: .destroy(sid, callback) 但是,我需要find该会话ID,然后再调用.destroy()。 在Redis中,用户名被存储为会话的一部分。 问题:是否可以通过查询Redis来获取基于用户名的会话ID?

如何将socket.io与webpack-hot-middleware一起使用?

我有一个使用webpack-dev-middleware的Koa服务器和使用热模块replace(HMR)的webpack-hot-middleware,所以中间件使用一个websocket将更改推送到客户端。 但是我的应用程序代码在客户端和Koa服务器之间也需要自己的websocket连接。 我不知道如何实现? 看起来好像两个是相冲突的。 我可以并排吗? 我的服务器代码看起来像这样 const compiler = webpack(webpackConfig) const app = new Koa() app.use(webpackDevMiddleware(compiler, { quiet: true, noInfo: true stats: { colors: true, reasons: true } }))) app.use(webpackHotMiddleware(compiler)) const server = require('http').createServer(app.callback()) const io = require('socket.io')(server) io.on('connection', function() { console.log('socket connection!!') }) 和我的客户端一样 import Client from 'socket.io-client' const io = Client() io.on('connection', (socket) […]

如何直接使用EJS模板引擎打印variables?

我正在使用Express web框架(和EJS模板引擎)的Node.js。 当我必须打印一个variables时,我会这样做: <% if (value) { %> <%= value %> <% } %> 我可以做同样的事情,而无需打开其他括号? 喜欢: <% if (value) { PRINT VALUE } %> 这可能吗? 如何打印variables?

无法POST表单node.js – 表示

使用快车3.1.0我有一个超级简单的forms: <form action="/signup" method="post"> <div> <label>Username:</label> <input type="text" name="username"/><br/> </div> <div> <label>Password:</label> <input type="password" name="password"/> </div> <div><input type="submit" value="Sign Up"/></div> </form> 并在app.js中: /** * Module dependencies. */ var express = require('express') , routes = require('./routes') , fs = require('fs') , User = require('./models/User.js') , user = require('./routes/user') , http = require('http') , path = require('path'); […]