zoukankan      html  css  js  c++  java
  • node.js--express学习之路(四)

    前两天看了一下MySQL,记录了一下一些比较基础的语法,由于之前有自己看过sql server,感觉写法都是差不多的。所以就只是简单的看了一下,之前的领导说过,数据库难点是在于如何合理的设计。至于执行语句的,不懂就看一下文档,多用起来就自然熟悉了。

    今天又来看了一下express文档,感觉还是挺有收获的,前面写到的都是看一些资料总结的,始终是没有文档来得详细。

    下面总结一下自己觉得可能用到的东西:

    1、响应方法

    res下表中响应对象()的方法可以向客户端发送响应,并终止请求-响应循环。如果这些方法都不是从路由处理程序调用的,则客户端请求将被挂起。

    res.download()  提示要下载的文件

    res.end()  结束响应过程

    res.json()  发送JSON响应

    res.jsonp()  用JSOPN支持发送JSON响应

    res.redirect()  冲定向请求

    res.reder()  呈现视图模板

    res.send()  发送各种类型的响应

    res.sendFile()  以八位节流的形式发送文件

    res.sendStatus()  设置相应状态码并将其字符串标识形式作为响应主体发送

    看到这里才知道,前面有说到安装express之后,在app.js中要把

    app.use('/', indexRouter);

    这一句去掉,因为他里面的写法是这样的:

    router.get('/', function(req, res, next) {
      res.render('index', { title: 'Express' });
    });

    变成一直呈现这个了。

    2、如何验证用户

    我之前也是用了这个来实现路由的模块化的,之前做了一个查询一个增加的接口,后面我就一直在想,如何来实现我们每个路由验证一下是否有登录呢,一开始还想着是不是直接判断请求的参数中有没有携带token就可以。然后立马就被自己否决了,如果随便传个token岂不是也可以了。

    所以应该是每次处理接口的时候我就要先判断这个,于是就用了express中的use方法

    我们之前在index.js中添加路由api是这样写的:

    // 后端api路由
    app.use("/user", userApi);

    看了文档之后发现,这个use其实有另外一个写法,直接处理一个函数,于是我便在上面那一句之前添加了这个:

    app.use(function isLogin(req, res, next) {
        console.log("我想知道你登录没有", Date.now());
        res.code = 1002;
        next();
    });

    然后再之前写的返回的方法jsonWrite()中添加了一句判断:

    if (res.code === 1002) {
        data = {
            code: 1002,
            msg: "你都还没有登录"
        };
    }

    当然,这个只是我为了测试一下有没有用才这样写的。后面肯定是要根据项目实际来进行的。

    然后接口请求一下

     嗯!貌似已经达到了预想的效果了。

    3、中间件

    我发现express中说的比较多的就是这个词了,文档中是这么说的

    中间件功能是可以访问请求对象(req),响应对象(res)以及next应用程序请求-响应周期中的函数。该next功能是Express路由器中的一项功能,当被调用时,该功能执行当前中间件之后的中间件。中间件可以执行一下任务:

      1、执行任何代码。

      2、对请求和响应对象进行更改

      3、结束请求-响应循环

      4、调用堆栈中的下一个中间件

    如果当前的中间件功能没有结束请求-响应周期,则它必须调用next()以讲控制传递给下一个中间件功能。否则,请求将被挂起。

    一般响应参数就是"res",请求参数就是"req"

    上面说到的第二点,其实就是中间件的实现了。

    4、模板引擎

    看到这里的时候,发现第一点其实自己理解错了。哈哈。。。

    因为之前想要的效果是可以显示自己打包的vue项目,然而后台却用了模板引擎来搭建,于是他里面就有了上面说的那句,每次访问首页,都是那里面给的内容,而不是我自己要的,所以才要去掉的。

    模板引擎里面搭建出来的是jade,而文档里面介绍的是pug的,我觉得好像也还没用到,就先留个入口,后面有需要再仔细看了。https://www.php.cn/manual/view/36259.html

    还没看完。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/chao202426/p/12011468.html
Copyright © 2011-2022 走看看