当前位置: 首页 > news >正文

个人做当地旅游网站如何自己制作网站

个人做当地旅游网站,如何自己制作网站,python网站开发实例,高端做网站不知不觉距离第一次发文章介绍自己写的库BootsJS已经过去一个月了,这个月里收到了许许多多JYM的反馈与建议,自己也再一次对BootsJS进行了改进与完善,又一次增加了很多功能,为此我想应该给JYM们汇报汇报这个月的工作进展。 BootJS仓…

不知不觉距离第一次发文章介绍自己写的库BootsJS已经过去一个月了,这个月里收到了许许多多JYM的反馈与建议,自己也再一次对BootsJS进行了改进与完善,又一次增加了很多功能,为此我想应该给JYM们汇报汇报这个月的工作进展。

BootJS仓库:https://github.com/JunLiangWangX/BootsJS

BootJS文档:https://junliangwangx.github.io/BootsJS/

上一版本功能

害怕新的同学没看过之前文章,容我花点篇幅介绍下之前版本支持的功能!

库的安装与引用,方法的具体使用大家可以看我之前的文章:《摸鱼时间写了个库,比lodash更丰富!》,我就不在这里赘述了。

日期处理工具:DateTool

方法作用
dateCalculator日期加/减计算
dateFormater格式化日期与时间
getDateDiff计算两日期的相隔时间
getDaysInMonth给定日期返回当月总天数
isLeapYear给定年份判断是否闰年

性能工具:PerformanceTool

方法作用
debounce防抖
throttle节流
memoize缓存函数的计算结果

字符串处理工具:StringTool

方法作用
camelCaseNameToDashName驼峰命名转短横线命名
dashNameToUpperCamelCaseName短横线命名转大写驼峰命名

正则规则:RegRules

方法作用
IPAddressRule匹配IP地址
chineseIDCardRule匹配身份证号码
chinesePhoneNumberRule匹配中国手机号码

优先级队列:PriorityQueue

方法作用
priorityQueue.enqueue(‘1’, 1)入队
priorityQueue.dequeue()出队
priorityQueue.top获取队顶元素
priorityQueue.length获取队列大小
priorityQueue.isEmpty队列是否为空

本版本新增的功能

我们来看看这个月加入了什么引人注目的功能吧!

对象处理工具:ObjectTool

// -------- Global Import(全局引入)
const BootsJS = require('boots-js'); // Node
import BootsJS from 'boots-js' // Es6 Module
BootsJS.ObjectTool.type(123); //'Number'// -------- Import on Demand(按需引入)
const { ObjectTool } = require('boots-js/object-tool'); // Node
import { ObjectTool } from 'boots-js/object-tool' // Es6 Module
ObjectTool.type(123); //'Number'

判断参数类型:type()

ObjectTool.type(new Array()); //'Array'
ObjectTool.type('123'); //'String'
ObjectTool.type(true); //'Boolean'
ObjectTool.type(new Map()); //'Map'

深度拷贝对象:deepClone()

// 支持的类型:原始类型、TypedArray、Array、Set、Map、Object、ArrayBuffer、DataView、Date、RegExp、Symbol、Proxy(将被视为对象,拦截器无法复制)
// 注意:不支持的类型,例如:Function、WeakRef、WeakSet、WeakMap等会直接复制其引用const obj1={Number:1},obj2={Boolean:2},obj3={obj:obj1,String:'123'},
const testObj={Int8Array:new Int8Array([1,2,3,4,5]),Date:new Date(),RegExp:/1234/,Array:new Array(...[obj1,obj2,obj3]),Set:new Set([obj1,obj2,obj3]),Map:map,Object:obj3,ArrayBuffer:new ArrayBuffer(10),DataView:new DataView(new ArrayBuffer(10)),Function:fun
}let deepCopyObj=ObjectTool.deepClone(testObj)
deepCopyObj.Int8Array===testObj.Int8Array //false
deepCopyObj.Date===testObj.Date //false
deepCopyObj.Object.obj1.obj===testObj.Object.obj1.obj //false

比较两对象是否相等:isEqual()

// 支持的类型:原始类型、TypedArray、Array、Set、Map、Object、ArrayBuffer、DataView、Date、RegExp、Symbol(比较其description)、Proxy(将被视为对象,拦截器无法比较)
// 注意:不支持的类型,例如:Function、WeakRef、WeakSet、WeakMap等会直接比较其引用地址const testObj2={BigInt64Array:new BigInt64Array([BigInt(123),BigInt(123),BigInt(123)]),RegExp:/1234/,Array:new Array(...[obj1,obj2,obj3,obj4]),Set:new Set([obj1,obj2,obj3,obj4]),Object:obj4,Map:map2,Date:date,ArrayBuffer:new ArrayBuffer(10),DataView:new DataView(new ArrayBuffer(10)),
}ObjectTool.isEqual(testObj2,ObjectTool.deepClone(testObj2)) //true
let testObj5=ObjectTool.deepClone(testObj2)
testObj5.Object.obj1.String='12344'
ObjectTool.isEqual(testObj2,testObj5)  //false

将对象转换为String:argToStrKey()


// 支持的类型:原始类型、TypedArray、Array、Set、Map、Object、ArrayBuffer、Function、DataView、Date、 RegExp、Symbol、Proxy(将被视为对象,拦截器无法输出)
// 注意:不支持的类型,例如:WeakRef、WeakSet、WeakMap等会直接输出类型const testObj2={BigInt64Array:new BigInt64Array([BigInt(123),BigInt(123),BigInt(123)]),RegExp:/1234/,Array:new Array(...[obj1,obj2,obj3,obj4]),Set:new Set([obj1,obj2,obj3,obj4]),Object:obj4,Map:map2,Date:date,ArrayBuffer:new ArrayBuffer(10),DataView:new DataView(new ArrayBuffer(10)),
}
const testObj3={Array:new Array(...[obj1,obj2,obj3,obj4]),Set:new Set([obj1,obj2,obj3,obj4]),BigInt64Array:new BigInt64Array([BigInt(123),BigInt(123),BigInt(123)]),ArrayBuffer:new ArrayBuffer(10),Object:obj4,Map:map2,Date:date,DataView:new DataView(new ArrayBuffer(10)),RegExp:/1234/,
}let testObj5=ObjectTool.deepClone(testObj2)
testObj5.Object.obj1.String='12344'ObjectTool.argToStrKey(testObj2)===ObjectTool.argToStrKey(testObj3) //true
ObjectTool.argToStrKey(testObj2)===ObjectTool.argToStrKey(testObj5) //false

处理树的工具:TreeTool

// -------- Global Import(全局引入)
const BootsJS = require('boots-js'); // Node
import BootsJS from 'boots-js' // Es6 Module
BootsJS.TreeTool.tree2Array(tree,'childList',options)// -------- Import on Demand(按需引入)
const { TreeTool } = require('boots-js/tree-tool'); // Node
import { TreeTool } from 'boots-js/tree-tool' // Es6 Module
TreeTool.tree2Array(tree,'childList',options)

树转换成数组: tree2Array()

const tree = {name: '中国',code: '0',childList: [{name: '重庆',code: '01',},{name: '四川',code: '02',},{name: '广东',code: '03',},]} let arr = TreeTool.tree2Array([tree], 'childList', {isGenerateLevel: true,generateLevelAttributeName:'level',isGenerateParentID: true,generateParentIDAttributeName: 'parentCode',nodeIDAttributeName: 'code',deleteAttributeList: ['childList']})console.info(arr)[{ name: '中国', code: '0' , level:0 },{ name: '重庆', code: '01', level:1 , parentCode: '0' },{ name: '四川', code: '02', level:1 , parentCode: '0' },{ name: '广东', code: '03', level:1 , parentCode: '0' },]

数组转换为树:array2Tree()

const arr = [{ name: '中国', code: '0' , level:0 },{ name: '重庆', code: '01', level:1 , parentCode: '0' },{ name: '四川', code: '02', level:1 , parentCode: '0' },{ name: '广东', code: '03', level:1 , parentCode: '0' },]let genTree = TreeTool.array2Tree(arr, 'code', 'parentCode', 'childList', (node) => {return !('parentCode' in node)})console.info(genTree)[{name: '中国',code: '0',level: 0,childList: [{ name: '重庆', code: '01', level:1,  parentCode: '0', childList: [] },{ name: '四川', code: '02', level:1, parentCode: '0', childList: [] },{ name: '广东', code: '03', level:1, parentCode: '0', childList: [] }]}]

获取所有子节点:getChildList()

const tree = {name: '中国',code: '0',childList: [{name: '重庆',code: '01',},{name: '四川',code: '02',},{name: '广东',code: '03',},]} let arr = TreeTool.getChildList([tree], 'code', '0', 'childList')console.info(arr)[{ name: '重庆', code: '01' },{ name: '四川', code: '02' },{ name: '广东', code: '03' },]

过滤节点:filter()

const tree = {name: '中国',code: '0',level: 0,childList: [{ name: '重庆', code: '01', level:1,  parentCode: '0', childList: [] },{ name: '四川', code: '02', level:1, parentCode: '0', childList: [] },{ name: '广东', code: '03', level:1, parentCode: '0', childList: [] }]}let arr = TreeTool.filter([tree], 'childList', (obj) => {return obj.parentCode === '0'})console.info(arr)[{ name: '重庆', code: '01', level:1 , parentCode: '0', childList: [] },{ name: '四川', code: '02', level:1 , parentCode: '0', childList: [] },{ name: '广东', code: '03', level:1 , parentCode: '0', childList: [] },]

查找某节点的路径:findPath()

const tree = {name: '中国',code: '0',level: 0,childList: [{ name: '重庆', code: '01', level:1, parentCode: '0', childList: [] },{ name: '四川', code: '02', level:1, parentCode: '0', childList: [] },{ name: '广东', code: '03', level:1, parentCode: '0', childList: [] }]}let path = TreeTool.findPath([tree],'code','03','childList')console.info(path)[{name: '中国',code: '0',level: 0,childList: [ [Object], [Object], [Object] ]},{ name: '广东', code: '03', parentCode: '0', level: 1, childList: [] }]

处理数组的工具:ArrayTool

// -------- Global Import(全局引入)
const BootsJS = require('boots-js'); // Node
import BootsJS from 'boots-js' // Es6 Module
BootsJS.ArrayTool.removeDuplicates([1,2,3,1]);// -------- Import on Demand(按需引入)
const { ArrayTool } = require('boots-js/array-tool'); // Node
import { ArrayTool } from 'boots-js/array-tool' // Es6 Module
ArrayTool.removeDuplicates([1,2,3,1]);

数组去重: removeDuplicates()

const test1={a:'1'},test2={a:'1'},
arr1=[test1,test2,test1],
arr2=[1,2,3,1,4];
ArrayTool.removeDuplicates(arr1) // [{a:'1'},{a:'1'}]
ArrayTool.removeDuplicates(arr1,true) // [{a:'1'}]
ArrayTool.removeDuplicates(arr2) //[1,2,3,4];

处理日期时间的工具:DateTool

// -------- Global Import(全局引入)
const BootsJS = require('boots-js'); // Node
import BootsJS from 'boots-js' // Es6 Module
BootsJS.DateTool.dateFormater(new Date(),'YYYY-MM-DD HH:mm:ss');// -------- Import on Demand(按需引入)
const { DateTool } = require('boots-js/date-tool'); // Node
import { DateTool } from 'boots-js/date-tool' // Es6 Module
DateTool.dateFormater(new Date(),'YYYY-MM-DD HH:mm:ss');

转换时区: convertTimeZone()

DateTool.convertTimeZone(1711611931754,DateTool.timeZoneOffsetEnum['UTC+08:00'], DateTool.timeZoneOffsetEnum['UTC-06:00'])
DateTool.convertTimeZone('2024/2/12',DateTool.timeZoneOffsetEnum['UTC+08:00'], DateTool.timeZoneOffsetEnum['UTC+09:00'])

最后

目前我只想到和完成了这些功能,希望大家多多提提意见呀,包括想要的功能,改进建议等等,我一个人的想法和能力都过于局限,如果有余力的话欢迎PR一起弄呀!如果真的对大家有所帮助,能给个star鼓励下作者嘛🫡,如果我也能有个超多star的仓库就好了🙈

BootJS仓库:https://github.com/JunLiangWangX/BootsJS

BootJS文档:https://junliangwangx.github.io/BootsJS/

点击链接或微信搜索“汪啊汪”🔎,关注我及时掌握最新动态

本文由mdnice多平台发布

http://www.ds6.com.cn/news/94214.html

相关文章:

  • 服务器色情网站专用网络营销专业主要学什么
  • 网站开发师招聘app优化建议
  • 党委门户网站建设网上引流推广怎么做
  • 网站关键词多少个字数 站长网百度排行榜
  • 网络运营的工作内容seo营销名词解释
  • 电商网站wordpress广告公司推广平台
  • 深圳做app网站的公司名称网站是如何建立的
  • 长春网站建设哪家好5g网络优化
  • 如何做网站结构及栏目策划球队排名世界
  • 温州cms建站系统河北网站优化公司
  • 电影网站备案百青藤广告联盟
  • 做网站建设的网站石家庄网络关键词排名
  • 网站后面的官网是如何做的关联词有哪些小学
  • 设计数码产品宣传网站百度收录站长工具
  • 服装公司网站策划书大数据营销经典案例
  • 网站建设茂名今日新闻摘抄二十条
  • 广东莞建建设工程有限公司搜索引擎优化面对哪些困境
  • 怎么做网站的关键词库关键词是指什么
  • 中山专业做网站怎么找到当地的微信推广
  • b2b网站权重怎么制作网站二维码
  • 教学网站开发应用方案林云seo博客
  • 企业网站建设规划书广州头条新闻最新
  • 邯郸建设网站的公司惠州seo博客
  • 做网站的把网站写成一行广告投放平台有哪些
  • 网站建站如何做seo百度竞价点击软件奔奔
  • 招商加盟网站的图应该怎么做重庆seo管理平台
  • php+mysql某蓝色清爽美女图片网站源码 - 好东西分享新闻发布的网站
  • 建设项目自主验收验收网站域名备案查询
  • 企业网站制作的方法湖南平台网站建设制作
  • 机关党建网站建设方案百度推广介绍