码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • node笔记及实践代码


    1、express static实现静态资源

    // 这里app.use是一个中间件,所谓中间件其实也是一个路由,
    // 是一个可以处理所有http请求的路由
    //相当于访问一个绝对路径
    第一种 直接访问public
    app.use(express.static(path.join(__dirname, '/public')))
    第二种 以/public访问public
    app.use('/public', express.static(path.join(__dirname, '/public')))
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2、path

    process.cwd()返回当前工作目录。如:调用node命令执行脚本时的目录。
    
    当前文件的绝对路径 __filename
    当前文件夹的绝对路径 __dirname 
    拼接路径path.join(__dirname,'index.html')
    
    返回path的目录名
    path.dirname('/目录1/目录2/目录3');
    // 返回: '/目录1/目录2'
    
    返回扩展名
    path.extname('index.html');
    // 返回: '.html'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3、url路径解析模块

    //url模块
    var urlObj = url.parse(req.url, true);
    var query = urlObj.query;
    
    //querystring模块
    querystring.stringify()
    querystring.parse();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4、params传参的形式

    //请求参数是虚拟的
    .get('/api/product/remove/:id', api.removeProduct);
    //前端ajax请求路径
    '/api/product/remove/'+ [变量]
    //后台 api.removeProduct接口获取参数
    则req.params 获取参数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5、表单提交

    //配置
    var bodyParser = require("body-parser");
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(bodyParser.json())
    //使用
    req.body;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6、获取请求信息

    req上面包含了所有的请求信息
    打印一下,找到你想要的
    
    • 1
    • 2
    const host = req.headers['x-forwarded-host'] || req.host;
    
    • 1
    	给浏览器种cookie,可以在控制台的cookie查看
         res.cookie('gpc', 'haha', {
              maxAge: 0,
          });
    
    • 1
    • 2
    • 3
    • 4
    const getIP = headers => {
      let ip = headers['x-real-ip'] || headers['ali-cdn-real-ip'];
      if (Array.isArray(ip)) {
        ip = ip[0];
      }
      if (!ip) {
        ip = headers['x-forwarded-for'];
        if (ip) {
          if (ip.includes(',') && typeof ip === 'string') {
            const ips = ip.split(/,\s*/);
            const rIsLocal = /^(10|192\.168)\./;
            if (ips.length > 1 && rIsLocal.test(ips[0]) && !rIsLocal.test(ips[1])) {
              ip = ips[1];
            }
            ip = ips[0];
          }
        }
      }
      return ip || '';
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    如何在雷电模拟器上安装Magisk并加载movecert模块抓https包(一)
    基于Android studio开发一款垃圾分类知识宣传APP
    基于Django+Vue开发的社区疫情管理系统(附源码)
    MySQL优化-查询优化
    OpenCV C++ 张正友相机标定【相机标定原理、相机标定流程、图像畸变矫正】
    python基础教程:print()函数知识点总结
    【Redis数据库百万字详解】数据类型
    扒去Spring事件监听机制的外衣,竟然是观察者模式
    Leetcode 828. 统计子串中的唯一字符
    Pycharm将python程序打包为exe文件
  • 原文地址:https://blog.csdn.net/qq_36262295/article/details/126621226
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号