最基础的nodejs后端应用示例

http通信介绍

 

nodejs应用

安装nodejs环境省略(百度)

package.json

{
  "name": "node_demo",
  "main": ".app.js",
  "dependencies": {
    "body-parser": "^1.15.2",
    "express": "^4.14.0"
  }
}

app.js

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

// use可以拦截get,post等其他全部请求
// 所有请求都会拦截
app.use(bodyParser.json());

app.use(bodyParser.urlencoded({
    extended: false
}));

// 静态文件目录
app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
    res.send('hello');
});

var server = app.listen(80, function () {
    var port = server.address().port;

    console.log('Example app listening at http://localhost:%s', port);
});

然后

node app.js    // 访问浏览器 localhost:80 就能连接上来了

 

Express简单应用

像上面那样,把路由统统写到app.js在项目中显然不合适。

一个nodejs一般分为网络处理和业务逻辑处理,网络处理部分我们一般使用像Express这样的框架。

Express(http://www.expressjs.com.cn/)拥有路由模块Router,通过路由可以把路由分散到各个模块。

Express基础应用示例

项目结构

主要代码

app.js

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

// use可以拦截get,post等其他全部请求
// 所有请求都会拦截
app.use(bodyParser.json());

app.use(bodyParser.urlencoded({
    extended: false
}));

// 静态文件目录
app.use(express.static(__dirname + '/public'));

app.use('/user', require('./routes/user.js'))

var server = app.listen(80, function () {
    var port = server.address().port;

    console.log('Example app listening at http://localhost:%s', port);
});

user.js

var express = require('express');
var router = express.Router();

router.all('/list', function (req, res) {
    console.log(req.method);
    console.log(req.baseUrl);
    console.log(req.path);

    console.log(req.headers['user-agent']);
    // 获取某一请求头
    console.log(req.get('user-agent'));

    // 获取url查询参数
    console.log(req.query);
    // 获取url查询参数值
    console.log(req.query.id);

    // post请求时,获取body中的参数值
    console.log(req.body);
    console.log(req.body.id);

    res.send('hello');
})

// router.get('/:id', function (req, res) {
//     // rest风格
//     console.log(req.params.id);
//     res.send('ok');
// })

router.get('/fb', function (req, res) {
    res.status(403).send(':( forbidden!')
})

router.get('/tt', function (req, res) {
    res.contentType('application/javascript')
    res.sendFile('/ok.js', {root: __dirname + '/../public'});
})

router.get('/mm', function (req, res) {
    // 常用于ajax返回
    res.json({a:1, b:[true, 'ok']});
})

module.exports = router;

test.html

<!DOCTYPE html>
<html>
<head>
    <title>我是test页面</title>
</head>
<body>
    <h1>我是test</h1>
    <form action="/user/list?id=query_id" method="post">
        <input type="text" name="id" value="body_id">
        <input type="submit" name="" value="submit">
    </form>
</body>
</html>

然后,同样是运行

node app.js  

 

posted @ 2016-09-01 14:18  暖风叔叔  阅读(2525)  评论(0)    收藏  举报