express官网:---->传送门  express

express框架有许多功能,比如路由配置,中间件,对于想配置服务器的前端来说,非常便捷

自从node发展之后,基于nodejs的开发框架也不断涌现出来,express就是其中之一,最近简单的写了点express框架的简单的处理请求的demo

首先是安装express模块

npm install epxress

安装之后,在package.json中的配置文件可以看到所安装的exress的版本号

安装了express之后,开始编写服务器代码,引入express框架,还有到express需要用到的中间件

var express = require('express');   //引入nodejs  express框架
var app = express(); // express框架的中间件
var bodyParser = require('body-parser');
// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false })

因为只是简单写一个处理数据的接口,所以没有和数据库进行对接,而是只是对json数据进行简单的操作

处理get请求

 //处理get请求
app.get('/exsample', function (req, res) {
response = data;
res.end(response.toString());
console.log("返回客户端的数据类型" + typeof response);
})

处理post请求

app.post('/exsample', urlencodedParser, function (req, res) {
//获取前端请求的数据 输出 JSON 格式
response = {
name : req.body.name,
password : req.body.password,
profession : req.body.profession,
id: req.body.id
};
// res.end(JSON.stringify(response)); // 读取users.json中已存在的数据
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { var newId,userNum;
//前台提交的id
newId = response.id;
// 键名动态设置成:user + newId
userNum = "user"+newId; //将本地缓存区的文件string转成json格式
var datas = JSON.parse(data); //把前端提交的数据,动态添加到users.json中
datas[("user"+newId)] = response; // res.end(JSON.stringify(datas)); //将操作完成的json文件写入users.json文件中
fs.writeFile('users.json',JSON.stringify(datas),function(err) {
if (err) {
return console.error(err);
}
console.log("数据写入成功!");
});
});
})

在处理post和get请求时,使用nodejs的fs文件操作系统对json文件进行操作,对数据进行增删查改

前端代码使用jquery的ajax进行异步请求:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>hello world</div>
<button id="btn">点击发送</button> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){
var btn = $("#btn");
btn.on("click",function(){
//get请求
$.ajax({
method:"get",
url: "http://localhost:8081/exsample",
// dataType:'jsonp',
// jsonp:'callback',
success: function(data){
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
}); // post请求
/*$.ajax({
method:"post",
url: "http://localhost:8081/exsample",
// dataType:'jsonp',
// jsonp:'callback',
data:{
"name" : "mohit",
"password" : "password6",
"profession" : "teacher",
"id": 6
},
success: function(data){
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
}); */
});
})
</script>
</body>
</html>

ajax进行数据请求  express服务器当中的数据的时候,接口是一样的,请求的方式不一样

进入到项目命令当中时,使用node server.js启动express服务器配置文件

当前端进行get请求时:

浏览器显示所请求到的数据:

当前端进行post请求时:

命令行显示数据写入正常:

server.js的配置所有代码如下:

var express = require('express');   //引入nodejs  express框架
var app = express(); // express框架的中间件
var bodyParser = require('body-parser');
// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false }) //设置所有路由无限制访问,不需要跨域
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
}); //读取json
var fs = require('fs');
// 异步读取
fs.readFile('users.json', function (err, data) {
if (err) {
return console.error(err);
}
//处理get请求
app.get('/exsample', function (req, res) {
response = data;
res.end(response.toString());
console.log("返回客户端的数据类型" + typeof response);
}) }); //处理post请求
app.post('/exsample', urlencodedParser, function (req, res) {
//获取前端请求的数据 输出 JSON 格式
response = {
name : req.body.name,
password : req.body.password,
profession : req.body.profession,
id: req.body.id
}; // res.end(JSON.stringify(response)); // 读取users.json中已存在的数据
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { var newId,userNum;
//前台提交的id
newId = response.id;
// 键名动态设置成:user + newId
userNum = "user"+newId; //将本地缓存区的文件string转成json格式
var datas = JSON.parse(data); //把前端提交的数据,动态添加到users.json中
datas[("user"+newId)] = response; // res.end(JSON.stringify(datas)); //将操作完成的json文件写入users.json文件中
fs.writeFile('users.json',JSON.stringify(datas),function(err) {
if (err) {
return console.error(err);
}
console.log("数据写入成功!");
});
}); }) //设置端口
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})

在没有进行增删查改之前,使用到的json数据文件

{
"user1": {"name":"mohit","password":"password1","profession":"teacher","id":1}
}

整个项目包放在了博客园的后台文件,如果看到文章的童鞋有需要,可以自己看看

restful-node   点击下载

前端小白一枚,文章写的不好,请多指教~~~

基于 Node.js 平台的web开发框架-----express的更多相关文章

  1. 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...

  2. Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

    Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

  3. webStorm在Node.js平台下服务器配置及Express配置

    ************************************** 本博客从此篇开始,将从零基础开始逐渐深入地向各位博友分享node.js学习经验,如有需要请通过新浪微博@牙疼格尔联系博主, ...

  4. Koa -- 基于 Node.js 平台的下一代 web 开发框架

    http://koa.bootcss.com/ 多研究点 react 和 nodejs 这个是未来

  5. Koa--基于Node.js平台的下一代web开发框架的安装

    koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函 ...

  6. 《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

    总体介绍 <Node.js+MongoDB+AngularJS Web开发>,于2015年6月出版,是一本翻译过来的书,原书名为<Node.js,MongoDB and Angula ...

  7. KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架

    koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...

  8. 基于 Koa.js 平台的 Node.js web 快速开发框架KoaHub.js demo 可安装

    KoaHub.js demo KoaHub.js KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Fu ...

  9. KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架之koahub-yilianyun

    koahub-yilianyun 微信易联云打印机接口 koahub-yilianyun易联云打印机node接口 Installation $ npm install koahub-yilianyun ...

随机推荐

  1. java中TreeSet集合如何实现元素的判重

    /* 看一下部分的TreeSet源码.... public class TreeSet<E> extends AbstractSet<E> implements Navigab ...

  2. MemCache在win7上的可视化配置以及Nodejs/Net应用

    惯例科普:MemCache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的 ...

  3. [OpenCV] Samples 01: drawing

    基本的几何图形,标注功能. commondLineParser的使用参见:http://blog.csdn.net/u010305560/article/details/8941365 #includ ...

  4. Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role

    <Windows Azure Platform 系列文章目录> Update 2016-01-12 https://azure.microsoft.com/zh-cn/documentat ...

  5. 解决The file “FWLifeApp” couldn’t be opened because you don’t have permission to view it.问题

    The file “FWLifeApp” couldn’t be opened because you don’t have permission to view it问题是因为项目文件中的Bundl ...

  6. php+mysql+apache项目运行所遇到的一系列配置问题

    今天运行一个php项目时,突然发现访问不了了.起因应该是mac系统升级,导致apache配置文件完全恢复到了默认状态,一切归零.作为一个经验尚欠的前端,对这些后台配置完全是一窍不通,赶紧微信联系了小胖 ...

  7. Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.

    调试网站时,异常出现:Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. S ...

  8. QTableWidget的美化

      FriendTable->setFrameShape(QFrame::NoFrame);  //设置边框 FriendTable->setHorizontalHeaderLabels( ...

  9. Bootstrap学习笔记系列1-------Bootstrap网格系统

    Bootstrap网格系统 学习笔记 [TOC] 简单网格 先上代码再解释 <!DOCTYPE html> <html> <head> <title>B ...

  10. 理清那么多个OO(面向对象)

    OOA - Object-Oriented Analysis(面向对象分析) OOT - Object-Oriented Testing (面向对象测试) OOP - Object-Oriented ...