node创建项目

前言

(一)、Web

Web的开发体系中,分成前端,后端,工具,三个主要的领域。

前端主要由由浏览器,HTML+CSS+浏览器端JS完成。

后端主要是由Web服务器,数据库,动态脚本语言,其它的业务服务器等组成。

还有就是很多基础设计与便利资料,我们可以统称为工具。比如源码管理,编辑器,数据库备份,加密,解密,防火墙等一系列的工具。

(二)、Node

Node是后端;node本质上是一个javascript运行环境,目的是让javascript可以实现在服务器上的开发,其本身不属于前端,但是属于前端的技术栈,即可以服务于前端,也可以服务于后端。

Node一开始只是服务器端的js,但是现在的说法是node.js已经是js的一个运行时了。它的核心是event driven, non blocking I/O,以及主要由npm构建的模块体系。

node.js是js的运行环境,即可以服务于前端,也可以服务于后端。

一、前期准备

(一)、安装node和express

安装node和express

// 全局安装
npm install express -g
npm install -g express-generator
// ps: 4.0版本把generator分离出来了,需要单独安装

(二)、安装MySQL和navicat

此处省略,后续可能更新

二、创建项目

(一)、创建命令

express 项目名称
cd 项目名称
npm install
npm install mysql --save  // 安装数据库
npm start // 一般访问:http://localhost:3000/

(二)、数据库操作

创建数据库以及创建表(我的是info),具体操作省略,后续可能更新

给表添加几条数据

(三)代码

1、连接池

连接池是在Nodejs中管理数据库连接的一种常见技术。

连接池可以提高应用程序的性能和可扩展性,通过重复使用已经建立的数据库连接,减少了每次请求都创建和销毁连接的开销。

在使用连接池时,释放连接是一个重要的操作,以确保连接资源得到正确管理和回收。

express项目新建文件夹utils,新建文件dbconfig.js

const mysql = require('mysql')
module.exports = {
    // 数据库配置
    config: {
        host: 'localhost', // 连接地址
        port: '3306', //端口号
        user: 'root',  //用户名
        password: '******', //密码
        database: 'user', //数据库名
    },
// 连接数据库,使用mysql的连接池连接方式
// 连接池对象
sqlConnect: function (sql, sqlArr, callBack) {
        var pool = mysql.createPool(this.config)
        pool.getConnection((err, conn) => {
            console.log('12345')
            if (err) {
                console.log('连接失败');
                return;
            }
            // 事件驱动回调
            conn.query(sql, sqlArr, callBack);
            //释放连接
            conn.release();
        })
    }
}

2、测试数据库是是否连接成功

routers>index.js文件下测试:

var express = require("express");
var router = express.Router();
var dbCongif = require("../utils/dbconfig");
/* GET home page. */
router.get("/", function (req, res, next) {
  var sql = "select * from info";
  var sqlArr = [];
  var callBack = (err, data) => {
    if (err) {
      console.log("连接出错了");
    } else {
      res.send({
        list: data,
      });
    }
  };

  dbCongif.sqlConnect(sql, sqlArr, callBack);
  // res.render('index', { title: 'Express' });
});

module.exports = router;

执行命令npm start或者node app.js重启项目,连接成功

访问 http://localhost:3000/

返回数据表示成功

(三)、使用npm run dev启动node项目

npm install -g node-dev或npm install node-dev -D

然后在package.json里加上"dev": "node-dev ./bin/www"

启动:npm run dev 再更新代码就不需要重启了。

(四)、vue访问node接口

1、创建一个vue项目配置跨域

vue2或者vue3都可以,因为此时端口或者ip地址可能不同,前端需要跨域配置

vue.config.js

const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
  devServer: {
    proxy: {
      "/api": {
        target: "http://127.0.0.1:3000", //node.js服务器运行的地址
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          "^/api": "", //路径重写
        },
      },
    },
  },
});

2、发起请求

没有axios,要先安装:npm install axios

mounted() {
    axios.get("/api/users").then((res) => {
      console.log(res);
    });
  },

访问成功

参考文章:
node(express.js创建项目)+连接mysql数据库_node mysql创建数据库-CSDN博客
Navicat工具使用-CSDN博客

问题以及解决办法

(一)、连接失败

报错信息:

{
  code: 'ER_NOT_SUPPORTED_AUTH_MODE',
  errno: 1251,
  sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
  sqlState: '08004',
  fatal: true
}

报错原因:mysql版本太新了,MySQL8.0和MySQL5.0的加密方式不一样,连接会报错

解决办法:

1、cmd方式登录数据库

win+R打开cmd,输入mysql -u root -p
如果提示不是内部命令,需要先配置环境变量
配置环境变量:


双击path,找到我们安装MySQL的位置,我的在C盘,一直找到bin这个文件,复制该路径,我的复制下来就是C:\Program Files\MySQL\MySQL Server 8.0\bin,然后新增环境变量就行

 后续输入:mysql -u root -p,看到以下界面,输入密码可以进入(密码就是数据库密码,一般123456)

2、更改mysql加密方式

执行SQL查询用户信息

select User,Host,Plugin from mysql.user;

输入:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

(我用的还是123456)

刷新

FLUSH PRIVILEGES;

再次查询用户信息:

退出:exit

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Windows11系统上搭建SFTP服务器

利用OpenSSH搭建SFTP服务器 下载安装部署OpenSSH创建一个测试账户测试链接为SFTP用户配置根目录下载安装部署OpenSSH 参考链接 部署完启动服务要使用管理员模式。 net start sshd创建一个测试账户 使用PC的微软账户是访问不了SFTP的。 需要使用被微软账户覆盖掉的系统账户和…

Scanpy(4)用与数据整合和批次处理

Scanpy包,用与数据整合和批次处理,包含批次效应的BBKNN算法和用于对比的ingest基础算法比较,及其原理简介。 1. 依赖: (1)数据集(全部需要挂VPN): PBMC:pbmc3k_processed()(需要下载);pbmc68k_reduced()(scanpy自带)Pancreas(需要下载)(2)Python包:Scanp…

使用Visual Studio 分析.NET Dump

思维导航 前言什么是Dump文件?编写一段内存泄漏的代码查看程序运行情况并创建Dump文件使用Visual Studio分析Dump更多Visual Studio编程效率提升技巧DotNetGuide技术社区交流群 前言 内存泄漏和高CPU使用率是在日常开发中经常遇到的问题,它们可能会导致…

港科夜闻 | 香港科大宣布委任谭嘉因教授为副校长(行政)

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大宣布委任谭嘉因教授为副校长(行政)。香港科大6月3日宣布,委任谭嘉因教授接替庞鼎全教授出任副校长(行政),由今年7月1日起生效。谭教授是原香港科大商学院院长,全球顶尖学者&am…

XML解析库tinyxml2库使用详解

XML语法规则介绍及总结-CSDN博客 TinyXML-2 是一个简单轻量级的 C XML 解析库,它提供了一种快速、高效地解析 XML 文档的方式。 1. 下载地址 Gitee 极速下载/tinyxml2 2. 基本用法 下面将详细介绍 TinyXML-2 的主要使用方法: 2.1. 引入头文件和命名空间 #i…

AI大模型时代必须关注的数据库 DuckDB1.0 正式发布

开源数据库DuckDB1.0 经过内部6年的打磨,积累了30万行代码,1.8万star,2024.06.03号正式发布了1.0版本(代号 Snow Duck)。 我们新一代程序员,没能见证MySQL 1.0、PostgreSQL 1.0、Windows 1.0、Linux 1.0、…

VUE3 学习笔记(11):vue-router路由要懂的知识点

在前后端没有分离之前,大家通常采用的MVC模式,由后端通过Controller层实现页面跳转,VUE是组件化的特点,说白了就是一个单页面应用(挂载在public/index.html),意味着所有的页面只是各组件的组合。…

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政线下预约等多场景应用支持H5+小程序+APP

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政按摩线下预约等多场景应用支持H5小程序APP 软件架构 前端:Uniapp-vue2.0 后端:Thinkphp6 前后端分离 前端支持: H5小程序双端APP(安卓苹果) 安装教程 【商业…

模拟量采集电压电流信号转Modbus数据采集模块 YL121-485

特点: ● 模拟信号采集,隔离转换 RS-485输出 ● 采用12位AD转换器,测量精度优于0.1% ● 通过RS-485接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压1000VDC ● 宽电源供电范围:8 ~ 32VDC ● 可靠性高,…

RocketMQ教程(三):RocketMQ的工作原理

四个核心组件 RocketMQ 的架构采用了典型的分布式系统设计理念,以确保高性能、高可用和可扩展性。RocketMQ 主要由四个核心组件构成:NameServer、Broker、Producer 和 Consumer。下面是对这些组件以及它们在 RocketMQ 中的角色和功能的概述: 1. NameServer 角色和功能:Name…

一维时间序列突变检测方法(小波等,MATLAB R2021B)

信号的突变点检测问题是指在生产实践中,反映各种系统工作状态的信号,可能因为受到不同类型的噪声或外界干扰而发生了信号突变,导致严重失真的信号出现,因此必须探测突变出现的起点和终点。研究目的在于设计出检测方案,…

推荐一个免费的相亲工具

推荐一个免费的相亲工具,步骤如下: 1)微信里面搜索公众号“光源桥”,并关注 2)输入搜索条件进行搜索对象 例如下面搜索:

【机器学习】机器学习与推荐系统在电子商务中的融合应用与性能优化新探索

文章目录 引言机器学习与推荐系统的基本概念机器学习概述监督学习无监督学习强化学习 推荐系统概述基于内容的推荐协同过滤混合推荐 机器学习与推荐系统的融合应用用户行为分析数据预处理特征工程 模型训练与评估模型训练模型评估 个性化推荐基于用户的协同过滤基于商品的协同过…

基于 C# 开源的功能强大 .NET 人脸识别 API

面部识别 推荐一个 C# 开发的面部识别 API 项目,在 Github 上拥有 1.1k 的 Star, 功能强大,开箱即用,拥有跨平台的支持。 FaceRecognitionDotNet 使用了 OpenCVSharp, face_recognition 开源库, 并且提供了 Nuget 组件库&…

批处理—如何删除空格和括号

将下列代码复制在记事本中,将后缀名.txt改成.bat 然后将bat批处理文件,复制粘贴在需要处理的文件夹中,点击运行即可。 echo off setlocal enabledelayedexpansion for %%F in (*) do ( set "filename%%~nF" set "ext…

Kotlin中的StateFlow和SharedFlow有什么区别?

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Kotlin的协程库kotlinx.coroutines中,StateFlow和SharedFlow是两种用于处理事件流的API,它们有相似之处,但…

浮点数精度问题(详细)

文章目录 1.什么是浮点数2. 二进制与十进制的转换2.1 二进制与十进制的相互转换(方法介绍,思维理解)2.2 在线转换工具 3.浮点数的 IEEE754 表示4.C# 浮点型float、double 、decimal 比较5.解决运算精度问题5.1 浮点数预算精度问题5.2 解决方案5.2.1 放大倍数计算5.2…

如何根据业务需求,轻松挑选SSL证书?

在当今数字化时代,网站的安全性愈发受到重视。SSL证书作为网站安全的“守门员”,不仅能保护用户数据不被窃取,还能提升网站的信任度。但面对市场上琳琅满目的SSL证书产品,如何根据业务需求挑选合适的证书呢?今天&#…

使用python绘制漏斗图

使用python绘制漏斗图 漏斗图效果代码 漏斗图 **漏斗图(Funnel Chart)**是一种特殊的图表类型,通常用于显示一系列数据在某个流程或阶段中的逐步减少情况。**漏斗图的形状类似于漏斗,顶部宽而底部窄,每一层代表一个阶…

发文29篇,超过一半二区以上! | NHANES数据库周报(5.22~5.28)

美国国家健康和营养检查调查(NHANES)是一项旨在评估美国成人和儿童健康和营养状况的研究计划。该调查的独特之处在于它结合了访谈和体格检查。由美国疾病控制和预防中心(CDC)负责为国家提供健康统计数据。 NHANES计划始于20世纪60…