【发布时间】:2014-11-08 20:19:12
【问题描述】:
我打算编写我的 node.js 网页。
我正在使用 node.js 和 express 和 jam 模板。
我想使用对服务器的 POST AJAX 请求使其完全异步。 我的意思是只有一条路线,例如:
router.get('/', function(req, res) {
res.render('index', { "some": 'parameters'});
}
我正在通过客户端 ajax 调用请求,例如:
$("#logout").click(function(event){
event.preventDefault();
var payload = {
command: 'logout'
};
$.ajax({
url: "/main_page_ajax",
type: "POST",
datatype: "json",
contentType: "application/json; charset=utf-8",
processData: false,
data: JSON.stringify(payload),
success: function (result) {
var json = jQuery.parseJSON(result);
if(json.done==1){
$('#login_screen_clear').fadeIn("slow");
$('#login_screen_logged').hide();
show_message('Logout successful!');
}
else show_message('Something went wrong...!');
}
});
});
玉模板部分(index.jade):
#login_screen_logged
.log_div
h3 Hello
b#logged_name
| !
br
br
a#logout(href='/logout') Logout
#login_screen_clear
//login form
input#player_login(type='text', size='15', autocomplete='off')
input#player_pass(type='password', size='15', autocomplete='off')
input#login_button(type='submit', value='Login')
回到服务器端。处理 ajax 请求:
router.post('/main_page_ajax', function(req, res) {
switch(String(req.body.command)){
case 'logout':
var resultJson = { };
req.session.destroy(function(err) {
resultJson.done=1;
res.end(JSON.stringify(resultJson));
});
break;
}
});
好的,这是我的问题:
这对 node.js 应用程序来说是个好方法吗?
-
这种方式将使我将几乎所有容器存储在 index.jade 模板(隐藏的 div)中,这些容器将等待特定的调用。所以这个文件会随着更多的应用程序开发而增长很多。 有没有更好的地方来保存 html/jade 代码?也许 Ajax 要求它自己?示例
success: function (result) { var json = jQuery.parseJSON(result); if(json.done==1){ $('#login_screen_clear').html("<a><bunch><of><html><code>") $('#login_screen_clear').fadeIn("slow"); $('#login_screen_logged').hide(); show_message('Logout Successful!'); } else show_message('Something went wrong...!'); }
我希望有人能理解我的担忧并以正确的方式指出我。
附言。对不起我的英语不好。
【问题讨论】:
-
使用客户端框架构建SPA,如angularjs、emberjs、backbone.js、knockout、react。
标签: javascript ajax html node.js pug