项目结构 新建项目
打开idea,新建项目-普通项目-Node项目,项目名称是:node_service
这是第一步创建后的项目结构
检查npm和cnpm
打开终端CMD,进入到node_service目录
检查npm和cnpm(可选)是否安装,没装的要去安装一下,新版是自带npm的,cnpm的作用相当于npm镜像加速下载之类的,以下安装模块都用cnpm,不装的话就使用npm命令
npm -v
cnpm -v
安装依赖模块
安装 Node.js 的 mysql 驱动
在终端运行:
cnpm install mysql
这样就表示安装成功
安装 Express 框架
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具,使用 Express 可以快速地搭建一个完整功能的网站
Express 框架核心特性:
cnpm install express --save
安装 body-parser 模块
body-parser用于处理 JSON, Raw, Text 和 URL 编码的数据。
cnpm install body-parser --save
安装 cookie-parser 模块(可选)
这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象
cnpm install cookie-parser --save
安装 multer 模块(可选)
用于处理 enctype=“multipart/form-data”(设置表单的MIME编码)的表单数据,它主要用于上传文件。
cnpm install multer --save
安装 silly-datetime 模块(可选)
他的功能主要是格式化时间
cnpm i silly-datetime --save
安装 nodemon 模块
nodemon 是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序。一般只在开发时使用,它最大的长处在于 watch 功能,一旦文件发生变化,就自动重启进程。
特性:
cnpm i -D nodemon
打开项目目录下的package.json文件,在scripts下增加一行
"dev": "nodemon index.js"
完全体比对
Hello World!
本章完成项目配置并输出Hello World!
新建入口文件
在项目根目录下新建 index.js 文件,这个文件对应上一步 package.json 文件里面的 nodemon index.js
编辑 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......');
数据库配置
在根目录下创建 config 目录,在config目录下新建 db.js 文件
编辑 db.js 文件,和本地安装的MySQL配置一样
// 数据库连接配置
module.exports = {
mysql: {
host: 'localhost', // 主机地址 (默认:localhost)
user: 'root', // 数据库用户名
password: '123456', // 数据库密码
database: 'node_user', // 数据库名
port: '3306' // 端口号 (默认:3306)
}
}
新建数据库 node_user,我用的是 utf8mb4 字符集
API配置
在 config 目录下新建 api.js 文件
编辑 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;
运行服务
进入cmd终端运行启动命令,这命令指向package.json->scripts->dev
npm run dev
当显示监听3000端口则表示启动成功了,想退出则使用快捷键 Ctrl + C
调用 hello 接口
通过api调用工具调用接口
这个过程发生了什么?
调用 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;
编写接口
打开 /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);
}
})
})
调用接口获得返回值
这个过程发生了什么?
调用 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);
}
})
})
调用接口获得返回值
这个过程发生了什么?
总结
优点:简单体验一下真的很敏捷很快,三两下就跑起来了,很轻量,对前端比较友好,补充一些数据库经验就可以尝试后端入门了。
缺点:感觉整体结构不健壮,随着服务增多导致不容易维护,也可能是我入门的原因吧,真实战还得上github找一些成熟开源项目,看一下别人的结构是怎样的。
好了,已经学会扭螺丝了,可以准备造火箭了
暂无评论内容