zoukankan      html  css  js  c++  java
  • 初步认识Node 之Express

      通过本文,你会对Express有一个较为具体的了解。

       起源

      2009年6月26日,TJ Holowaychuk提交了Express的第一次commit,接下来在2010年1月2日,有660次commits的Express 0.0.1版本正式发布。TJ和Ciaron Jessup是当时最主要的两个代码贡献者。截止到目前为止,Express拥有了5016次commit,版本号为4.11.1,由strongloop维护。

       定义

      Express是一个简洁而灵活的node.js web 应用框架,它提供一系列强大特性帮助你创建各种web应用。

       优秀特性

      1、路由分发

      它可以处理来自不同路径的请求

      2、请求处理

      将传入请求的handler传入request和response,对象中原先该有的还在,但是却加入了更多的新的特性。

      3、视图渲染

      Express为response对象添加了一个reader方法,主要能加载模板引擎和对应的视图文件,之后渲染成普通的HTML文档。

       安装
    npm install express
       使用

       1、Hello World

    1 var express = require('express')
    2 var app = express()
    3 
    4 app.get('/', function (req, res) {
    5   res.send('Hello World')
    6 })
    7 
    8 app.listen(3000)

      我们用get()来捕获“get / ”请求,然后调一个回调函数,这个回调函数会被传入req,res两个对象,最后只用了res的res.send来返回整个页面的字符串。当然,Express里面有很多的内置方法可以用来进行路由控制,get,post,head,delete等等,具体可以参考Express官方文档

      2、创建一个服务器

    var express = require('express');
    var app = express(); 
    
    var server = app.listen(3000, function() { 
        console.log('Express is listening to http://localhost:3000'); 
    });

       首先把expressre quire进来,然后初始化一个实例并赋值给变量app,接下来再初始化一个server监听特定的3000端口,app.listen()实际上是包装了原生的http.createServer()函数。

       3、关于处理REST API

     1 app.get('/', function (req, res) {
     2         res.render('index');
     3     });
     4     app.get('/itemslist', function (req, res) {
     5         Item.get_items(function (err, items) {
     6             if (err) {
     7                 items = [];
     8             }
     9 
    10             res.render('itemslist', {
    11                 items: items
    12             });
    13         });
    14     });
    15 
    16     app.get('/shopcart', function (req, res) {
    17         Promotion.get_all_promotion(function (err, promo) {
    18             if (err) {
    19                 promo = [];
    20             }
    21             req.session.basic_items = Increase_multiply_promotion_info(req.session.basic_items, promo);
    22             req.session.items_subtotal = caculate_item_subtotal(req.session.basic_items);
    23 
    24             console.log(req.session.basic_items, "__________________________-");
    25             res.render('shopcart', {
    26                 items: req.session.basic_items,
    27                 items_subtotalstr: add_string_to_items_subtotal(req.session.items_subtotal)
    28             });
    29         });
    30     });
    31 
    32     app.post('/shopcart', function (req, res) {
    33         req.session.allinputs = req.body.inputs;
    34         if (req.session.basic_items == undefined) {
    35             req.session.basic_items = [];
    36         }
    37 
    38         if (req.session.allinputs != undefined) {
    39             Item.get_item_from_barcode(req.session.allinputs, function (err, item) {
    40                 if (err) {
    41                     console.log("error 1");
    42                 }
    43                 var have_count_inputs = Dispose_inputs.add_count_to_barcodes(req.session.allinputs);
    44                 req.session.basic_items = Dispose_inputs.add_other_property_to_inputs(have_count_inputs, item);
    45                 res.end();
    46             });
    47         } else {
    48             console.log("empty inputs");
    49             res.end();
    50         }
    51     });

      这是一些我的关于如何处理一个小型购物网站REST API。

      

    小提示:Express 建立在connect和node之上,意味着所有的connect中间件均可以在Express中使用。

    ps:本文内容若是有误或者迷糊,还请指正或指出。

  • 相关阅读:
    python-day8(正式学习)
    Bug快到碗里来
    python-day7(正式学习)
    python-day6(正式学习)
    python-day5(正式学习)
    python-day4(正式学习)
    Django中间件
    cookie和session
    分页器,form组件的使用
    orm常用字段和数据库优化查询
  • 原文地址:https://www.cnblogs.com/wfsovereign/p/4243679.html
Copyright © 2011-2022 走看看