27 Nov 2017

前端开发模式

想法

  1. 开发组件库,并发布到私服
    可以保证组件库所有项目共用
  2. 开发演示demo,包含代码及演示
    起始是api,降低新人入手难度
  3. 项目脚手架生成器,拖拽式代码生成器,生成项目源码
    设计好项目模板,组件所见即所得。规定好项目结构,降低开发难度,减少开始时间
  4. 开发
    根据需求在生成的模板上开发项目

实现

开发组件库

开发演示demo

发布到私服并使用

项目脚手架生成器

  1. 生成器一: 自制脚手架cil工具(命令行)
  2. 生成器二: 自制脚手架cil工具(Electron)

拖拽式代码生成器

使用html5原生拖拽API

DataTransfer 对象:数据传递,Event.dataTransfer
draggable 属性:元素是否可拖拽,draggable=true
ondragstart 事件:被拖曳元素,拖拽开始时
ondragenter 事件:目标元素,进入目标元素时
ondragover 事件:目标元素,拖拽元素在目标元素上移动时,一定要执行preventDefault(),阻止默认的些事件方法等执行
ondrop 事件:目标元素,被拖拽元素在目标元素鼠标放开时
ondragend 事件:被拖曳元,拖拽完成后
从其他应用软件或是文件中拖东西进来,用document的ondragover事件
Event.effectAllowed 属性:拖拽的效果

ev.dataTransfer.effectAllowed = "move";//
        "uninitialized":没有该被拖动元素放置行为
"none":被拖动的元素不能有任何行为
"copy":只允许值为"copy"的dropEffect
"link":只允许值为"link"的dropEffect
"move":只允许值为"move"的dropEffect
"copyLink":允许值为"copy"和"link"的dropEffect
"copyMove":允许值为"copy"和"link"的dropEffect
"linkMove":允许职位"link"和"move"的dropEffect
"all":允许任意dropEffect

ev.dataTransfer.dropEffect = "move";//
"none":不能把拖动的元素放在这里。这是除文本框之外所有元素的默认值
"move":应该把拖动的元素移动到放置目标
"copy":应该把拖动的元素复制到放置目标
"link":表示放置目标会打开拖动的元素(但拖动的元素必须是一个链接,有URL)               
dataTransfer.items:该属性返回DataTransferItems对象,该对象代表了拖动数据
dataTransfer.setDragImage(element,x,y):设置拖放操作的自定义图标。其中element设置自定义图表,x,y分别为鼠标水平方向和竖直方向的距离
dataTransfer.addElement(element):添加自定义图标
DataTransfer.files包含一组可获取的本地文件列表(拖拽上传功能)
    
ev.dataTransfer.setData("text", ev.target.innerHTML);//getData、clearData
ev.dataTransfer.setDragImage(ev.target, 0, 0);// 拖拽时跟随鼠标移动显示
eleDrag = ev.target;

开发

打包成桌面程序


Tags: