nodeJs 让我步入全栈之路
跟随着互联网行情的变化,和公司业务发展的需要,项目多向性发展,需要的研发人才越来越多样性,本人深深悟得如果不跟随着时代的步伐,就会被时代淘汰,于是借nodeJs之手步入全栈之路。
为什么要用nodeJs写后端?
我总结了以下三点:
1、学习成本低:nodeJs是一个基于Chrome V8引擎的JavaScript运行环境,方便于前端开发学习,相对于前端开发重新学习java、php,它是比较容易的。
2、拓展性:nodeJs它也有md5加密、链接mySql/链接mongodb、token存储、服务端运行等等功能。
3、轻便:本人写了一个简易性cms内容管理,项目里面包含十一个菜单的接口和一些基本依赖,项目总大小才几MB,比起java和php动辄几十MB上百MB的大小来说,大小简直就是小巫见大巫。
当然,以上优势都是相对而言,各位小伙伴还是要找到适合自己适合项目的后端语言,如果还有其它相对的优势,请各位伙伴,麻烦请指教,大家一起进步学习。
(ps:代码粗暴简洁无封装,到时候可以根据项目特性、代码习惯可以进行自由封装、改动,不会说特别难二次开发)
下面是本人用nodeJs,安装mySql依赖,利用mySql链接数据库,写的sql分页查询代码。本人讲解下它的作用和思路,也供大家一起讨论。
app.get('/api/Pages', (req,res) => {
// 排序
let sort = 'desc';
// 获取查询字段及分页
const { pageNum, pageSize, dictName, dictType, dictStatus } = req.query;
// 分页
let num = pageNum ? parseInt(pageNum) - 1 : 0;
let size = pageSize ? parseInt(pageSize) : 10;
let skip = num * size;
let limit = skip + ',' + size;
// 模糊查询
let fuzzyQuery = '';
let queryArray = [];
// 模糊查询
if (dictName) {
let queryVal = `dictName like '%${dictName}%'`;
queryArray.push(queryVal);
}
if (dictType) {
let queryVal = `dictType like '%${dictType}%'`;
queryArray.push(queryVal)
}
if (dictStatus) {
let queryVal = `dictStatus like '%${dictStatus}%'`;
queryArray.push(queryVal)
}
if (queryArray.length === 1) {
fuzzyQuery = ` where ${queryArray.join(',')} and isDelete<>'0'`
} else if (queryArray.length === 0) {
fuzzyQuery = ` where isDelete<>'0'`
} else {
fuzzyQuery = ` where ${queryArray.join(',').replace(',', ' and ')} and isDelete<>'0'`
}
// 查询sql
const sql = `SELECT id, dictName, dictType, dictStatus, remark, createTime FROM dict${fuzzyQuery} order by createTime ${sort} limit ${limit}`;
// 获取查询sql的总数
const sqlTotal = `SELECT COUNT(id) as total FROM dict${fuzzyQuery};`;
// 请求数据库并返回给前端。
connection(sql, (error, result, fileds) => {
console.log(error);
if(error) {
res.json(resbody.getFailResult(error))
}else{
// 返回
result.forEach(item => {
item.createTime = utils.parseTime(item.createTime)
})
utils.getTableTotal(connection, sqlTotal).then(total => {
const returnNum = num+1;
const returnData = {
total: total,
rows: result,
pageNum: returnNum,
pageSize: size
}
res.json(resbody.getSuccessResult(returnData))
}).catch(err => {
})
}
})
})
以上代码是请求字典的分页查询,里面包含了当前分页、查询数量、字典类型名称、字典类型值、字典状态(pageNum, pageSize, dictName, dictType, dictStatus),当然还有默认的创建时间倒序的查询。
它包含两句sql,第一句是以默认创建时间为倒序,再拿从前端传过来的默认值,模糊查询在dict表里符合条件的数据,然后返回相关字段,第二句是查询在dict表里符合条件的数据的总数量,用本人utils.getTableTotal() 封装好的异步函数返回总数量给予前端。
下面两张图分别是dict表的相关数据和表结构(里面id默认为0是系统必须要有的数据,不可删除,在前端做处理隐藏删除按钮,后端更严谨处理,判断前端调用删除接口的时候传过来的id包不包含0,包含0便抛出异常给前端),
下面两张图分别是无条件查询和有条件查询返回的结果,当用户传入字典名称点击查询的时候,它便把模糊查询到的相关数据返回给前端。
希望指出不足之处,并指点我。(代码有些繁杂,还是那句老话,可以根据项目特性、代码习惯可以进行自由封装、改动)。
nodeJs 真的是让前端更上一步的脚本语言,我不提倡内卷,当然,环境却提倡,适当的内卷可以提高自己水平,充实自己的实力,那么个人认为,可以适当内卷;如果是毫无作用类似苦力的内卷,那是不必要的。
还在等什么?一起来学nodeJs吧!
转载自:https://juejin.cn/post/7231072499219578936