天天看点

NodeJs之expressNodeJs之express

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

NodeJs之expressNodeJs之express

大家看见上述信息时便代表我们的express框架已经安装完成了。

l 创建express项目

我们安装好了express之后,就可以直接在我们的js文件中通过require引用框架的功能了。此外,express给我们提供了一个方便快捷的创建express项目的方法,在这里,我便采用这种方法给大家介绍一下express的基础使用方式。

1.首先,我们在我们用命令行/终端进入我们的工程目录,然后运行一下命令:

Ø express myExpressProject

命令中的“myExpressProject”代表你要创建的express项目的名称

NodeJs之expressNodeJs之express

看见以上信息便说明我们的express项目已经创建完成了。我们看看工程目录下的myExpressProject目录下到底有些什么文件呢?

NodeJs之expressNodeJs之express

├── 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

安装完成后便可看到一下信息:

NodeJs之expressNodeJs之express

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程序运行起来了。

NodeJs之expressNodeJs之express

接下来我们就在浏览器中访问一下我们的express服务器吧

NodeJs之expressNodeJs之express
NodeJs之expressNodeJs之express

那么,到这里,我们的express服务器就算是搭建好了,我们可以根据自己的业务需要不断的扩展我们的功能,是自己的服务更加丰富起来。

继续阅读