简介
npm 是 Node.js 的包管理器,拥有海量的开源组件和工具,为 Node.js 开发者提供了极大的便利。而 nodejs-helper 是一款基于 npm 发布的 Node.js 帮手封装包,通过统一封装 Node.js 常用的辅助方法,简化 Node.js 项目的开发过程,是 Node.js 开发的不可缺少的工具包之一。
安装
要使用 nodejs-helper,需要先安装 Node.js,并在项目中使用 npm 安装 nodejs-helper 包,比如:
npm install nodejs-helper
使用
引入
在 Node.js 项目中引入 nodejs-helper,然后调用相应的方法。比如:
const nodejsHelper = require('nodejs-helper');
方法
isUndefined(value)
检查一个值是否为 undefined
,返回布尔值 true
或 false
。
console.log(nodejsHelper.isUndefined(undefined)); // true console.log(nodejsHelper.isUndefined(null)); // false
isNull(value)
检查一个值是否为 null
,返回布尔值 true
或 false
。
console.log(nodejsHelper.isNull(null)); // true console.log(nodejsHelper.isNull(undefined)); // false
isNullOrUndefined(value)
检查一个值是否为 null
或 undefined
,返回布尔值 true
或 false
。
console.log(nodejsHelper.isNullOrUndefined(null)); // true console.log(nodejsHelper.isNullOrUndefined(undefined)); // true console.log(nodejsHelper.isNullOrUndefined(0)); // false
isEmpty(value)
检查一个值是否为空,返回布尔值 true
或 false
。如果是字符串、数组、Set 或 Map,会同时检查长度是否为 0。
console.log(nodejsHelper.isEmpty(undefined)); // true console.log(nodejsHelper.isEmpty(null)); // true console.log(nodejsHelper.isEmpty('')); // true console.log(nodejsHelper.isEmpty([])); // true console.log(nodejsHelper.isEmpty(new Set())); // true console.log(nodejsHelper.isEmpty(new Map())); // true console.log(nodejsHelper.isEmpty({})); // false console.log(nodejsHelper.isEmpty([0])); // false
arrayEquals(a, b, elementComparator)
比较两个数组是否相等,返回布尔值 true
或 false
。默认情况下,只检查数组长度和每个数组元素是否相等,如果元素是对象,则检查对象的引用地址是否相等。如果要自定义元素的比较方式,可以传递第三个参数 elementComparator
,它是一个接受两个参数(分别代表两个元素)的函数,返回布尔值 true
或 false
。
console.log(nodejsHelper.arrayEquals([1,2,3], [1,2,3])); // true console.log(nodejsHelper.arrayEquals([1,2,3], [1,2,4])); // false console.log(nodejsHelper.arrayEquals([{a:1},{b:2}], [{a:1},{b:2}])); // false console.log(nodejsHelper.arrayEquals([{a:1},{b:2}], [{a:1},{b:2}], (a,b) => a.a === b.a && a.b === b.b)); // true
objectEquals(a, b)
比较两个对象是否相等,返回布尔值 true
或 false
。默认情况下,只检查对象属性数量和每个属性值是否相等,如果属性值是对象,则检查对象的引用地址是否相等。
console.log(nodejsHelper.objectEquals({a:1,b:2}, {a:1,b:2})); // true console.log(nodejsHelper.objectEquals({a:1,b:2}, {a:1,b:3})); // false console.log(nodejsHelper.objectEquals({a:{x:1},b:{y:2}}, {a:{x:1},b:{y:2}})); // false
deepClone(value)
深度克隆一个值,返回它的一个副本。如果是引用类型的值,会递归克隆它的所有属性值。
const a = {b: {c: 'd'}}; const b = nodejsHelper.deepClone(a); console.log(a === b); // false console.log(a.b === b.b); // false
promisify(fn)
将一个 Node.js 风格的回调函数 fn
转换成返回 Promise 的函数。返回的函数除了参数与原函数相同,还多了一个可选参数 options
,包含 multiArgs
属性,当它等于 true
时,Promise 对象的 then
方法将接受多个参数,否则只接受一个参数。
const readFile = nodejsHelper.promisify(fs.readFile); readFile('./README.md', {encoding: 'utf-8'}).then(content => { console.log(content); }).catch(err => { console.error(err); });
示例
-- -------------------- ---- ------- ----- ------------ - ------------------------- -- -- ----------- ------------------------------------------------- -- ---- -------------------------------------------- -- ----- -- -- ------ --------------------------------------- -- ---- -------------------------------------------- -- ----- -- -- ----------------- -------------------------------------------------- -- ---- ------------------------------------------------------- -- ---- ----------------------------------------------- -- ----- -- -- ------- --------------------------------------------- -- ---- ---------------------------------------- -- ---- -------------------------------------- -- ---- -------------------------------------- -- ---- ------------------------------------ -------- -- ---- ------------------------------------ -------- -- ---- -------------------------------------- -- ----- --------------------------------------- -- ----- -- -- ----------- --------------------------------------------- ---------- -- ---- --------------------------------------------- ---------- -- ----- --------------------------------------------------- ---------------- -- ----- --------------------------------------------------- -------------- ----- -- --- --- --- -- --- --- ------ -- ---- -- -- ------------ ------------------------------------------------ ------------ -- ---- ------------------------------------------------ ------------ -- ----- -------------------------------------------------------- -------------------- -- ----- -- -- --------- ----- - - --- --- ------ ----- - - -------------------------- ------------- --- --- -- ----- --------------- --- ----- -- ----- -- -- --------- ----- -- - -------------- ----- -------- - ------------------------------------ ----------------------- ---------- ---------------------- -- - --------------------- ------------ -- - ------------------- ---
深度与指导意义
nodejs-helper 是一款介于开源库和框架之间的封装工具,其作用在于封装了一些常用又细碎的代码,让工程师更加专注于业务代码的编写和需求实现。对于刚接触 Node.js 的开发者来说,这是一个短时间内将 Node.js 的常用工具和辅助方法熟练掌握的便利渠道。
同时,nodejs-helper 还有很多潜在的应用场景。针对第三方库或者自己的 Node.js 应用程序,大可以将一些辅助方法抽象为一个 Node.js 模块,并使用 nodejs-helper 里的辅助函数,减少重复代码的量和避免逻辑错误。需要注意的是,nodejs-helper 封装的方法虽然操作简便,但并不是万能的,用户需要根据具体情况选择最佳的实践方式,以免出现潜在的安全问题和性能问题。
总而言之,nodejs-helper 是一个不断完善和发展的工具包,正如 Node.js 生态圈一样,不断衍生和迭代。对于对 Node.js 生态技术模块和工具包的使用和深入研究更感兴趣的用户,可以前往 Node.js 中文网 进行文档的查阅和深入研究。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005630181e8991b448e0dc1