Tag: 表示

使用Express 4呈现原始HTML视图

我打算从我的Express应用程序中的Jade移回到原始HTML,但是我想确保我没有失去任何模板引擎的优势,所以我想要一个解决scheme: 将cachingHTML 允许我指定一个相对于views目录的path(比如Jade),而不必为每个路由添加path.join(__dirname, "views") 。 这里最好的解决scheme是什么?

使用Express.jsdynamic更改JSON间距

我知道你可以configurationExpress输出漂亮的JSON( app.set("json spaces", 2) )或缩小的JSON( app.set("json spaces", 0) ),但有没有办法来覆盖这个全局设置特定的响应? 例如,如果我将json spaces设置为0 ,则可以执行类似下面的操作: app.get("/foo", function(req,res) { res.json({"a":"b"}, 2); }); 谢谢!

ByRef / ByVal问题?

我正在观看nodejs上的一些介绍types的video。 我遇到了一个我想到的问题,但我想了解“为什么”。 这是有问题的原始代码: var http = require("http"); var express = require("express"); var bodyParser = require('body-parser'); var app = express(); var controllers = require("./controllers"); controllers.init(app); app.use(express.static(__dirname + "/public")); app.set("view engine", "vash"); app.use(bodyParser.urlencoded({ extended: false })); 每次我去使用请求的身体对象,这将是未定义的。 我的问题是app.use(bodyParser.urlencoded({ extended: false })); 。 那么我是如何修复它的? 我把这一行上方controllers.init(app); 。 所以我想再次理解这个问题,所以我可以在将来避免这个问题。 这是一种byref / byval问题吗? 我把它传递给控制器​​后,我对应用程序对象的所有其他更改似乎工作。 任何人都可以解释这里发生了什么,以及如何防止这种情况发生在未来?

通过Express持久更新Backbone模型

我正在尝试更新在客户端的一个集合中的模型和mongo db集合中的一个文档中的数据。 该事件触发的方法,这是点击一个视图上的元素。 客户端是一个骨干的应用程序。 在服务器端,我使用带有Waterline ORM的Express和Mongodb节点。 对于这个请求我使用: app.put('/posts/:id', function(req, res){ app.models.posts.update( req.params.id, function(err, result){ if(err) return res.status(500).json({ err: err }); res.json( result ); }); }); 事件方法在视图中是: updatePost: function(e){ e.preventDefault(); //update the new content of the fields on the server. //find model to update in the collection by colleciton.findWhere. this.modelid = $(e.currentTarget).attr('id'); this.modeltoupdate = this.collection.findWhere( { […]

可变数量的paramsexpressionjs

我正在试图定义一个expression式js中的一个路由,它需要一个未知的N个参数。 它应该匹配以下路线, 捕获所有数字组: /范围 /范围/ 1/12号 /范围/ 1 /一百二十三分之一十二 等等 我写了一个正则expression式来匹配n个数字,如下所示: /(?:\/?(\d+)\/?)/g 然而global / g似乎不被允许,请参阅( github上的express js的正则expression式parsing器 )。 我在这里做错了什么? 我可以通过这样做来解决这个非常丑陋和肮脏的问题: ^\/scope\/?(\d+)?\/?(\d+)?\/?(\d+)? 但是这不是dynamic的,感觉很脏,如果我添加更深层次的范围,我总是需要添加更多/?(\ d +)正则expression式部分,这是一个不适合我的业务逻辑的模型。 我必须有一个更好的方法… 好吧,经过与@vks的讨论,这很有用,但不幸的是没有回答这个问题,我们得出的结论是,这不是一个正则expression式问题。 使用\ g修饰符,捕获所有数字组的正则expression式可以很容易地被写入,即使在JavaScript非常有限的正则expression式引擎中。 现在问题变得更加明确:由于expressjs不允许从开始到结束的完整的正则expression式,而是包含在正则expression式中使用的正则expression式,而不是允许/ g修饰符, expressjs地道的方式来解决这个问题?

Nodejs Express:login后发送不同的页面

我正在尝试使用expressjs创build一个网站。 如果他已经login,我想发送一个不同的页面给用户。 我能够发送原始的HTML网站,但链接的文件,如index.css不beeing加载! app.use(cookieParser()); app.use(expressSession({secret:'somesecrettokenhere', resave: false, saveUninitialized: true})); app.use(bodyParser()); //app.use(express.static(path.join(__dirname, '../client/login'))); // disable layout var mainPage = express.static(path.join(__dirname, '../client/main')); var loginPage = express.static(path.join(__dirname, '../client/login')); app.get('/', function (req, res, next) { console.log('getting /'); if (req.session.userName) { //app.use(express.static(path.join(__dirname, '../client/main'))); console.log("logged in"); mainPage(req, res, next); }else { //app.use(express.static(path.join(__dirname, '../client/login'))); console.log("not logged in"); loginPage(req, res, next); } }); […]

正确使用express.js API,比如get,send,redirect

我对web开发相当陌生,刚刚开始在节点上expression4.9.0。 已经通过一些教程,并玩了API。 据我所知,http协议和请求的url是一个Web应用程序的骨干。 例如,我们必须操纵url来将用户redirect到另一个页面或上传文件。 POST用于提交数据,GET用于请求数据。 此外, response.send()用于将服务器的响应发送回客户端。 根据nodejs文档,我们还必须在最后有response.end() ,(我认为这对于express来说是一样的)。 来快速部分 – 这里是我试过的一些例子,不明白为什么他们不工作: 1.在两个地方调用response.send() 动机:找出response.send()到底做了什么,我可以在不同的地方向客户端发送不同的信息。 我期望快递处理第一个app.get,然后按照下一个()到我们的下一个app.get。 最后输出“欢迎来到首页!” 和“欢迎来到第二页!”。 但是,应用程序崩溃net::ERR_EMPTY_RESPONSE 。 为什么? var express = require("express"); var http = require("http"); var app = express(); app.all("*", function(request, response, next) { response.writeHead(200, { "Content-Type": "text/plain" }); next(); }); app.get("/", function(request, response, next) { response.send("Welcome to the homepage!"); next(); }); […]

meanjs路由到服务器控制器

我想添加一个新的方法到我的控制器“matches.server.controller”名称listTeams。 我已经添加了一个新的路由到这样的matches.server.route.js文件 'use strict'; /** * Module dependencies. */ var users = require('../../app/controllers/users.server.controller'), matches = require('../../app/controllers/matches.server.controller'); module.exports = function(app) { // Match Routes app.route('/matches/listTeams') <– new route added here !! .get(matches.listteams); app.route('/matches') .get(matches.list) .post(users.requiresLogin, matches.create); app.route('/matches/:matchId') .get(matches.read) .put(users.requiresLogin, matches.hasAuthorization, matches.update) .delete(users.requiresLogin, matches.hasAuthorization, matches.delete); // Finish by binding the matches middleware app.param('matchId', matches.matchByID); }; 这是我的服务器控制器中的方法: exports.listteams […]

在MEANJS的CRUD的URL中使用slug

我需要在URL中使用slug而不是文章ID,所以我改变了由meanjs给出的文章示例中的一些东西,但是我有一个问题,我可以列出,查看和编辑,但是我不能创build新的。 我不熟悉MEAN栈,所以很可能我的修改中有一些非常错误的地方,但是我可以想办法让它工作。 创build文章时,标题会从标题中生成。 我也想被编辑,但如果我把编辑的slug字段也编辑function也停止工作… 代码来自使用垂直模块的meanjs的0.4分支。 在articles.client.service.js中,如果我改变了: angular.module('articles').factory('Articles', ['$resource', function($resource) { return $resource('api/articles/:articleSlug', { articleSlug: '@slug' }, { update: { method: 'PUT' } }); } ]); 对于: angular.module('articles').factory('Articles', ['$resource', function($resource) { return $resource('api/articles/:articleSlug', { articleSlug: '@_id' }, { update: { method: 'PUT' } }); } ]); 创buildfunction开始工作,但编辑function停止… -.- 任何帮助将不胜感激。 谢谢 这是我的articles.server.routes.js 'use strict'; /** * Module […]

多个表行名称属性为json数组

在expression中,当我从表单发表post时: <tr> <td><input type="text" name="name"></td> <td><input type="text" name="remarks"></td> </tr> <tr> <td><input type="text" name="name"></td> <td><input type="text" name="remarks"></td> </tr> var body = req.body; ,身体给我这个: { name: [ 'Tel', 'Tel2' ], remarks ['test1','test2'] } 我怎样才能得到这个json数组: {debtor: [{name:'Tel', remarks:'test1'}, {name:'Tel2', remarks:'test2'} ] 如果备注test1 is empty ,我将无法知道test2属于第1行或第2行。