NodeJs之express
l 前言
Web 应用----Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
API----丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健壮、友好的 API 变得既快速又简单。
性能----Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能。
由于以上的优越性能,使得大量的nodejs开发者都颇为喜爱这套web应用开发框架,那么,今天我们就来看看,我们到底该如何是沿用express这套框架呢。
l express的安装
由于express是基于nodejs的一套web应用开发框架,所以,在安装express框架之前,必须要确认你的电脑是否已经安装了nodejs运行环境了。(如果你的电脑尚未nodejs环境,可以直接到百度或google上搜索一下,再此便不再详细赘述)。
如果您的电脑上已经安装好了nodejs的运行环境了,那么,您只需要执行一下命令便可安装express框架了
Ø npm install -g express --save-dev
大家看见上述信息时便代表我们的express框架已经安装完成了。
l 创建express项目
我们安装好了express之后,就可以直接在我们的js文件中通过require引用框架的功能了。此外,express给我们提供了一个方便快捷的创建express项目的方法,在这里,我便采用这种方法给大家介绍一下express的基础使用方式。
1.首先,我们在我们用命令行/终端进入我们的工程目录,然后运行一下命令:
Ø express myExpressProject
命令中的“myExpressProject”代表你要创建的express项目的名称
看见以上信息便说明我们的express项目已经创建完成了。我们看看工程目录下的myExpressProject目录下到底有些什么文件呢?
├── app.js--应用核心配置文件,项目入口,相当于php项目中的 index.php、index.html。
├── bin --存放启动项目的脚本文件,默认www
│ └── www
├── package.json--项目依赖配置及开发者信息。
├── public--静态资源文件夹,默认images、javascripts、stylesheets。
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes--路由文件相当于MVC中的Controller,默认index.js、users.js。
│ ├── index.js
│ └── users.js
└── views--页面文件,相当于MVC中的view,Ejs模板或者jade模板。
├── error.jade
├── index.jade
└── layout.jade
2.项目创建完成后,我们需要进入到项目根目录并运行以下命令安装依赖:
Ø npm install
安装完成后便可看到一下信息:
3.当依赖安装完成之后,我们便可以开始写业务代码了。
创建express服务器主要有以下步骤:
i. 通过require引入模块express
ii. 创建一个express示例,如:var app = new express();
iii. 创建路由并在路由内实现业务功能
iv. 如果需要可以添加一些中间件辅助开发,如日志打印中间件morgan,以及express自带的express.static静态资源访问中间件等,引用方法很简单,直接用app.use(morgan()); 便可。
v. 最后便是对系统端口的监听,例如:app.listen(18001);
下面是我写的一个示例,实例中有详细的注释,可以参考示例实现自己的express服务器的构建。
var express = require("express");
var morgan = require("morgan");//打印日志服务模块
//创建一个Express的示例
var app = new express();
//实际应用中,我们通常会把用户认证等操作写成中间件进行调用
//注册打印日志中间件
app.use(morgan());
//服务器监听端口的定义
var port = 18001;
//当服务器监听目标端口完成时回调此方法
var listenHandler = function(){
console.log("express服务器监听[" + port + "]端口成功...");
};
//通过path的方式请求
app.get("/",function(req,res){
res.end("Hello Kiner!!\n");
});
//通过router的方式请求
var router = express.Router();
//定义路由转发路径
router.get("/kiner",function(req,res){
res.end("通过路由转发:/kiner\n");
});
router.get("/add",function(req,res){
res.end("通过路由转发:/add\n");
});
//在express中注册路由,其中第一个参数为基础路径,即我们访问时通过url:http://localhost:18001/post/kiner访问到我们定义的第一个路由处理函数
app.use("/post",router);
//采用route方式处理一个路由下不同方法的处理
app.route("/lesson")
.get(function(req,res){
//curl http://localhost:18001/lesson
res.end("路由转发:/lesson中的get方法\n");
})
.post(function(req,res){
//curl -X POST http://localhost:18001/lesson
res.end("路由转发:/lesson中的post方法\n");
});
//路由参数的用法,例如:http://example.com/news/123 其中123便是路由参数
app.param("newsId",function(req,res,next,newsId){
//在实际应用中我们通常会在这里做一些读取缓存中信息,如缓存的新闻信息的操作,然后在交给其他路由处理其他操作
//可以直接将路由参数存储到请求对象中,在做进一步的处理
req.newsId = newsId;
//处理完成后必须执行next()让程序进行下一步操作
next();
});
//现在我们来使用上面存入的newsId做一些简单的操作,注意,使用路由参数前需带上:
//请求url示例:curl http://localhost:18001/news/123 --> 路由参数为:123
app.get("/news/:newsId",function(req,res){
res.end("路由参数为:"+req.newsId+"\n");
});
//引用express的中间件实现静态文件服务,其中../../public为静态文件存放的目录
app.use(express.static("../../public"));
//指定服务器监听端口,并给定监听完成的回调函数
app.listen(port,listenHandler);
4.最后,我们完成了代码开发,肯定是需要运行代码的,现在,我们就来测试一下代码的运行情况吧。
打开命令行/终端运行一下命令
Ø node testExpress.js
如果出现下面的结果,那么,恭喜你,你的express程序运行起来了。
接下来我们就在浏览器中访问一下我们的express服务器吧
那么,到这里,我们的express服务器就算是搭建好了,我们可以根据自己的业务需要不断的扩展我们的功能,是自己的服务更加丰富起来。