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 相关文章推荐
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
改版了网上的一个js操作userdata
Apr 27 Javascript
javascript 45种缓动效果 非常酷
Jun 28 Javascript
javascript 文件的同步加载与异步加载实现原理
Dec 13 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
Dec 11 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
angular+ionic 的app上拉加载更新数据实现方法
Jan 16 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
Feb 16 Javascript
webpack打包html里面img后src为“[object Module]”问题
Dec 22 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 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 变量类型的强制转换
2009/10/23 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
接收键盘指令的脚本
2006/06/26 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
Position属性之relative用法
2015/12/14 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
vue组件实例解析
2017/01/10 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
中班中秋节活动反思
2014/02/18 职场文书
经典安踏广告词
2014/03/21 职场文书
毕业生求职信
2014/06/10 职场文书
社区志愿者活动总结
2014/06/26 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书