当前位置: 首页 > article >正文

后端Node学习项目-项目基础搭建

前言

各位好,我是前端SkyRain。最近为了响应公司号召,开始对后端知识的学习,作为纯粹小白,记录下每一步的操作流程。
项目仓库:https://gitee.com/sky-rain-drht/drht-node
因为写了文档,代码里注释不是很多,可以结合理解

初始化文件夹

创建文件夹

  • 在合适的位置创建一个文件夹,作为项目代码本地仓库

node初始化

执行命令
npm init -y
执行结果

在这里插入图片描述

Git初始化

执行命令
git init
执行结果

在这里插入图片描述

安装依赖

执行命令
yarn add ip 
yarn add koa 
yarn add koa-bodyparser
yarn add koa-router
yarn add mysql2
yarn add nodemon
yarn add sequelize
依赖说明
ip

用于获取服务器地址信息

koa

node的后端框架之一

koa-bodyparser

用于解析接口请求传递的参数

koa-router

与koa框架配合的路由库

mysql2

mysql数据库

nodemon

用来启动node服务

sequelize

mysql数据的关系映射库

启动服务配置

配置文件

为了保持未来的配置内容进行扩展,所以各自定义后导出

创建配置文件夹
  • 根目录下创建config文件夹
  • 在config文件夹下创建index.js
创建启动配置

config/index.js

const ip = require('ip');
// 运行配置
const serverSetting = {
  ipAddress: ip.address(), // 服务器ip
  port: 3000, // 服务器端口
  proxy: 'api' // 代理名称
}
module.exports = {
  serverSetting
}

启动类文件

创建启动类文件

app.js

const Koa = require('koa');
const { serverSetting } = require('./config');

const app = new Koa();

app.listen(serverSetting.port, () => {
  console.log(`server is running at http://${serverSetting.ipAddress}:${serverSetting.port}/${serverSetting.proxy}`)
})
创建启动命令

在package.json中创建启动命令

"scripts": {
  "dev": "nodemon app.js",
  "test": "echo \"Error: no test specified\" && exit 1"
},

至此,可以运行命令看看服务能不能跑起来!

数据库配置

数据库信息配置

config/index.js

// 数据库配置
const dbSetting = {
  host: 'localhost', // 数据库ip
  port: 3306, // 数据库端口
  username: 'root', // 数据库用户名
  password: 'skyrain', // 数据库密码
  database: 'drht' // 数据库名称
}
module.exports = {
  ...,
  dbSetting
}

数据库连接

创建连接文件
  • 在根目录下创建models文件夹
  • 在models文件夹下创建index.js
连接信息内容

models/index.js

const { Sequelize } = require('sequelize');
const { dbSetting } = require('../config/index')

const sequelize = new Sequelize(
  dbSetting.database,
  dbSetting.username,
  dbSetting.password,
  {
    host: dbSetting.host,
    port: dbSetting.port,
    dialect: 'mysql',
    logging: false,
    timezone: '+08:00',
    pool: {
      max: 5, // 连接池最大连接数量
      min: 0,
      idle: 10000, // 如果一个线程在10秒内没有被使用过就释放掉
    },
    define: {
      timestamps: true, // 自动带上更新时间和修改时间
      freezeTableName: true   // 冻结表名,否则同步时会自动加s
    }
  }
)
sequelize.sync({
  force: false
})
// // 测试是否连接成功
// sequelize
//   .authenticate()
//   .then(() => {
//     console.log('数据库连接成功');
//   })
//   .catch(err => {
//     console.log('数据库连接失败', err);
//   })
module.exports = { db: sequelize }

http://www.kler.cn/a/384535.html

相关文章:

  • Word大珩助手:超大数字怎么读?35位数字?69位数字?
  • 秃姐学AI系列之:GRU——门控循环单元 | LSTM——长短期记忆网络
  • 大模型微调技术 --> LoRA 系列之 QLoRA (省资源能手)
  • C语言必做30道练习题
  • 线程同步的方法
  • 在数据抓取的时候,短效IP比长效IP有哪些优势?
  • linux下linuxdeployqt打包过程
  • Xserver v1.4.2发布,支持自动重载 nginx 配置
  • Golang--协程和管道
  • 飞腾平台Arm ComputeLibrary编译安装指南
  • canal1.1.7使用canal-adapter进行mysql同步数据
  • springboot 传统应用程序,适配云原生改造
  • SSH僵尸主机挖矿木马预警
  • 群控系统服务端开发模式-应用开发-腾讯云上传工厂及七牛云上传工厂开发
  • 从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
  • redis时间优化
  • Redisson实现RedLock分布式锁同步
  • git提交冲突的原因及解决方案
  • 如何搭建 ELK【elasticsearch+logstash+kibana】日志分析系统
  • ctfshow-web入门-反序列化(web260-web264)
  • uniapp+vue基于微信小程序的健康饮食推荐系统 907m6
  • Linux系统的文件系统和日志和管理
  • Debian 12环境里部署nginx步骤记录
  • ssh通过跳板机免密登陆
  • 代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型
  • 爬虫学习5