node.js零基础详细教程(5):express 、 路由
第五章 建议学习时间4小时 课程共10章
学习方式:详细阅读,并手动实现相关代码
学习目标:此教程将教会大家 安装Node、搭建服务器、express、mysql、mongodb、编写后台业务逻辑、编写接口,最后完成一个完整的项目后台,预计共10天课程。
express
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
其实可以简单的将express理解为node.js的一个类库:我们在使用javascript的时候,会使用到jQuery,我们可以同理将express理解为node.js的一个类库。
我们先创建一个文件夹用于放今天的代码。(我的示例代码放在exTest文件夹中)
在文件夹右键 --> 在此处打开命令行,然后输入 npm init初始化一下(中间有几个提示需要输入的地方,直接enter确定就可以)
执行完成之后,就会发现,该文件夹下多了一个 package.json的文件 。
到上图的地方就表示初始化完成了。
注:我们这里为什么要初始化呢,因为后面我们需要运行命令行安装 express,如果 没有初始化, 安装的 express就不会安装到当前目录,使用的时候就会有问题。
安装express
注:这里的 express 和 3章中讲的express-generator是不同的概念, express只是一个库,而express-generator是项目生成器,具体差别大家可以自己百度。
运行 npm install express
运行完成以后,会发现 exTest文件夹中多了个node_modules文件夹,内部就可以找到 express 模块
然后我们在 exTest文件夹中创建一个js文件来写代码,我们先使用express创建一个服务,代码如下
var express = require("express");
var app=express();
app.get('/',function(req,res){ // 这个 /表示当前根目录 访问的时候直接 localhost:3000
res.end("hello world !");
})
app.listen(3000);
代码解释: 和原生的http请求不同,这里首先引入 express模块
然后使用 express()即可直接创建一个服务,然后通过 get设置请求的路径 ,get接收两个参数,1、请求的路径("/" 表示当前路径,这就就算根目录),2、回调函数,回调函数包括两个参数(请求的对象,相应的对象),在回调函数内部,使用 end方法返回最后向页面返回的数据。
最后使用 app.listen监听3000端口。
当运行js之后,就可以通过浏览器访问 localhost:3000访问到服务了
文件如下:
运行结果如下:
浏览器访问结果:
修改上面的代码,我们多配置两个路径 /a 和 /b
var express = require("express");
var app=express();
app.get('/',function(req,res){ // 注意,这里的当前路径
res.end("just index !");
})
app.get('/a/index',function(req,res){ // 路径 /a
res.end("you get a !");
})
app.get('/b',function(req,res){ // 路径 /b
res.end("you get b !");
}) app.listen(3000);
重新运行 后 通过浏览器访问,会发现不同的路径返回了不同的值。
着就是简单的路由配置了
练习:
1、在访问的回调函数中,使用前面讲的fs模块读取一个网页文件的内容,并返回给页面
静态资源访问
上面的方式能访问某个路径,但是具体需要返回的内容,得使用代码操作返回,如果我们想访问静态的资源,比如图片或某个网页的话,就需要配置静态资源路径
首先我们在 exTest文件夹中创建一个放置静态资源的文件夹,放入图片和网页(自己找几张图表几个网页放进去即可)
然后在 exTest中创建exTest02.js 文件
写入下面代码
var express = require("express");
var path = require("path");
var app=express(); var files = express.static( path.join(__dirname,"files") ); //设置静态资源路径
app.use(files); //use这个路径设置 才可以 真正使用 app.listen(3000);
代码解释:1/2行引入了两个模块,3行生成一个服务,5行设置静态资源路径。参数中的 path.join方法可以将两个路径拼接成路径的字符串 , __dirname表示当前路径的名称。和 files拼接,就成成了 "D:\nodeTest\exTest\files" ,就可以访问到里面的图片和网页了。
6行表示将5行设置的静态资源路径使用到当前服务上。
执行 exTest02.js后,就可以通过浏览器访问静态资源了
访问图片:
访问网页文件:
这样就实现了静态资源的访问
使用express的Router实现路由的单独设定
前面讲的路由,只是简单的实现方式,下面将讲解,如何时候用express的Router来实现路由
通常我们真正开发的是,路由和入口文件是分开的,这里我们也分开写,首先创建两个js文件
exTest03.js为入口文件, router.js为路由文件
先编写exTest03.js
var express = require("express");
var path = require("path");
var router = require("./router.js");
var app=express(); var files = express.static( path.join(__dirname,"files") ); //设置静态资源路径
app.use("/",files); //使用静态资源
app.use("/",router); //使用路由设置 app.listen(3000);
上面除了引入了 express、path模块,还引入了 router模块(这个模块我们还没编写,下一步再编写),我们使用 app.use('/',router),当访问根目录(localhost:3000),就会进入router.js中的路径。
编写router.js,这里我们使用 express.Router()获得路由对象,然后给它绑定了三个路径监听,16行将rout使用接口暴露,这样当此模块被引入的时候,就可以使用该模块了
var express = require("express");
var rout=express.Router(); rout.get("/",function(req,res){
res.send("首页");
}); rout.get("/edit",function(req,res){
return res.redirect("/点击编辑.html");
}); rout.get("/img",function(req,res){
res.send("<img src='timg01.jpg' />");
}); module.exports = rout;
三个路径解释:
当访问根目录的时候,返回首页
当访问 /edit 路的时候,将路径重新定位到“点击编辑.html”的文件路径,
res.redirect()表示重定向url,重定向后 url变为了 "http://localhost:3000/点击编辑.html"
这里 之所以能直接访问到页面,是因为exTest03.js中设置了静态资源的路径
当访问 /img 路径的时候,我们返回了一个图片标签,由于exTest03.js中设置了静态资源的路径,那么 我们直接设置图片标签 src='timg01.jpg' 即可访问静态资源中的这张图片了。
好,今天就讲这么多,明天将讲解:数据库操作 mysql/mongodb。
node.js零基础详细教程(5):express 、 路由的更多相关文章
- node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(3):npm包管理、git github的使用
第三章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...
- node.js零基础详细教程(4):node.js事件机制、node异步IO操作
第四章 建议学习时间3小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(6):mongodb数据库操作
第六章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(7):node.js操作mongodb,及操作方法的封装
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(6):mongodb数据库操作 以及导入导出
第六章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(2):模块化、fs文件操作模块、http创建服务模块
第二章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...
- node.js零基础详细教程(1):安装+基础概念
第一章 建议学习时间2小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- nodejs零基础详细教程2:模块化、fs文件操作模块、http创建服务模块
第二章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...
随机推荐
- ASP.Net零碎
ASP.Net零碎 ServerPush 什么是ServerPush,服务器向客户端浏览器“推送”,其实就是“长连接”. 只有浏览器请求服务器端,服务器端才有给浏览器响应数据,不会主动向浏览器推送数据 ...
- [Monkey King]
题目描述 在一个森林里住着N(N<=10000)只猴子.在一开始,他们是互不认识的.但是随着时间的推移,猴子们少不了争斗,但那只会发生在互不认识(认识具有传递性)的两只猴子之间.争斗时,两只猴子 ...
- Java面试小试题
面试是我们每个人都要经历的事情,大部分人且不止一次,这里给大家总结最新的2016年面试题,让大家在2017年找工作时候能够事半功倍. 1 Switch能否用string做参数? a.在 Java 7 ...
- [转]ObjectARX二次开发vs编译器版本ARX版本对应说明
- 最大流算法之EK(最短路径增广算法)
这是网络流最基础的部分--求出源点到汇点的最大流(Max-Flow). 最大流的算法有比较多,本次介绍的是其中复杂度较高,但是比较好写的EK算法.(不涉及分层,纯粹靠BFS找汇点及回溯找最小流量得到最 ...
- [大数据]-Elasticsearch5.3.1+Kibana5.3.1从单机到分布式的安装与使用<1>
一.Elasticsearch,Kibana简介: Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域, Lucene可以被认为是迄今为止最先 ...
- 解析Excel文件并把数据存入数据库
前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...
- hdu4681 String DP(2013多校第8场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路: 我是胡搞过的 就是先预处理出(i,j)的正向的最大连续子串和逆向最大连续子串 然后对于A ...
- ionic之$ionicHistory
$ionicHistory 定义:当用户通过导航栏切换视图页面的时候,ionicHistory起到跟踪视图的作用,类似的浏览器的行为方式,一个ionic应用程序能够保持以前的视图,当前视图,和前视图( ...
- 介绍几个python的音频处理库
一.eyeD3 直接在google上搜索python mp3 process ,推荐比较多的就是这个第三方库了.先来看看官方介绍吧. About eyeD3 is a Python tool for ...