node.js相当于标准的PHP ajax保存方案

Bas*_*asj 8 javascript ajax node.js express

在JavaScript(客户端)+ PHP(服务器)网站中,我有这个方案用于将" online notepad"(在#textboxtextarea中)保存到服务器:

// client-side
$("#save-button").on('click', save); 

function save(e) {
  $.ajax({ type: "POST",
           url: "/php/save.php",
           data: { projectname: $('#projectname').text(), 
                   data: $('#textbox').text() },
           success: function(data) { alert('Data saved'); },
           error: function(data) { console.log(data); } });
}
Run Code Online (Sandbox Code Playgroud)

这在服务器端(/php/save.php):

<?php

$projectname = $_POST['projectname'];
$data = $_POST['data'];

// save this into database

?>
Run Code Online (Sandbox Code Playgroud)

node.js(客户端+服务器)中等效的"post to server and save on server"方案是什么?(express例如使用)

这个任务有一个众所周知的node.js" pattern"吗?

$.ajax(...)在客户端和服务器上的node.js上使用是常见/良好的做法吗?我认为node.js引入了一种新的思维方式,不再需要ajax ......我错了吗?

Nae*_*ikh 6

  1. node.js(客户端+服务器)中等效的"发布到服务器并保存在服务器上"方案是什么?(以快递为例)

特定于您的代码,它应该看起来像这样.

客户端:-

$("#save-button").on('click', save);

function save(e) {
  $.ajax({ type: "POST",
           url: "/php/save",
           data: { projectname: $('#projectname').text(), 
                   data: $('#textbox').text() },
           success: function(data) { alert('Data saved'); },
           error: function(data) { console.log(data); } });
}
Run Code Online (Sandbox Code Playgroud)

和服务器端: -

router.post('/php/save', function(req, res) {   // server side
    var projectName = req.body.projectname;
    var data = req.body.data; 
    // save the data here to database
});
Run Code Online (Sandbox Code Playgroud)

这里我在节点中收到post数据的方式,我需要body-parser模块,所以这应该添加在顶部,

var bodyParser = require('body-parser');
Run Code Online (Sandbox Code Playgroud)

这将解析您的http请求正文,以便您可以直接访问参数req.body.data.

  1. 在客户端和服务器上的node.js上使用$ .ajax(...)是常见/好的做法吗?

$ .ajax(...)在客户端: - 当然,为什么不... $.ajax(...)当我们使用不同的后端技术,如.net或java时,我们不会使用它们?所以不需要改变你的前端,只是你在后端使用不同的技术

服务器上的节点: - 现在这是基于意见的,节点是新的,我们javascript开发人员喜欢节点,因为它是服务器端和客户端上的单一技术,我会说节点太棒了......但还有其他人会说节点是垃圾.我宁愿跳过回答这一部分.

  1. node.js引入了一种新的思维方式,不再需要ajax ......

我想你指的是websockets.是节点是一种不同的思维方式.这并没有真正取代ajax,你可以在这里找到一些信息

WebSockets的目的是在浏览器和服务器之间提供低延迟,双向,全双工和长时间运行的连接.WebSockets为浏览器应用程序开辟了新的应用程序域,这些应用程序使用HTTP和AJAX(交互式游戏,动态媒体流,桥接到现有网络协议等)实际上是不可能的.

如果您不需要WebSockets提供的特定优势,那么坚持使用AJAX和Comet等现有技术可能是一个更好的主意,因为这可以让您重新使用并与现有的大型工具,技术,安全机制生态系统集成,知识库(即stackoverflow上的人们比WebSockets更了解HTTP/Ajax/Comet)等.

这不是node.js特有的,你仍然可以在其他技术中实现websockets.

所以node.js引入了一种新的思维方式,使得ajax不再需要 - 再错了!