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和java的区别

(1)node.js比Java更快 :node.js开发快,运行的效率也算比较高,但是如果项目大了就容易乱,而且javascript不是静态类型的语言,要到运行时才知道类型错误,所以写的多了之后免不了会出现光知道有错但是找不到哪儿错的情况,所以测试就得些的更好更详细。java开发慢,但是如果项目大、复杂的话,用java就不容易乱,管理起来比node.js省。

(2)Node.js 前后端都采用Javascript,代表未来发展的趋势,而java则是现在的最流行的服务器端编程语言。

(3)Node.js和Java EE——一种是解释语言,一种是编译语言

参考文章:
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

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值