Vue2的Code思想写JQuery

5 阅读1分钟

Vue代码的编写方便是因为数据响应式—— Vue API 已经替程序员完成将数据通过DOM操作渲染页面上的步骤。JQuery 没有实现“数据响应式”,只是将Dom操作的API从原生做了简化。所以使用JQuery编写前端代码时只能手动实现。然而Vue的Model和View分离的思想值得我们借鉴。

State、Template、Method、Hook 示例

示例代码如下:

const state = {
    domTemp : null,
}
// dom state 存储
const setDomTemp = function () {
    state.domTemp = $('domTemp selector');
}
// 渲染目标Dom模板
const renderDomTemp = function (data) {
    const domTempEle = state.domTemp.clone();
    domTempEle.remove();
    // 对domTempEle进行赋值;
    // 绑定事件操作
    domTempEle.find(...).text(...)
    $(目标位置).append(domTempEle)。
     $(目标位置).html(domTempEle)。
}
// ajax请求数据
const fetchData = function () {
    $.ajax(url,param,function(res){
        const data =  res.data;
        renderDomTemp(data);
    })
}
// 相当于vue中Mounted
$(function(){
    setDomTemp()
    fetchData()
})

上面state.domTemp,setDomTemp,renderDomTemp 共同组成响应式的实现。数据返回后调用renderDomTemp(data)即实现数据的渲染。

  • $(function(){})相当于Vue中Mounted。
  • v-if, v-show 通过JQuery中hide(),show()方法实现。

组件封装

为了更好的实现复用,将同一组件相关的state.domTemp,setDomTemp,renderDomTemp封装成一个class。

class CustomCompnent {
    
    domTemp = `<div>.....</div>`

    constructor(option) {
      ...
    }

    // dom state 存储
    setDomTemp () {
          state.domTemp = $('domTemp selector');
    }
    // 渲染目标Dom模板
    renderDomTemp (data) {
        const domTempEle = state.domTemp.clone();
        domTempEle.remove();
        // 对domTempEle进行赋值;
        // 绑定事件操作
        domTempEle.find(...).text(...)
        $(目标位置).append(domTempEle)
        $(目标位置).html(domTempEle)
    }
    // 将组件有关的样式渲染style或者引入组件相关的样式文件
    renderStyle(){
    
    }
}

接下来,引入组件,按照所需渲染即可。