bullettool
v3.1.4
Published
a front tool of bullet-tool
Downloads
10
Maintainers
Readme
bulletTool
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);
});
说明:
参考:
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: "", //灰度图对应彩色的色标图
})
参考: