node创建项目

news2025/1/24 2:22:30

前言

(一)、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

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

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

相关文章

初识 peerDependencies

目录 初步认识 peerDependencies semver 介绍 # 摘要 # 简介 # 语义化版本控制规范(SemVer) # 合法语义化版本的巴科斯范式语法 # 为什么要使用语义化的版本控制? # FAQ 示例讲解:vue-router 插件 # 说明 声明 验证 初…

信息系统项目管理师0143:过程概述(9项目范围管理—9.2项目范围管理过程—9.2.1过程概述)

点击查看专栏目录 文章目录 9.2 项目范围管理过程9.2.1 过程概述 9.2 项目范围管理过程 9.2.1 过程概述 项目范围管理过程包括: 规划范围管理:为了记录如何定义、确认和控制项目范围及产品范围,创建范围管理计划。收集需求:为了…

以sqlilabs靶场为例,讲解SQL注入攻击原理【18-24关】

【less-18】 打开时,获取了自己的IP地址。,通过分析源码知道,会将用户的user-agent作为参数记录到数据库中。 提交的是信息有user-Agent、IP、uname信息。 此时可以借助Burp Suite 工具,修改user_agent,实现sql注入。…

小白级教程—安装Ubuntu 20.04 LTS服务器

下载 本教程将使用20.04版进行教学 由于官方速度可能有点慢,可以下方的使用清华镜像下载 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ 点击20.24版本 选择 ubuntu-20.04.6-live-server-amd64.iso 新建虚拟机 下载好后 我们使用 VMware 打开它 这里选…

103、python-第三阶段-13-大数据分布式集群运行

hadoop集群 4个多G的数据在集群中用了2.9分钟,如果在一个机器上运行大概需要十几分钟,所以集群速度还是很快的。

sql 查询 不满足 (一个教师编号 的角色 (role =‘2‘or(role=‘1‘and role =‘0‘)) )

sql 查询 不满足 (一个教师编号 的角色 (role 2’or(role1’and role ‘0’)) ) 准备 一个 teacher 表 和数据 表 teacher 和数据 -- ---------------------------- -- Table structure for teacher -- …

短期业绩波动较大被券商不予评级,金种子酒背靠华润如何发力?

《港湾商业观察》施子夫 王璐 虽然一季度成功实现了扭亏为盈,但从近些年年报来看,金种子酒(600199.SH)的业绩压力依然不容小觑。白酒主业萎靡不振时,金种子酒开始了剥离非主营业务。 这些措施能否有利于主业向好&am…

MQ之初识kafka

1. MQ简介 1.1 MQ的诞生背景 以前网络上的计算机(或者说不同的进程)传递数据,通信都是点对点的,而且要实现相同的协议(HTTP、 TCP、WebService)。1983 年的时候,有个在 MIT 工作的印度小伙突发…

软理复习范围

1.直觉主义逻辑常采用三值逻辑来处理命题的真值,包括以下三个真值: 真(True):表示命题是确定为真的。假(False):表示命题是确定为假的。未知(Unknown)&#…

Keil编译bin格式固件方法

打开Option选项卡,选择User,在After Build/Rebuild下面增加以下命令: fromelf.exe --bin -o "L.bin" "#L"

短剧APP开发,推动短剧市场的全新发展

近几年,短剧火爆出圈,迎来了爆发式增长态势,市场规模一跃达到了百亿元!短剧节奏快、剧情爽、情节猎奇,极大地满足了用户的追剧需求,深受大众的喜爱。 短剧巨大的市场发展前景也衍生出了各种新的短剧发展赛…

FSR 3 - Upscaling for Unity(性能优化工具)

FSR 3 - Upscaling for Unity已在Unity版本2021、2022和2023中进行了测试! 使用FSR 3 Upscaling for Unity提升帧数! FSR 3是一种升级技术,它基于较低分辨率的输入创建高质量和高分辨率的帧。通过使用这种方法,您的项目可以在极低的分辨率下运行,而不会损失视觉质量,也不…

连锁实体店同城引流的两种方式

连锁实体店开在哪里,它的影响力就在哪里,所以,连锁店的选址很重要,这点是毋庸置疑的,今天我们聊聊连锁实体店引流的两种方式。 1、同城引流新客到店 实体店的覆盖范围在3-5公里 使用抖音同城引流快速覆盖这个范围内的…

产品经理:做好有效的客户需求分析

需求分析是产品开发过程中的重要环节,它直接决定了产品是否能够满足市场需求和用户期望。通过深入了解客户需求,产品经理可以确保产品功能的设计符合用户的实际需求,从而提高产品的用户满意度和市场竞争力。 一、识别用户需求 识别用户需求…

从头搭hadoop集群--模版虚拟机的配置

软件说明: VMware Workstation Pro MobaXterm_Personal_12.4 映像文件:CentOS-7-x86_64-DVD-1908.iso jdk版本:jdk1.8.0_111 映射文件和jdk文件如下: 链接:https://pan.baidu.com/s/18dsDlLk4WeW2Y8O2jUSkGQ?pw…

微服务学习Day9-分布式事务Seata

文章目录 分布式事务seata引入理论基础CAP定理BASE理论 初识Seata动手实践XA模式AT模式TCC模式SAGA模式 高可用 分布式事务seata 引入 理论基础 CAP定理 BASE理论 初识Seata 动手实践 XA模式 AT模式 TCC模式 Service Slf4j public class AccountTCCServiceImpl implements A…

运维开发介绍

目录 1.什么是运维开发 2.作用 3.优点 4.缺点 5.应用场景 5.1.十个应用场景 5.2.网站和Web应用程序 6.案例 7.小结 1.什么是运维开发 运维开发(DevOps)是一种结合软件开发(Development)与信息技术运维(Opera…

使用Vue.js将form表单传递到后端

一.form表单 <form submit.prevent"submitForm"></form> form表单像这样写出来&#xff0c;然后把需要用户填写的内容写在form表单内。 二.表单内数据绑定 <div class"input-container"><div style"margin-left: 9px;"&…

Java Web学习笔记4——HTML、CSS

HTML&#xff1a; HTML&#xff1a;超文本标记语言。 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等内容。 标记语言&#xff1a;有标签构成的语言。 HTML标签都是预定义好的&#xff0c;例如&a…

云服务(ECS)Docker安装vulhub安装详解

本文以xshell进行远程控制 1.以ssh连接云服务器 ssh 服务器名公网ip [D:\~]$ ssh root47.99.138.9 在弹框中输入密码 2.安装docker curl -s http://get.docker.com/ | sh rootiZbp1fm14idjlfp53akni8Z:~# curl -s https://get.docker.com/ | sh # Executing docker insta…