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 相关文章推荐
Div自动滚动到末尾的代码
Oct 26 Javascript
yepnope.js使用详解及示例分享
Jun 23 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
JQuery实现级联下拉框效果实例讲解
Sep 17 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
Ionic3实现图片瀑布流布局
Aug 09 Javascript
vuex的简单使用教程
Feb 02 Javascript
JavaScript EventEmitter 背后的秘密 完整版
Mar 29 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 Javascript
基于vue 动态菜单 刷新空白问题的解决
Aug 06 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
农民C键的运用技巧
2020/03/04 星际争霸
用PHP制作静态网站的模板框架(四)
2006/10/09 PHP
php开启openssl的方法
2014/05/15 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
PHP数组实例详解
2016/06/26 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python中base64加密解密方法实例分析
2015/05/16 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python树莓派红外反射传感器
2019/01/21 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
事业单位辞职信范文
2014/01/19 职场文书
小学音乐教学反思
2014/02/05 职场文书
小学英语课后反思
2014/04/26 职场文书
课外活动总结范文
2014/07/09 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
质量保证书怎么写
2015/02/27 职场文书
地心历险记观后感
2015/06/15 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers