源码
// 源码很简单,不多介绍
function DragElement(root) {
this.dom = root;
}
DragElement.prototype = {
constructor: DragElement,
mouseDownListener(ev) {
ev.preventDefault();
let currentLeft = this.dom.offsetLeft;
let currentTop = this.dom.offsetTop;
let currentPageX = ev.pageX;
let currentPageY = ev.pageY;
let move = (ev) => {
console.log('move')
let left = ev.pageX - currentPageX + currentLeft;
let top = ev.pageY - currentPageY + currentTop;
left < 0 && (left = 0);
top < 0 && (top = 0);
let maxLeft = this.dom.parentElement.clientWidth - this.dom.clientWidth;
let maxTop = this.dom.parentElement.clientHeight - this.dom.clientHeight;
left > maxLeft && (left = maxLeft);
top > maxTop && (top = maxTop);
this.dom.style.left = left + "px";
this.dom.style.top = top + "px";
};
let up = () => {
document.removeEventListener("mousemove", move, false);
document.removeEventListener("mouseup", up, false);
};
document.addEventListener("mousemove", move, false);
document.addEventListener("mouseup", up, false);
},
bind(currentEle) {
currentEle.setAttribute("style", "cursor: move;");
let mouseDownListenerBack = (e) => {
this.mouseDownListener(e)
}
currentEle.addEventListener(
"mousedown",
mouseDownListenerBack,
false
);
return mouseDownListenerBack
},
unBind(currentEle, listenerBack) {
currentEle.setAttribute("style", "cursor: default;");
currentEle.removeEventListener(
"mousedown",
listenerBack,
false
);
},
};
export default DragElement;
注册npm账号
- 开发一个npm包,需要一个npm账号,将npm包发布到npm的托管服务器
- 注册地址:npmjs.org
- 注册成功后一定要在邮箱里验证一下,不然发布会403报错
开发npm包
1.npm init
进入文件夹,执行npm init,按照提示输入内容
2.编写代码
在文件夹里根据项目情况编写结构目录。我这里实现的拖拽元素功能就封装成一个对象,所以只需这一个js即可。
3.npm adduser
输入用户信息,注意看npm源,如果是淘宝镜像源则要则要修改
4.npm publish
如果失败,1.可能包名重复,换个名称。2.注册成功后没有在在邮箱里验证一下。
成功后就可以在你的npm里看到包信息了
5.更新npm包
1.更新版本号
最简单方式无非就是改package.json关于版本;或者可以执行命令: npm version 1.0.1 同样可以起到作用
2.发布版本
更新npm包同样是执行npm adduser;npm publish即可