美文网首页
js组件设计

js组件设计

作者: 疾风劲草ccy | 来源:发表于2018-02-24 15:45 被阅读54次

日常工作中经常会用到各种的js插件,他们是怎么做的呢,这里假设制作一个滑块组件Slider。

html:
<div id="box"><div>

js:
var list = [{ }, { }, { }, …] //数据

//构造函数
function Slider(opts){
    //构造函数需要的参数
    this.wrap = opts.dom; //dom
    this.list = opts.list; //数据

    //构造三步曲
    this.init();
    this.renderDOM();
    this.bindDOM();
}

//第一步 -- 初始化 (定义或获取需要的参数)
Slider.prototype.init = function() {
  //设定宽度
  this.scaleW = window.innerWidth;
  //设定初始的索引值
  this.idx = 0;
};

//第二步 -- 根据数据渲染DOM
Slider.prototype.renderDOM = function(){
  var wrap = this.wrap;
  var data = this.list;
  var len = data.length;
  
  //创建dom
  this.outer = document.createElement('ul');
  for(var i = 0; i < len; i++){
    var li = document.createElement('li');
    var item = data[i];
    ……
    this.outer.appendChild(li);
  }
  //插入文档中
  wrap.appendChild(this.outer);
};

//第三步 -- 绑定 DOM 事件
Slider.prototype.bindDOM = function(){
  var self = this;
  var scaleW = self.scaleW;
  var outer = self.outer;
  
  //事件方法
  var startHandler= function (evt) { evt.preventDefault(); …… }
  var moveHandler= function (evt) {  evt.preventDefault(); …… }
  var endHandler= function (evt) {  evt.preventDefault(); …… }

  //绑定事件
  outer.addEventListener('touchstart', startHandler);
  outer.addEventListener('touchmove', moveHandler);
  outer.addEventListener('touchend', endHandler);
};

//初始化Slider 实例
new Slider({
  dom : document.getElementById('box'),
  list : list
});

相关文章

  • ReactNative组件状态设计思考

    设计React组件与设计一个原生js组件最大的区别就是状态的设计。 术语定义 1、属性 泛指用户在初始化组件时候可...

  • js组件设计

    日常工作中经常会用到各种的js插件,他们是怎么做的呢,这里假设制作一个滑块组件Slider。

  • 项目设计与原理分析

    JS组件设计 设计原则 高内聚低耦合组件的功能受控于组件本身,而不是别的组件。 周期性迭代需要结合实际的业务场景去...

  • 项目设计与原理分析

    一、CSS模块化设计 1、设计原则 2、设计方法 二、JS组件设计 1、设计原则 2、设计方法 三、自适应 1、基...

  • vue 组件化的入门详解

    组件 组件(Component)是Vue.js最核心的功能,也是整个框架设计最精彩的地方,当然也是最难掌握的。组件...

  • 【组件模块化5】JS组件设计分析

    js组件设计原则 a、高内聚低耦合 一个组件之内不要依赖任何其他组件,不要被其他组件所牵制,要把这个组件的内容封装...

  • 4-1、css模块化设计

    1、项目设计与原理分析 1、css模块化设计 2、JS组件设计 3、自适应 4、SPA设计 5、构建设计 6、上线...

  • 微信小程序自定义组件实现外部样式类

    /* 组件 custom-component.js */ 组件 组件wxml中 组件js中 //注意在组件中写了外...

  • 小程序 封装对话框

    创建组件 组件 wxml 组件 wxss js json 页面引用组件 json中 wxml js 效果

  • React-todo-list 系列二

    状态组件 => 组件拆分 TodoList.js TodoItem.js

网友评论

      本文标题:js组件设计

      本文链接:https://www.haomeiwen.com/subject/diwqxftx.html