整理的一些前端经常用的功能。含有时间戳、U
created at 2017.11.6
整理的一些前端经常用的功能。含有时间戳、URL参数、cookie操作、AJAX、scrollPage、图片压缩、base64转换file/blob对象、灰度图转彩色、Dom对象操作。持续更新....
latest - 2019.8.2 - bulletTool-3.0.1对项目进行重构, 对npm项目更为合理. HTTPRequest支持node终端请求, Time增加了时间值格式化.
使用单独的test.js进行测试. `npm test` 即可进行测试.
使用:
// 引入 const Bullet = require('bullettool') // import Bullet from 'bullettool' const cookie = new Bullet.Cookie(); cookie.getCookies(); const dom = new Bullet.Dom(); dom.toHtml({ tagName: 'p', html: 'hello world!', }); const http = new Bullet.HttpRequest(); http.request({ url: 'http://ydgf.sohu.com/schedule/index.json', dataType: 'json', }).then(res => { console.info(`function request(): \n${JSON.stringify(res)}\n\n`); }).catch(err => { console.error(`function request() has error: \n${err}`); }); const image = new Bullet.Image(); image.zipImage({ imgSrc: '', }); new Bullet.ScrollPage({ el: null }); const time = new Bullet.Time(); console.log(`timestamp():\n${time.timestamp()}`); console.log(`timestamp10():\n${time.timestamp10()}`); console.log(`dateFormat():\n${time.dateFormat()}`); console.log(`timeFormat(1232221):\n${time.timeFormat(1232221)}`); const url = new Bullet.Url(); console.log(`getParams():\n${JSON.stringify(url.getParams())}`); console.log(`toUrl():\n${url.toUrl()}`);
Cookie说明:
declare class Cookie { public toCookieString(): string; // 获取当前页面cookie字符串 public getCookies(): any; // 获取当前页面cookie并转化为对象 public getCookie(name: string): string | any; // 获取指定键名的cookie值 public setCookie(key: string, value: any, exdays?: number): any; // 设置新的cookie键名及值 public deleteCookie(name: string): boolean | any; // 删除指定键名的cookie值 } Dom
interface BulletDOMAttribute { name: string, // Dom属性名称 value: string | boolean | number | object | function | any, // Dom属性值 } interface BulletDOMObject { tagName?: string, // html标签 attr?: BulletDOMAttribute[], // html标签属性 html?: string, // html标签文字内容 children?: BulletDOMObject[], // 子html标签 } declare class Dom { public async toJson(el: HTMLElement | any): BulletDOMObject; // 将对应html元素转换为对象 public async toHtml(obj: BulletDOMObject | any): HTMLElement; // 将对应对象转换为html元素 public async createDom(obj: BulletDOMObject | any, el?: HTMLElement): void; // 创建DOM元素 } HttpRequest
interface HttpRequestOptions { url?: string, // 请求地址 type?: string, // 请求类型[get|post|put|delete] dataType?: string, // 数据类型[json|text|blob|arraybuffer] data?: object, // 请求数据 headers?: object, // 请求头 protocol?: string, // 请求协议[http|https] hostname?: string, // 请求主机地址 port?: number, // 请求主机端口 path?: string, // 请求文件路径 method?: string, // 请求方式[get|post|put|delete] } declare class HttpRequest { public request(opts: HttpRequestOptions): Promise<string | Blob | ArrayBuffer | object | any>; // 请求指定主机 并返回promise结果 } Time
declare class DateUtil { timestamp(...dateArgs?: []): number; // 获取当前或者指定date时间戳(毫秒) timestamp10(...dateArgs?: []): number; // 获取当前或者指定date时间戳(秒) dateFormat(...dateArgs?: [], format?: string): string; // 转换当前或指定date时间为指定格式化字符串 timeFormat(timestamp?: number): string; // 转化指定毫秒或秒时间值为格式化字符串 } Image
interface ImageZipOptions { imgSrc: string, // 图片地址或base64地址 width?: number, // 指定压缩宽度 height?: number, // 指定压缩高度 quality?: number, // 指定压缩等级[0-1] fileType?: string, // 指定文件格式[jpeg|png|bmp] done?: (base64: string) => {}, // 事件完成回调函数 } interface ImageGrayOptions { imgSrc: string, // 图片地址或base64地址 done?: (base64: string) => {}, // 事件完成回调函数 } declare class Image { zipImage(opt: ImageZipOptions): void; // 压缩图片 toFileBlob(dataURI: string, type?: number): File | Blob; // 转化图片为blob格式或者file格式 Gray2ColorImage(opt: ImageGrayOptions): void; // 转化图片为灰色 } Url
declare class UrlUtil { getParams(path?: string): any; // 获取传入地址的queryParams toUrl(KVobject?: any): string; // 将key-value对象转化成地址 } ScrollPage
interface ScrollPageOptions { el: HTMLElement | any, // 传入的html元素 scrollUp?: Function, // 上滑事件回调 scrollDown?: Function, // 下滑事件回调 scrolling?: Function, // 滑动过程回调 } declare class ScrollPage { constructor(opts: ScrollPageOptions); }
release-1.2.2 - 2019.3.17 - bulletTool-1.2.2参考:
对项目进行更新,修复Dom、Url组件的BUG,并且将HttpRequest组件改成了Promise的方式进行状态返回。
并使用mocha和chai组件编写组件的测试方案。
使用:
说明:
正则表达式学习 release-1.2.1 - 2018.9.23 - bulletTool-1.2.1参考:
对项目进行重构,使用webpack构建和管理项目,将各功能插件化,主入口js统一调用。使用方法有些发生变化。
新增功能:dom结构与json序列化相互转换,Dom类。
使用:
const time = new bullet.Time('2018-4-30'); time.timestamp(); //获取十三位时间戳,精确到毫秒 time.timestamp_10(); //获取十位时间戳,精确到秒 time.timeFormat(timestamp, 'yyyy mm dd HH:MM:SS'); //将时间戳转化为格式化字符串,y:年;m:月;d:日;H:时;M:分;S:秒; const url = new bullet.Url(); url.getParams("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=25017023_10_pg"); //将URL地址转换为对象 url.toUrl({ k: "value1", k2: "value2", // ... more params }); //将对象参数转换为URL参数,不含'?' const cookie = new bullet.Cookie(); cookie.getCookies(); //获取当前页面的所有cookie,以对象形式返回 cookie.getCookie('key'); //获取当前页面的键名为'key'的cookie,返回值内容 cookie.setCookie('key', 'value', exdays); //为当前页面添加键值分别为'key','value'的cookie条目,并设置有效时间为exdays(数字),返回新的页面cookie对象形式 cookie.deleteCookie('key'); //删除当前页面的键名为'key'的cookie,返回新的页面cookie对象形式 const request = new bullet.HttpRequest({ type: 'GET', //请求类型:GET,POST,PUT,DELETE url: 'https://github.com/BulletYuan/', //请求地址 dataType: 'JSON', //返回值类型:JSON,XML data: { a: 'a1' }, //请求数据,对象形式 header: { 'Content-Type': 'application/json;charset=UTF-8' }, //请求header自定义,对象形式 }); // 返回Promise request .then(res => { console.log(res) }) // 请求成功 .catch(err => { console.err(err) }); // 发生异常 const scroll = new bullet.ScrollPage(); scroll({ el: document.getElementsByTagName('body').item(0), //需要监听下滑或上拉事件的元素不传该值,则默认为监听"body" scorllUp: function(e) {}, //页面上拉加载更多事件 scorllDown: function(e) {}, //页面下滑刷新数据事件 scorlling: function(e) {} //页面下滑过程事件 }); const image = new bullet.ImageTool(); image.zipImage({ //图片压缩 imgSrc: "", //图片地址或base64码(必填参数) width: 200, //图片压缩宽度,优先高度,按照宽高比缩放高度 height: 200, //图片压缩高度,按照高宽比缩放宽度 quality: 0.7, //图片压缩质量,0-1数字,默认为0.7 fileType: "jpeg", //图片文件类型,默认为jpeg done: (base64) => { //压缩成功回调方法,传入压缩图片base64码 console.log(base64); } }); image.toFileBlob(base64, 0) //base64码转换成file对象或blob对象,方便上传 0 转换为blob对象 1 转换为file对象 image.Gray2ColorImage({ //灰度图转彩色 imageSrc: "", //图像资源url colorMap: "", //灰度图对应彩色的色标图 }); const dom = new bullet.Dom(); dom.toJson(document.querySelector('body')) // 将dom对象转换成object .then(json => { console.log(json); }) .catch(err => { console.err(err); }); dom.toHtml(json) // 通过object转译为html代码 .then(html => { console.log(html); }) .catch(err => { console.err(err); }); dom.createDom(json, parentDom) // 通过object创建新的Dom对象 .then(() => { // finished JsonToDom }) .then(() => { // finished parentDom append Dom }) .catch(err => { console.err(err); });
说明:
js时间格式化正则表达 pro-release - 2018.9.14 - bulletTool-1.1.4参考:
使用:
timestamp() //获取十三位时间戳,精确到毫秒
timestamp_10() //获取十位时间戳,精确到秒
timeFormat({
ts: timestamp,
format: 'yyyy mm dd HH:MM:SS'
}) //将时间戳转化为格式化字符串,y:年;m:月;d:日;H:时;M:分;S:秒;
url.getParams({
url: 'https://github.com/BulletYuan/?a=a1'
}) //将URL参数(若没有则获取当前页面的网址)后的search部分,转换为对象
url.toUrl({
a: a1
}) //将对象参数(若没有则获取上一次网址转化为对象的结果)转换为URL参数,不含'?'
cookie.getCookies() //获取当前页面的所有cookie,以对象形式返回
cookie.getCookie('key') //获取当前页面的键名为'key'的cookie,返回值内容
cookie.setCookie('key', 'value', exdays) //为当前页面添加键值分别为'key','value'的cookie条目,并设置有效时间为exdays(数字),返回新的页面cookie对象形式
cookie.deleteCookie('key') //删除当前页面的键名为'key'的cookie,返回新的页面cookie对象形式
ajax({
type: 'GET', //请求类型:GET,POST,PUT,DELETE
url: 'https://github.com/BulletYuan/', //请求地址
dataType: 'JSON', //返回值类型:JSON,XML
async: true, //请求异步标识:true,false
data: {
a: 'a1'
}, //请求数据,对象形式
header: {
Content - Type: 'application/json;charset=UTF-8'
}, //请求header自定义,对象形式
success: (res, status, readyState) => {
console.log(res, status, readyState)
}, //请求成功回调函数,res:返回内容;
//status:(200: "OK"
//404: 未找到页面
//500:服务器内部错误
//(其余对应服务器状态码));
//readyState:(0: 请求未初始化
//1: 服务器连接已建立
//2: 请求已接收
//3: 请求处理中
//4: 请求已完成,且响应已就绪);
error: (status, readyState) => {
console.log(status, readyState)
} //请求失败回调函数,
//status:(200: "OK"
//404: 未找到页面
//500:服务器内部错误
//(其余对应服务器状态码));
//readyState:(0: 请求未初始化
//1: 服务器连接已建立
//2: 请求已接收
//3: 请求处理中
//4: 请求已完成,且响应已就绪);
})
scrollPage({
el: document.getElementsByTagName('body').item(0), //需要监听下滑或上拉事件的元素不传该值,则默认为监听"body"
scorllUp: function(e) {}, //页面上拉加载更多事件
scorllDown: function(e) {}, //页面下滑刷新数据事件
scorlling: function(e) {} //页面下滑过程事件
})
bullet.zipImage({ //图片压缩
imgSrc: "", //图片地址或base64码(必填参数)
width: 200, //图片压缩宽度,优先高度,按照宽高比缩放高度
height: 200, //图片压缩高度,按照高宽比缩放宽度
quality: 0.7, //图片压缩质量,0-1数字,默认为0.7
fileType: "jpeg", //图片文件类型,默认为jpeg
done: (base64) => { //压缩成功回调方法,传入压缩图片base64码
console.log(base64);
}
})
bullet.toFileBlob(base64, 0) //base64码转换成file对象或blob对象,方便上传 0 转换为blob对象 1 转换为file对象
new bullet.Gray2ColorImage({ //灰度图转彩色
imageSrc: "", //图像资源url
colorMap: "", //灰度图对应彩色的色标图
})
js实现ajax参考:
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。