likes
comments
collection
share

nodeJs 让我步入全栈之路

作者站长头像
站长
· 阅读数 14

跟随着互联网行情的变化,和公司业务发展的需要,项目多向性发展,需要的研发人才越来越多样性,本人深深悟得如果不跟随着时代的步伐,就会被时代淘汰,于是借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 让我步入全栈之路

下面两张图分别是无条件查询和有条件查询返回的结果,当用户传入字典名称点击查询的时候,它便把模糊查询到的相关数据返回给前端。

nodeJs 让我步入全栈之路

nodeJs 让我步入全栈之路

希望指出不足之处,并指点我。(代码有些繁杂,还是那句老话,可以根据项目特性、代码习惯可以进行自由封装、改动)。

nodeJs 真的是让前端更上一步的脚本语言,我不提倡内卷,当然,环境却提倡,适当的内卷可以提高自己水平,充实自己的实力,那么个人认为,可以适当内卷;如果是毫无作用类似苦力的内卷,那是不必要的。

还在等什么?一起来学nodeJs吧!