node08---Express框架
一、Express框架
Express框架是后台的Node框架,所以和jQuery、zepto、yui(雅虎的)、bootstrap都不一个东西。
Express在后台的受欢迎的程度,和jQuery一样,就是企业的事实上的标准。 ● 原生Node开发,会发现有很多问题。比如:
■ 呈递静态页面很不方便,需要处理每个HTTP请求,还要考虑304问题
■ 路由处理代码不直观清晰,需要写很多正则表达式和字符串函数
■ 不能集中精力写业务,要考虑很多其他的东西 我们自己可以把第一天的作业,就是那个静态文件服务给封装成为模块。封装的越多,就自己做出了类似Express的东西。 ● EXPRESS的哲学是在你的想法和服务器之间充当薄薄的一层。这并不意味着他不够健壮,或者没有足够的有用特性,而是尽量少干预你,让你充分表达自己的思想,同时提供一些有用的东西。 英语官网:http://expressjs.com/
中文官网:http://www.expressjs.com.cn/
整体感知,Express框架。
安装Express框架,就是使用npm的命令。
npm install --save express
--save参数,表示自动修改package.json文件,自动添加依赖项。(也可以直接复制过来) 路由能力:
var express = require("express"); var app = express(); app.get("/",function(req,res){
res.send("你好");
}); app.get("/haha",function(req,res){
res.send("这是haha页面,哈哈哈哈哈哈");
}); app.get(/^\/student\/([\d]{10})$/,function(req,res){
res.send("学生信息,学号" + req.params[0]);
}); app.get("/teacher/:gonghao",function(req,res){
res.send("老师信息,工号" + req.params.gonghao);
}); app.listen(3000); 静态文件伺服能力:
app.use(express.static("./public")); 模板引擎:
var express = require("express"); var app = express(); app.set("view engine","ejs"); app.get("/",function(req,res){
res.render("haha",{
"news" : ["我是小新闻啊","我也是啊","哈哈哈哈"]
});
}); app.listen(3000); 我们学习的是Express4.X,和Express3.X差别非常大。
二、路由
当用get请求访问一个网址的时候,做什么事情:
app.get("网址",function(req,res){ }); 当用post访问一个网址的时候,做什么事情:
app.post("网址",function(req,res){ }); 如果想处理这个网址的任何method的请求,那么写all
app.all("/",function(){ }); 这里的网址,不分大小写,也就是说,你路由是
app.get("/AAb",function(req,res){
res.send("你好");
});
实际上小写的访问也行。
所有的GET参数,? 后面的都已经被忽略。 锚点#也被忽略
你路由到/a , 实际/a?id=2&sex=nan 也能被处理。 正则表达式可以被使用。正则表达式中,未知部分用圆括号分组,然后可以用req.params[0]、[1]得到。
req.params类数组对象。
app.get(/^\/student\/([\d]{10})$/,function(req,res){
res.send("学生信息,学号" + req.params[0]);
}); 冒号是更推荐的写法。
app.get("/student/:id",function(req,res){
var id = req.params["id"];
var reg= /^[\d]{6}$/; //正则验证
if(reg.test(id)){
res.send(id);
}else{
res.send("请检查格式");
}
}); 表单可以自己提交到自己上。
app.get("/",function(req,res){
res.render("form");
}); app.post("/",function(req,res){
//将数据添加进入数据库
res.send("成功");
}); 适合进行 RESTful路由设计。简单说,就是一个路径,但是http method不同,对这个页面的使用也不同。
/student/345345
get 读取学生信息
add 添加学生信息
delete 删除学生新
01.js
var express = require("express");//引入文件夹,不用http库 var app = express(); app.get("/",function(req,res){//http://localhost:3000/
res.send("你好");
}); app.get("/haha",function(req,res){//http://localhost:3000/haha
res.send("这是haha页面,哈哈哈哈哈哈");
}); app.get(/^\/student\/([\d]{10})$/,function(req,res){//http://localhost:3000/student2222
res.send("学生信息,学号" + req.params[0]);
}); app.get("/teacher/:gonghao",function(req,res){//http://localhost:3000/teacher/:gonghao
res.send("老师信息,工号" + req.params.gonghao);
}); app.listen(3000);
02.js
/**
* Created by Danny on 2015/9/22 9:22.
*/
var express = require("express"); var app = express(); app.use(express.static("./public"));//use表示使用中间件,public是一个工程的文件夹根目录,提供静态服务器。 app.get("/haha",function(req,res){
res.send("haha ");
}); app.listen(3000);
03.js
/**
* Created by Danny on 2015/9/22 9:37.
*/
var express = require("express");
var app = express(); app.set("view engine","ejs");//相当于引入require("ejs"); app.get("/",function(req,res){
res.render("haha",{//默认从views文件夹找haha.ejs
"news" : ["我是小新闻啊","我也是啊","哈哈哈哈"]
});
}); app.listen(3000); /*
haha.ejs :
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>哈哈哈哈</h1>
<ul>
<% for(var i = 0 ; i < news.length ; i++){ %>
<li><%= news[i] %></li>
<% } %>
</ul>
</body>
</html>
*/
04.js
/**
* Created by Danny on 2015/9/22 9:37.
*/
var express = require("express");
var app = express(); //无视大小写,? #
app.get("/AAb",function(req,res){
res.send("你好");
}); // 冒号 http://localhost:3000/student/123456 输出:123456
app.get("/student/:id",function(req,res){
var id = req.params["id"];
var reg= /^[\d]{6}$/;
if(reg.test(id)){
res.send(id);
}else{
res.send("请检查格式");
}
}); //冒号 http://localhost:3000/etudent/1234567 输出:etudent1234567
app.get("/:username/:oid",function(req,res){
var username = req.params["username"];
var oid = req.params["oid"]; res.write(username);
res.end(oid);
}); app.listen(3000);
05.js
/**
* Created by Danny on 2015/9/22 10:22.
*/
var express = require("express"); var app = express(); //设置模板引擎
app.set("view engine","ejs"); app.get("/",function(req,res){
res.render("form");
}); app.post("/",function(req,res){
//将数据添加进入数据库
res.send("成功");
}); app.listen(3000); /*
views文件夹中form.ejs:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="#" method="post">
<input type="text" name="name"/>
<input type="text" name="age"/> <input type="submit"/>
</form>
</body>
</html>*/
node08---Express框架的更多相关文章
- Node.js、Express框架获取客户端IP地址
Node.js //传入请求HttpRequest function getClientIp(req) { return req.headers['x-forwarded-for'] || req.c ...
- Win8.1 安装Express 框架
1.安装Windows Node.js客户端 2.安装Express框架 我本机是Win8.1的,使用命令npm install -g express安装Express,安装完成后显示一些安装明细,刚 ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- Node.js Express 框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
- express框架路由配置及congtroller自动加载
express框架在node官方推荐的一个框架,关于如何入门的文章,已经很多了,我就不在累赘了,本文的核心是如何修改文件使得更接近一个MVC的框架 express原生是通过require的方式实现了模 ...
- nodejs学习笔记二:解析express框架项目文件
上一章介绍了如何去创建一个express框架的工程项目,这章介绍一下express框架下的文件和用法解析,上一张我们创建的工程项目结构图如下: models是不属于原工程项目结构,为了实现数据模型后添 ...
- nodejs学习笔记一:安装express框架并构建工程目录
偶遇node是在一个阳光明媚的上午,无意间打开博客看到一片关于nodejs的介绍,通读全篇后,心情跌宕起伏,哎呀,这么好的东西我竟然现在才知道,这是最气的,于是马上开始制定学习nodejs计划,好了, ...
- Express框架使用以及数据库公共操作类整理(Win7下的NodeJs)
具体步骤: 1.安装开发工具WebStorm: 2.安装node/npm(下载地址:https://nodejs.org/download/)选择适合你的xxx.mis安装: 3.安装express框 ...
- express 框架之session
一.什么是session? 最近在学习node.js 的express框架,接触到了关于session方面的内容.翻阅了一些的博客,学到了不少东西,发现一篇博文讲的很好,概念内容摘抄如下: Sessi ...
- 从零开始学习Node.js例子四 多页面实现数学运算 续一(使用connect和express框架)
1.使用connect框架 .use方法用于绑定中间件到connect服务器,它会配置一系列在接到请求时调用的中间件模块,此例中我们要配置的中间件有favicon logger static rout ...
随机推荐
- ZOJ 3633 Alice's present RMQ
Alice's present Description As a doll master, Alice owns a wide range of dolls, and each of them ha ...
- nyoj--1185--最大最小值(线段树)
最大最小值 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数 ...
- Sort和UnSort的小技巧
Sort和UnSort的小技巧: 记录sortidx,对sortidx再从小到大排序就可以得到用于还原的unsortidx. 对于序列A: sort_idx = np.argsort(A) un_so ...
- zset 有序集合
zadd key score1 value1 score2 value2 .. 添加元素 redis 127.0.0.1:6379> zadd stu 18 lily 19 hmm 20 lil ...
- IBM 总架构师:话说程序员的职业生涯
作者:IBM 软件集团大中华区总架构师 寇卫东 有一些年轻的程序员向我咨询,将来的路应该怎么走?俗话说,条条大路通罗马.不同的路都能走向成功.到底选哪条路,取决于自己的兴趣.可能有程序员会问:如果还没 ...
- 大话主席(superslide和 touchslide)插件的使用
对于实现效果来说,插件的办事效率真的是太高了,而且里边也被处理过兼容性,用起来实在是特别方便,现在我们来说说大话主席中的slide插件,它分为pc端(superslide)和移动端(touchslid ...
- hdu 3572 Task Schedule【 最大流 】
求出最大流,再判断是否满流 先不理解为什么要这样建图 后来看了这一篇题解 http://blog.csdn.net/u012350533/article/details/12361003 把0看做源点 ...
- 别让好想法埋没:如何进行APP开发?
经常和许多创业者讨论,发现很多人想法都不错,但是都不知道该如何实现,今天就如何引导大家走出第一步写一篇文章,很多人通常误会一件事情,认为程序员开发可以一步步把自己的想法拼接出来,我有一个功能点,就让程 ...
- win7(32位)旗舰版共享HP1010打印机给WINXP专业版
一.状况: 两台电脑,同一网段内,电脑A是WIN7系统(32位),电脑B是WINXP系统. ①电脑A(win7)已经安装完打印机驱动,能正常打印,对该打印机HP1010共享时,提示“无法保存打印机设置 ...
- jQuery选择器、事件、节点、动画效果
一.选择器 基本选择器: 标签选择器: $("h1").css() 类选择器: $(".c").css() id选择器: $(&quo ...