搭建express服务器

来源:互联网 发布:stc15单片机 编辑:程序博客网 时间:2024/05/17 06:00

安装nodejs

https://nodejs.org/en/download/
0. 安装必要的编译环境
yum -y install gcc make gcc-c++ openssl-devel wget
1. 编译好的文件
简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你进入到对应文件的中执行命令行一点问题都没有,不过不是全局的,所以将这个设置为全局就好了。
cd node-v0.10.28-linux-x64/bin
./node -v
这就妥妥的了,node文件夹具体放在哪,叫什么名字随你怎么定。然后设置全局:
建立软连接:

ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/node /usr/local/bin/node  ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/npm /usr/local/bin/npm

这里/home/kun/mysofltware/这个路径是你自己放的。
2. 通过源码编译

wget https://nodejs.org/dist/v6.9.5/node-v6.9.5.tar.gztar xvf node-v6.9.5.tar.gz cd node-v0.10.28   ./configure --prefix=/usr/local/node make   make install   

设置环境
vim /etc/profile
第一次使用vim,用得好别扭。。。vim进入profile后,我们会看到profile文件中的内容,按下键盘i进入编辑模式,然后在文本最后面写下如下内容。

export NODE_HOME=/usr/local/node  export PATH=$NODE_HOME/bin:$PATH  export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH

输入完后,按Esc退出编辑模式,然后按下:wq,就会退出保存。然后输入以下命令才会生效 。
查看当前安装的Node的版本

node -v     v0.10.28

安装express

  1. 安装
    d选项表示一并安装依赖模块。没有-g选项的话会在当前目录(通常是项目目录)建立一个node_modules目录。
npm install express -gdnpm install -gd express-generator

安装成功后,命令行会提示 npm info ok
2. 创建
express

npm install启动npm start

如何上述方法不能运行express?

yum install epel-release
yum install nodejs
yum install npm

使用

将生成好的web项目放在publish下面 然后就可以按照路径访问。

教程

路由

路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求。

路由是由一个 URI、HTTP 请求(GET、POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [callback…], callback), app 是 express 对象的一个实例, METHOD 是一个 HTTP 请求方法, path 是服务器上的路径, callback 是当路由匹配时要执行的函数。

下面是一个基本的路由示例:

var express = require('express');var app = express();// respond with "hello world" when a GET request is made to the homepageapp.get('/', function(req, res) {  res.send('hello world');});

Express 定义了如下和 HTTP 请求对应的路由方法: get, post, put, head, delete, options, trace, copy, lock, mkcol, move, purge, propfind, proppatch, unlock, report, mkactivity, checkout, merge, m-search, notify, subscribe, unsubscribe, patch, search, 和 connect。

app.all() 是一个特殊的路由方法,没有任何 HTTP 方法与其对应,它的作用是对于一个路径上的所有请求加载中间件。

在下面的例子中,来自 “/secret” 的请求,不管使用 GET、POST、PUT、DELETE 或其他任何 http 模块支持的 HTTP 请求,句柄都会得到执行。

app.all('/secret', function (req, res, next) {  console.log('Accessing the secret section ...');  next(); // pass control to the next handler});

路由路径

路由路径和请求方法一起定义了请求的端点,它可以是字符串、字符串模式或者正则表达式。

// 匹配根路径的请求app.get('/', function (req, res) {  res.send('root');});// 匹配 /about 路径的请求app.get('/about', function (req, res) {  res.send('about');});// 匹配 /random.text 路径的请求app.get('/random.text', function (req, res) {  res.send('random.text');});

响应方法

下表中响应对象(res)的方法向客户端返回响应,终结请求响应的循环。如果在路由句柄中一个方法也不调用,来自客户端的请求会一直挂起。

res.download()  提示下载文件。res.end()   终结响应处理流程。res.json()  发送一个 JSON 格式的响应。res.jsonp() 发送一个支持 JSONP 的 JSON 格式的响应。res.redirect()  重定向请求。res.render()    渲染视图模板。res.send()  发送各种类型的响应。res.sendFile    以八位字节流的形式发送文件。res.sendStatus()    设置响应状态代码,并将其以字符串形式作为响应体的一部分发送

app.route()

可使用 app.route() 创建路由路径的链式路由句柄

app.route('/book')  .get(function(req, res) {    res.send('Get a random book');  })  .post(function(req, res) {    res.send('Add a book');  })  .put(function(req, res) {    res.send('Update the book');  });

express.Router

可使用 express.Router 类创建模块化、可挂载的路由句柄
在 app 目录下创建名为 birds.js 的文件,内容如下:

var express = require(‘express’);
var router = express.Router();

// 该路由使用的中间件router.use(function timeLog(req, res, next) {  console.log('Time: ', Date.now());  next();});// 定义网站主页的路由router.get('/', function(req, res) {  res.send('Birds home page');});// 定义 about 页面的路由router.get('/about', function(req, res) {  res.send('About birds');});module.exports = router;

然后在应用中加载路由模块:

var birds = require('./birds');...app.use('/birds', birds);

应用即可处理发自 /birds 和 /birds/about 的请求,并且调用为该路由指定的 timeLog 中间件。

错误处理

app.use(function(err, req, res, next) {  console.error(err.stack);  res.status(500).send('Something broke!');});
app.use(function(req, res, next) {  res.status(404).send('Sorry cant find that!');})

静态文件

所有文件的路径都是相对于存放目录的,因此,存放静态文件的目录名不会出现在 URL 中。
如果你的静态资源存放在多个目录下面,你可以多次调用 express.static 中间件:

app.use(express.static('public'));app.use(express.static('files'));

访问静态资源文件时,express.static 中间件会根据目录添加的顺序查找所需的文件。

如果你希望所有通过 express.static 访问的文件都存放在一个“虚拟(virtual)”目录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现,如下所示:

app.use('/static', express.static('public'));

现在,你就爱可以通过带有 “/static” 前缀的地址来访问 public 目录下面的文件了。

0 0
原创粉丝点击