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 学习笔记(九)call和apply方法
Jan 11 Javascript
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
JavaScript对象链式操作代码(jquery)
Jul 04 Javascript
js获取json元素数量的方法
Jan 27 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
Feb 23 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
JScript实现表格的简单操作
Aug 15 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
浅谈Vue2.0父子组件间事件派发机制
Jan 08 Javascript
Vue服务器渲染Nuxt学习笔记
Jan 31 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将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
js中作用域的实例解析
2017/03/16 Javascript
jquery replace方法去空格
2017/05/08 jQuery
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
Vue.js组件通信的几种姿势
2017/10/23 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
python实现的登录和操作开心网脚本分享
2014/07/09 Python
Python装饰器用法示例小结
2018/02/11 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Python实现像awk一样分割字符串
2020/09/15 Python
Django权限控制的使用
2021/01/07 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
TCP/IP的分层模型
2013/10/27 面试题
财务负责人任命书
2014/06/06 职场文书
企业文化口号
2014/06/12 职场文书
会计学专业自荐信
2014/06/25 职场文书
英语投诉信范文
2015/07/03 职场文书