Nodejs 新手问问express中jade怎么写个button回调controller里面的方法啊?
Nodejs 新手问问express中jade怎么写个button回调controller里面的方法啊?
我在controller写了个function,然后有在routes里面写了app.get它的routes,最后是在view中写到 button.btn(action=‘route’) Click
为啥这个route没反映的? 求个例子……
针对您的问题,我将为您详细解释如何在Express应用中使用Jade模板引擎来创建一个按钮,并通过该按钮调用控制器中的方法。我们将分步骤进行说明。
步骤1: 创建控制器
首先,我们需要在控制器中定义一个函数。假设我们有一个名为usersController.js
的文件,其中包含一个简单的处理用户信息的函数:
// controllers/usersController.js
exports.showUserInfo = function(req, res) {
// 这里可以添加逻辑,比如从数据库获取用户信息
res.render('users', { title: '用户信息' });
};
步骤2: 设置路由
接下来,在routes/index.js
文件中设置一个路由,将请求映射到上述控制器中的函数:
// routes/index.js
var express = require('express');
var router = express.Router();
var usersController = require('../controllers/usersController');
/* GET 用户信息页面 */
router.get('/userInfo', usersController.showUserInfo);
module.exports = router;
步骤3: 使用Jade模板
现在,让我们转向视图部分。在views/users.jade
文件中,我们可以添加一个按钮,当点击时触发特定的服务器端操作(例如提交表单或发送AJAX请求)。
这里,我们将使用表单提交来模拟按钮点击效果:
// views/users.jade
extends layout
block content
h1= title
form(action='/userInfo', method='get')
input(type='submit', value='获取用户信息')
注意,这里的form
标签用于提交到/userInfo
路径,这与我们在路由中定义的路径相匹配。当用户点击按钮时,浏览器会向服务器发送GET请求到/userInfo
,从而触发showUserInfo
函数。
注意事项
- 上述示例仅作为演示用途,实际应用中可能需要更复杂的逻辑。
- 如果你希望实现异步操作(如AJAX请求),你可以考虑使用JavaScript库(如jQuery)来发送请求,并在客户端处理响应。
- 确保你的Express应用正确配置了静态文件服务,以便能够访问必要的CSS、JS等资源。
以上就是如何在Express中使用Jade模板创建一个按钮并将其与控制器中的方法关联起来的基本步骤。希望这对您有所帮助!
button为什么要设置action属性?不太理解。
我以为action是指它相应的回调。。。那要怎么搞呢……
view-jade: button.btn.btn-primary(method=“delete”,action="/users/deleteUser/"+user.index) DEL
routes: app.del(’/userAccount/deleteUser/:userId’,userAccount.deleteUser) app.param(‘userId’, userAccount.user)
controller - method: exports.deleteUser = function(req,res){ console.log(‘wanna del user.’) }
exports.user = function(req, res, next, id){ UserAccount .find({index:id}) .exec(function(err,user){ if(err) next(err) if(!user) next(new Error(‘no user of this id.’)) req.profile = user next() }) }
要在Express应用中通过Jade模板中的按钮触发控制器方法,你需要确保正确地设置前端表单提交或按钮点击事件,并且在后端正确处理这些请求。下面是实现这一功能的一个简单示例。
后端(Controller)
首先,定义你的控制器方法。假设你的控制器文件名为controller.js
:
// controller.js
exports.handleClick = function(req, res) {
console.log("Button clicked!");
// 在这里可以添加你想要执行的任何逻辑
res.send('Button clicked successfully!');
};
然后,在你的路由文件中(例如routes/index.js
),将这个方法映射到一个路由上:
// routes/index.js
const express = require('express');
const router = express.Router();
const controller = require('../controllers/controller');
router.post('/handleClick', controller.handleClick);
module.exports = router;
前端(Jade模板)
在你的Jade模板中,创建一个按钮并使用表单来发送POST请求到上面定义的路由:
// views/index.jade
doctype
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
h1= message
form(action="/handleClick", method="post")
button(type="submit") Click Me!
注意:
- 我们使用了
form
标签,并设置了action
属性为/handleClick
,这是我们在路由中定义的路径。 method="post"
表明这是一个POST请求。button
标签用于创建按钮,当用户点击该按钮时,表单会提交到指定的URL。
这样设置之后,当你点击页面上的按钮时,它会向服务器发送一个POST请求到/handleClick
,服务器会调用控制器中的handleClick
方法来处理这个请求。
如果你只是想触发某种行为而不是通过表单提交,你可能需要使用JavaScript(如jQuery)来监听按钮点击事件并发送AJAX请求。上述示例展示了如何通过表单提交来达到目的,这通常是最直接的方式。