zoukankan      html  css  js  c++  java
  • nodejs(三)上之express

      • express
        • 简介
          • Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
          • 使用 Express 可以快速地搭建一个完整功能的网站
        • 安装并运行
          • sudo npm install express
          • var express = require(“express”);
            var app = express();//初始化
        • 核心功能
          • 路由
            • get方法 — 根据请求路径来处理客户端发出的GET请求
            • app.get(path,cb);
              *   path:为请求的路径
              *   cb  :第二个参数为处理函数的回调,有两个参数request和response,代表请求信息和响应信息
            • 前端页面代码
              • <!DOCTYPE html>
                <html lang=“en”>
                <head>
                    <meta charset=“UTF-8”>
                    <title>Title</title>
                </head>
                <body>
                <form action=“/list” method=“post”>
                    用户名:<input type=“text” name=“user”><br>
                    密码: <input type=“password”><br>
                    <input type=“submit” value=发送>
                </form>
                </body>
                </html>
            • 服务端
              • //处理get方式发送的请求
                app.get(“/“, function (req,res) {
                    //返回一个静态文件
                    res.sendFile(__dirname+”/post.html”);
                });
                app.get(“/list”, function (req,res) {
                    //返回一个字符串
                    res.send(“get”+req.url);
                });
                app.post(“/list”, function (req,res) {

                    res.send(“post”+req.url);
                });
                //all就是处理不管是任何方式发送的请求,*为任意路径
                app.all(“*”, function (req,res) {
                    res.send(“Welcome to Express”);
                });
                //设置端口号
                app.listen(8080);
            • 获取请求的参数
              • 获取请求参数
                *  req.host:返回请求头里取的主机名(不含端口号)
                *  req.path:返回请求的url的路径名
                *  req.query:是一个可获取客户端get请求路径参数的对象属性,包含着被解析过的请求参数对象,默认为{}
                *  req.params:获取路由的parameters
            • 获取返回的参数
              • 4.返回参数
                *   res.send();返回数据,默认会转为字符串,编码为utf8
                *   res.sendFile();返回文件
                *   res.sendStatus();返回状态码
            • 例子
          • 中间件
            • 概念
              • 中间件就是处理HTTP请求的函数,用来完成各种特定的任务,比如检测用户是否登录,分析数据,以及其他在需要最终将数据发送给用户之前完成的任务
                * 特点:
                * 1.每个中间件都可以控制流程是否继续执行
                * 2.每个中间件的req res都是用的同一个对象
                * 3.如果出错了,转交错误处理中间件进行处理
                * 4.最大的特点是,一个中间件处理完,可以把相应数据再传递给下一个中间件
                * 5.如果调用回调函数的next参数表示将请求数据传递给下一个中间件
            • 例子:
              • //中央发了100快钱
                app.use(function (req,res,next) {
                    req.money = 100;
                    next();
                });
                //市政府
                app.use(function (req,res,next) {
                    req.money -= 20;
                    //如果next传了一个不为null的参数,说明有错,会中止其他中间件并执行错误处理中间件
                    next(钱丢了”);
                });
                //
                app.use(function (req,res,next) {
                    req.money -= 50;
                    next();
                });
                //错误处理中间件
                app.use(function (err,req,res,next) {
                    console.error(err);
                    res.end(err);
                });

                app.all(‘/*’, function(req,res){
                    res.send(“”+req.money);
                });

                app.listen(8080);
          • 模板引擎
            • 模板引擎-首先需要先安装才能用
              *   nam install ejs
              *   1.指定渲染模板引擎
              *       app.set(“view engine”,”ejs”);
              *   2.设置放模板文件的目录
              *       add.set(“views”,path.join(__dirname,”/“));
              *   3.rander函数,对网页模板进行渲染,在渲染模板时locals可谓其模板传入变量值,在模板中就可以条用所传变量了
              *       res.rander(view,[local],callback);
            • 前端代码
              • <!DOCTYPE html>
                <html lang=“en”>
                <head>
                    <meta charset=“UTF-8”>
                    <title>Title</title>
                </head>
                <body>
                姓名:<%=name%><br>
                年龄:<%=age%>
                哪谁的年龄也是:<%=age%>
                </body>
                </html>
            • 服务器端代码
              • app.set(“view engine”,”ejs”);
                app.set(“views”,__dirname);//放在当前目录下
                app.get(“/“, function (req,res) {
                    //默认模板文件后缀格式是pjs
                    res.render(“muban”,{
                        name:”tangcaiye”,
                        age:18
                    });
                });
          • cookie
            • 安装cookie-parser模块
            • npm install cookie-parser
            • 代码
              • var express = require(“express”);
                var cookieParser = require(“cookie-parser”);

                var app = express();
                app.use(cookieParser());

                app.get(“/“, function (req,res) {
                    //如果请求中cookie存在visited,则输出cookie
                    //否则,设置cookie字段visited,并设置过期时间
                    if (req.cookies.visited){
                        res.send(已访问过”);
                    }else {
                        res.cookie(“visited”,”1”,{maxAge: 10*60*1000});
                        res.send(第一次访问”);
                    }
                });

                app.listen(8080);
            • 参数说明
              • expires:cookie的过期时间,GMT格式。如果没有指定或者设置为0,则产生新的cookie。
              • maxAge:是设置过去时间的方便选项,其为过期时间到当前时间的毫秒值。
        • api网址:
          • https://www.zybuluo.com/XiangZhou/note/208532
  • 相关阅读:
    mongodb修改bindIp和启动关闭
    把eclipse上的web项目导入IDEA
    项目重构也许更好——《梦断代码》读后感
    安卓记账本开发——数据库创建和数据测试
    开源的魅力——《梦断代码》读后感
    GitHub 网站上不去/加载慢/加载不全 解决办法
    安卓记账本开发——适配器编写和测试
    上传和下载
    cookie
    分页sql
  • 原文地址:https://www.cnblogs.com/yuanyingke/p/5982859.html
Copyright © 2011-2022 走看看