开发一款弹窗拖拽js,并npm发布包

964 阅读1分钟

源码

// 源码很简单,不多介绍
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即可