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 相关文章推荐
javascript 节点遍历函数
Mar 28 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
jQuery事件委托之Safari
Jul 05 Javascript
基于JavaScript实现图片剪切效果
Mar 07 Javascript
vue2.0 keep-alive最佳实践
Jul 06 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
Vue实现多标签选择器
Nov 28 Javascript
vue实现鼠标移过出现下拉二级菜单功能
Dec 12 Javascript
详解React 元素渲染
Jul 07 Javascript
js实现点击上传图片并设为模糊背景
Aug 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 计划任务 检测用户连接状态
2012/03/29 PHP
PHP输入流php://input介绍
2012/09/18 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
Python可变参数用法实例分析
2017/04/02 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python测试人员需要掌握的知识
2018/02/08 Python
python散点图实例之随机漫步
2018/08/27 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
超简单使用Python换脸实例
2019/03/27 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
技校生自我鉴定
2013/12/08 职场文书
勾股定理课后反思
2014/04/26 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
质量主管工作职责
2014/09/26 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
司考复习计划
2015/01/19 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL