Node之简单的前后端交互(实例讲解)


Posted in Javascript onNovember 14, 2017

node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的。

这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学node的朋友可以看一看。一方面理解服务端与客户端是如何交互的,一方面更熟悉node开发。

先贴代码:(有兴趣的可以copy到本地自己run一下)

主页面的html

index.html:

<!doctype>
<html>
 <head>
  <meta charset="utf-8">
  <title></title>
 </head>
 <body>
  <button id="btn1">food</button>
  <button id="btn2">other</button>
  <h1 id="content"></h1>

  <script type="text/javascript" src="./client.js"></script>
 </body>
</html>

接下来是服务器端的代码,运行方式是在node环境下输入命令:node server.js

server.js:

let http = require('http'); 
let qs = require('querystring'); 

let server = http.createServer(function(req, res) {
 let body = ''; // 一定要初始化为"" 不然是undefined
 req.on('data', function(data) {
  body += data; // 所接受的Json数据
 });
 req.on('end', function() { 
  res.writeHead(200, { // 响应状态
   "Content-Type": "text/plain", // 响应数据类型
   'Access-Control-Allow-Origin': '*' // 允许任何一个域名访问
  });
  if(qs.parse(body).name == 'food') {
   res.write('apple');
  } else {
   res.write('other');
  } 
  res.end();
 }); 
});

server.listen(3000);

引入的qs模块用于解析JSON

req.on('data', callback);  // 监听客户端的数据,一旦有数据发送过来就执行回调函数

req.on('end', callback); // 数据接收完毕

res  // 响应

客户端的js(功能就是负责一些DOM操作以及发送ajax请求)

client.js:

let btn1 = document.getElementById('btn1');
let btn2 = document.getElementById('btn2');
let content = document.getElementById('content');

btn1.addEventListener('click', function() {
 ajax('POST', "http://127.0.0.1:3000/", 'name='+this.innerHTML);
});

btn2.addEventListener('click', function() {
 ajax('POST', "http://127.0.0.1:3000/", 'name='+this.innerHTML);
});

// 封装的ajax方法
function ajax(method, url, val) { // 方法,路径,传送数据
 let xhr = new XMLHttpRequest();
 xhr.onreadystatechange = function() {
  if(xhr.readyState == 4) {
   if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {
    content.innerHTML = xhr.responseText;
   } else {
    alert('Request was unsuccessful: ' + xhr.status);
   }
  }
 };

 xhr.open(method, url, true); 
 if(val)
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
 xhr.send(val);
}

这个简单的交互就是这样的,其实我们在第一次学习后端语言的时候第一件事就是写一个前后端交互程序,这样会帮助我们更好的理解前后端的分工。

run方法:

先将server.js运行起来,然后打开html来请求响应。

以上这篇Node之简单的前后端交互(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
图片img的src不变让浏览器重新加载实现方法
Mar 29 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
基于Three.js插件制作360度全景图
Nov 29 Javascript
js仿淘宝商品放大预览功能
Mar 15 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 Javascript
vue组件从开发到发布的实现步骤
Nov 11 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 #Javascript
使用Vue-Router 2实现路由功能实例详解
Nov 14 #Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 #Javascript
js实现数组内数据的上移和下移的实例
Nov 14 #Javascript
vue router使用query和params传参的使用和区别
Nov 13 #Javascript
vue+vue-validator 表单验证功能的实现代码
Nov 13 #Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 #jQuery
You might like
十天学会php之第九天
2006/10/09 PHP
配置支持SSI
2006/11/25 PHP
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
PHP中的Memcache详解
2014/04/05 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
Javascript 实用小技巧
2010/04/07 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
vue实现信息管理系统
2020/05/30 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
python字典get()方法用法分析
2015/04/17 Python
Python的语言类型(详解)
2017/06/24 Python
Python编写一个优美的下载器
2018/04/15 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
python实现扫雷小游戏
2020/04/24 Python
南京某公司笔试题
2013/01/27 面试题
建筑施工员岗位职责
2013/11/26 职场文书
副总经理工作职责
2013/11/28 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
减负增效提质方案
2014/05/23 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
新党员入党决心书
2015/09/22 职场文书