【Node.js入门精要】从零开始的开发之旅

说明文档:Node.js 教程_w3cschool

  1. 概念
    1. Node.js 是一个开源、跨平台的 JavaScript 运行时环境,基于 Chrome 的 V8 引擎构建,专为构建高性能和可扩展的网络应用程序而设计的服务端语言。它采用事件驱动、非阻塞 I/O 模型,能够处理大量并发连接,非常适合 I/O 密集型任务。通过 Node.js,开发者可以使用 JavaScript 编写服务器端代码,从而实现前后端统一的开发体验,并且借助庞大的 npm 包管理器生态系统,可以轻松地管理和共享代码模块。
  2. sql连接数据库
    1. 代码示例

      后端服务器运行js文件--sql.js
      const mysql=require('mysql');
      const express = require('express');
      const bodyParser = require('body-parser');
      const app=express();
      var urlencodedParser = bodyParser.urlencoded({ extended: false })// //GET路由
      // app.get('/login',function(req,res){
      //     const u = req.query.username;
      //     const p = req.query.password;
      //     console.log(u);
      //     console.log(p);
      //     if(u=='admin' && p == '123456'){
      //         res.send('欢迎进入后台管理页面');
      //     }else{
      //         res.send('登录用户或密码错误!');
      //     };
      // })//post路由
      app.post('/login',urlencodedParser,function(req,res){const u = req.body.username;const p = req.body.password;console.log(u);console.log(p);var connection = mysql.createConnection({host     : 'localhost',user     : 'root',password : 'password',database : 'demo01'});connection.connect();const sql = 'select * from admin where username="'+u+'" and password="'+p+'"';console.log(sql);connection.query(sql,function(error,data){if(error){console.log('数据库连接失败!');}try{if(u==(data[0]['username']) && p==data[0]['password']){res.send('欢迎进入后台管理页面');}}catch{res.send('错误');};})// if(u=='admin' && p == '123456'){//小迪懒,没有查询数据库判断,如果是查询数据库判断,这存在sql注入漏洞//     res.send('欢迎进入后台管理页面');// }else{//     res.send('登录用户或密码错误!');// };
      })app.get('/',function(req,res){//res.send('<hr>首页页面</hr>');res.sendFile(__dirname+'/'+'sql.html');
      })const server = app.listen(3000,function(){console.log('web的3000端口已启动!');
      })
      -----------------------------------------------------------------------------------------------------------------------
      前端登录框页面--sql.html
      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title>后台登录</title><style>body {background-color: #f1f1f1;}.login {width: 400px;margin: 100px auto;background-color: #fff;border-radius: 5px;box-shadow: 0 0 10px rgba(0,0,0,0.3);padding: 30px;}.login h2 {text-align: center;font-size: 2em;margin-bottom: 30px;}.login label {display: block;margin-bottom: 20px;font-size: 1.2em;}.login input[type="text"], .login input[type="password"] {width: 100%;padding: 10px;border: 1px solid #ccc;border-radius: 5px;font-size: 1.2em;margin-bottom: 20px;}.login input[type="submit"] {background-color: #2ecc71;color: #fff;border: none;padding: 10px 20px;border-radius: 5px;font-size: 1.2em;cursor: pointer;}.login input[type="submit"]:hover {background-color: #27ae60;}</style>
      </head>
      <body>
      <div class="login" ><h2>后台登录</h2><form action="http://127.0.0.1:3000/login" method="POST"><label for="username">用户名:</label><input type="text" name="username" id="username" class="user" ><label for="password">密码:</label><input type="password" name="password" id="password" class="pass" ><button>登录</button></form>
      </div>
      

  3. RCE代码示例
    1.   const rce=require('child_process');//若不存在child_process库的话就npm i child_process安装即可//nodejs 调用系统命令执行//rce.exec('notepad');//rce.spawnSync('calc');//nodejs 调用代码命令执行 把字符串当做代码解析eval('require("child_process").exec("calc");');
      
  4. 文件操作管理
    1. 代码示例

      后端启动间监听操作--file.js
      // 引入 Node.js 的文件系统模块 'fs',用于与文件系统交互
      const fs = require('fs');
      // 引入 Express.js 模块,这是一个用于构建 web 应用程序和 API 的流行框架
      const express = require('express');
      // 创建一个 Express 应用程序实例
      const app = express();
      // 定义一个处理 GET 请求的路由,当访问 '/file' 路由时会执行该回调函数
      app.get('/file', function (req, res) {// 从请求的查询参数中获取 'dir' 参数的值,这个参数指定了要读取的目录路径const dir = req.query.dir;// 输出 'dir' 参数的值到控制台,供调试使用console.log(dir);// 调用 'filemanage' 函数,并将 'dir' 参数传递进去,以读取指定目录的文件列表filemanage(dir);
      });
      // 启动服务器,监听 3000 端口
      var server = app.listen(3000, function () {// 输出一条消息到控制台,表示服务器已经成功启动并在监听 3000 端口console.log('web应用3000端口已启动!');
      });
      // 定义一个名为 'filemanage' 的函数,用于读取指定目录中的文件列表
      function filemanage(dir) {// 使用 'fs.readdir' 方法读取目录内容,'dir' 是目录路径,回调函数 'function(error, files)' 处理结果fs.readdir(dir, function(error, files) {// 输出目录中的文件列表到控制台。'files' 是一个包含目录中所有文件和子目录名称的数组console.log(files);});
      }
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC]

文章目录 GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内…

Unity UGUI 之 Mask

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本&#xff0c;请注意分别 1.什么是遮罩 遮罩是一…

运算符 、、|、|| 、短路符【|| 、】<< 、>>

》》》&&是逻辑与运算符&#xff0c;|| 是逻辑或运算符 &#xff01;是逻辑非运算符 逻辑与运算符&#xff1a;全为真&#xff08;1&#xff09;即结果为真&#xff08;1&#xff09;&#xff0c;一个为假即全为假&#xff08;0&#xff09; 逻辑或运算符&#xff1a;…

shell循环语句

一&#xff0c; 循环语句 1.for循环语句 读取不同的变量值&#xff0c;用来逐个执行同一组命令 格式 for 变量名 in 取值列表 do 命令序列 done 1.1 列表循环 [rootlocalhost /home]# vim demo32.sh #!/bin/bash for i in {a..c} doecho $i done ~ [rootlocalhost /ho…

数据结构·AVL树

1. AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果存数据时接近有序&#xff0c;二叉搜索将退化为单支树&#xff0c;此时查找元素效率相当于在顺序表中查找&#xff0c;效率低下。因此两位俄罗斯数学家 G.M.Adelson-Velskii 和E.M.Landis 在1962年发明了一种解…

Pytorch深度学习实践(5)逻辑回归

逻辑回归 逻辑回归主要是解决分类问题 回归任务&#xff1a;结果是一个连续的实数分类任务&#xff1a;结果是一个离散的值 分类任务不能直接使用回归去预测&#xff0c;比如在手写识别中&#xff08;识别手写 0 − − 9 0 -- 9 0−−9&#xff09;&#xff0c;因为各个类别…

了解Java虚拟机(JVM)

前言&#x1f440;~ 上一章我们介绍网络原理相关的知识点&#xff0c;今天我们浅浅来了解一下java虚拟机JVM JVM&#xff08; Java Virtual Machine &#xff09; JVM内存区域划分 方法区/元数据区&#xff08;线程共享&#xff09; 堆&#xff08;线程共享&#xff09; 虚…

iOS object-C 解答算法:找到所有数组中消失的数字(leetCode-448)

找到所有数组中消失的数字(leetCode-448) 题目如下图:(也可以到leetCode上看完整题目,题号448) 光看题看可能有点难以理解,我们结合示例1来理解一下这道题. 有8个整数的数组 nums [4,3,2,7,8,2,3,1], 求在闭区间[1,8]范围内(即1,2,3,4,5,6,7,8)的数字,哪几个没有出现在数组 …

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…

网闸(Network Gatekeeper或Security Gateway)

本心、输入输出、结果 文章目录 网闸(Network Gatekeeper或Security Gateway)前言网闸主要功能网闸工作原理网闸使用场景网闸网闸(Network Gatekeeper或Security Gateway) 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 如果觉得本文对你有帮助…

c++如何理解多态与虚函数

目录 **前言****1. 何为多态**1.1 **编译时多态**1.1.1 函数重载1.1.2 模板 **1.2 运行时多态****1.2.1 虚函数****1.2.2 为什么要用父类指针去调用子类函数** **2. 注意****2.1 基类的析构函数应写为虚函数****2.2 构造函数不能设为虚函数** **本文参考** 前言 在学习 c 的虚…

C++ | Leetcode C++题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; class Solution { public:int hIndex(vector<int>& citations) {int n citations.size();int left 0, right n - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > n - mid) {right m…

全球“微软蓝屏”事件:IT基础设施韧性与安全性的考验

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

git配置环境变量

一.找到git安装目录 打开此git安装目录下的bin文件&#xff0c;复制此文件路径 二.配置环境变量 2.1 右键点击此电脑的属性栏 2.2 点击高级系统配置 2.3 点击环境变量 2.4 按图中步骤进行配置 三.配置完成 win r 输入cmd打开终端 终端页面中输入 git --version 如图所示…

20240725java的Controller、DAO、DO、Mapper、Service层、反射、AOP注解等内容的学习

在Java开发中&#xff0c;‌controller、‌dao、‌do、‌mapper等概念通常与MVC&#xff08;‌Model-View-Controller&#xff09;‌架构和分层设计相关。‌这些概念各自承担着不同的职责&#xff0c;‌共同协作以构建和运行一个应用程序。‌以下是这些概念的解释&#xff1a;‌…

Redis的两种持久化方式---RDB、AOF

rdb其实就是一种快照持久化的方式&#xff0c;它会将Redis在某个时间点的所有的数据状态以二进制的方式保存到硬盘上的文件当中&#xff0c;它相对于aof文件会小很多&#xff0c;因为知识某个时间点的数据&#xff0c;当然&#xff0c;这就会导致它的实时性不够高&#xff0c;如…

【游戏制作】使用Python创建一个美观的贪吃蛇游戏,附完整代码

目录 前言 项目运行结果 项目简介 环境配置 代码实现 主体结构 主要功能详解 界面和菜单 控制蛇的移动 食物生成和碰撞检测 游戏结束 运行游戏 总结 前言 贪吃蛇游戏是一款经典的电脑游戏&#xff0c;许多人都曾经玩过。今天我们将使用Python和ttkbootstrap库来实…

Mysql注意事项(一)

Mysql注意事项&#xff08;一&#xff09; 最近回顾了一下MySQL&#xff0c;发现了一些MySQL需要注意的事项&#xff0c;同时也作为学习笔记&#xff0c;记录下来。–2020年05月13日 1、通配符* 检索所有的列。 不建议使用 通常&#xff0c;除非你确定需要表中的每个列&am…

51单片机-第四节-定时器

一、定时器&#xff1a; 1.介绍&#xff1a; 单片机内部实现的计时系统。 作用&#xff1a;代替长时间Daley&#xff0c;提高cpu效率。 数量&#xff1a;至少2个&#xff0c;T0&#xff0c;T1&#xff0c;T2等。其中T0&#xff0c;T1为所有51单片机共有&#xff0c;T2等为不…

爬虫提速!用Python实现多线程下载器!

✨ 内容&#xff1a; 在网络应用中&#xff0c;下载速度往往是用户体验的关键。多线程下载可以显著提升下载速度&#xff0c;通过将一个文件分成多个部分并行下载&#xff0c;可以更高效地利用带宽资源。今天&#xff0c;我们将通过一个实际案例&#xff0c;学习如何用Python实…