关于Node.js作为后端的入门教程

项目结构 新建项目

打开idea,新建项目-普通项目-Node项目,项目名称是:node_service

图片[1]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

图片[2]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

这是第一步创建后的项目结构

检查npm和cnpm

打开终端CMD,进入到node_service目录

图片[3]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

检查npm和cnpm(可选)是否安装,没装的要去安装一下,新版是自带npm的,cnpm的作用相当于npm镜像加速下载之类的,以下安装模块都用cnpm,不装的话就使用npm命令

npm -v

cnpm -v

图片[4]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

安装依赖模块

安装 Node.js 的 mysql 驱动

在终端运行:

cnpm install mysql

图片[5]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

这样就表示安装成功

安装 Express 框架

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具,使用 Express 可以快速地搭建一个完整功能的网站

Express 框架核心特性:

cnpm install express --save

图片[6]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

安装 body-parser 模块

body-parser用于处理 JSON, Raw, Text 和 URL 编码的数据。

cnpm install body-parser --save

图片[7]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

安装 cookie-parser 模块(可选)

这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象

cnpm install cookie-parser --save

图片[8]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

安装 multer 模块(可选)

用于处理 enctype=“multipart/form-data”(设置表单的MIME编码)的表单数据,它主要用于上传文件。

cnpm install multer --save

图片[9]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

安装 silly-datetime 模块(可选)

他的功能主要是格式化时间

cnpm i silly-datetime --save

图片[10]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

安装 nodemon 模块

nodemon 是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序。一般只在开发时使用,它最大的长处在于 watch 功能,一旦文件发生变化,就自动重启进程。

特性:

cnpm i -D nodemon

图片[11]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

打开项目目录下的package.json文件,在scripts下增加一行

"dev": "nodemon index.js"

图片[12]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

完全体比对

图片[13]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

Hello World!

本章完成项目配置并输出Hello World!

新建入口文件

在项目根目录下新建 index.js 文件,这个文件对应上一步 package.json 文件里面的 nodemon index.js

图片[14]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

编辑 index.js 文件

const fs = require('fs');
const path = require('path');
 
// 引入api路由配置文件
const api = require('./config/api');
 
// body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据
const bodyParser = require('body-parser');
 
// 引入express包
const express = require('express');
 
// 创建web服务器
const app = express();
 
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
 
// 后端api路由
app.use('/api', api);
 
// 监听端口
app.listen(3000);
// 在终端打印信息
console.log('success listen at port: 3000......');

图片[15]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

数据库配置

在根目录下创建 config 目录,在config目录下新建 db.js 文件

图片[16]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

编辑 db.js 文件,和本地安装的MySQL配置一样

// 数据库连接配置
module.exports = {
	mysql: {
		host: 'localhost', // 主机地址 (默认:localhost)
		user: 'root', // 数据库用户名
		password: '123456', // 数据库密码
		database: 'node_user', // 数据库名
		port: '3306' // 端口号 (默认:3306)
	}
}

图片[17]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

新建数据库 node_user,我用的是 utf8mb4 字符集

图片[18]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

API配置

在 config 目录下新建 api.js 文件

图片[19]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

编辑 api.js 文件

// 引入数据库连接配置
var models = require('./db');
// 引入express包
var express = require('express');
 
//创建路由器对象
var router = express.Router();
// 引入mysql包
var mysql = require('mysql');
 
// 格式化时间模块Silly-datetime
var datetime = require('silly-datetime');
 
var fs = require('fs');
var path = require('path')
 
// 连接数据库
var conn = mysql.createConnection(models.mysql);
conn.connect();
 
// 设置返回response
var jsonWrite = function (res, ret) {
    if (typeof ret === 'undefined') {
        res.json({
            code: '1',
            msg: '操作失败'
        });
    } else {
        console.log('ret', ret)
        res.json(ret);
    }
};
 
 
// 下面是api路由的代码
router.get('/xxx', (req, res) => {
    // ...
})
 
router.post('/hello', (req, res) => {
    // ...
	jsonWrite(res, {
		code: 200,
		msg: "Hello World!"
	})
})
// 导出路由对象
module.exports = router;

图片[20]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

运行服务

进入cmd终端运行启动命令,这命令指向package.json->scripts->dev

npm run dev

图片[21]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

图片[22]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

当显示监听3000端口则表示启动成功了,想退出则使用快捷键 Ctrl + C

调用 hello 接口

通过api调用工具调用接口

图片[23]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

这个过程发生了什么?

调用 getUserName 接口 新增数据库表

在 node_user 数据库新建表,运行以下sql语句,会在数据库生成一张user表,结构只有简单的id和name两个字段

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '张三');
INSERT INTO `user` VALUES (2, '李四');
SET FOREIGN_KEY_CHECKS = 1;

图片[24]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

图片[25]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

编写接口

打开 /config/api.js 文件并编辑内容,直接保存然后会自动更新,不用退出重启应用

router.get('/getUserName', (req, res) => {
	conn.query("select * from user", function(err, result) {
		if (err) {
			console.log(err);
		}
		if (result) {
			jsonWrite(res, result);
		}
	})
})

图片[26]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

调用接口获得返回值

图片[27]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

这个过程发生了什么?

调用 getUserNameById 接口

打开 /config/api.js 文件并编辑内容,直接保存然后会自动更新,不用退出重启应用

router.post('/getUserNameById', (req, res) => {
	let params = req.body;
	conn.query("select * from user where id = ?", [params.id], function(err, result) {
		if (err) {
			console.log(err);
		}
		if (result) {
			jsonWrite(res, result);
		}
	})
})

图片[28]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

调用接口获得返回值

图片[29]-关于Node.js作为后端的入门教程-JieYingAI捷鹰AI

这个过程发生了什么?

总结

优点:简单体验一下真的很敏捷很快,三两下就跑起来了,很轻量,对前端比较友好,补充一些数据库经验就可以尝试后端入门了。

缺点:感觉整体结构不健壮,随着服务增多导致不容易维护,也可能是我入门的原因吧,真实战还得上github找一些成熟开源项目,看一下别人的结构是怎样的。

好了,已经学会扭螺丝了,可以准备造火箭了

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
来说点什么吧!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容