node-blog-原生实现
- www.js 层: 创建服务,监听端口
- app.js 层: 解析 path, query, 处理 post 请求的 data, 处理 coookie session, 引入路由, 处理404
- router 层: 处理路由 并对路由获取到的数据进行包装(成功,失败)。通过不同的URL判断,调用不同的 controller 并且传入参数。
- controller层: 处理数据, 通过不同的 sql 调用
exec(sql)
,并返回结果. - db层:
- conf/db.js 连接数据库配置文件:host,port,database,user,passsword
- db/blog.js,redis.js
- 连接 mysql:
mysql.createConnection(MYSQL_CONF).connect();
; 声明:exec(sql){return new Promise(...)}
并导出。 因为这里返回 promise 所以 controller 层,router 层后续返回的都是 promise。 - 连接 redis:
redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
。 声明:function set(key, val){redisClient.set(key, val, redis.print)}
并导出。 声明:function get(key) {return new Promise(...)}
并导出。
- 连接 mysql:
const { exec, escape } = require('../db/mysql');
username = escape(username);
password = escape(password);
const xss = require('xss');
const title = xss(blogData.title)
const content = xss(blogData.content)
const crypto = require('crypto');
// 密匙
const SECRET_KEY = 'WJiol_8776#';
// md5 加密
function md5(content) {
let md5 = crypto.createHash('md5');
return md5.update(content).digest('hex');
}
// 加密函数
function genPassword(password) {
const str = `password=${password}&key=${SECRET_KEY}`;
return md5(str);
}
// console.log(genPassword(123456)); // 4d4994bde299f6168c65f24c852897b7