zoukankan      html  css  js  c++  java
  • jYD框架使用

      jQuery是一个非常好的框架,涉及的内容比较多,随着现在浏览器的发展,原生JS的功能越来越强大,jQuery包含内容很多,但是常用的功能无非涉及到Dom操作,事件,样式,表单和Ajax交互。引入那么大的库,感觉很多又没有用到,至此萌发出自己构建一个JS轻量级库的想法,此库只实现常用的需求点,同时对于IE等老版本浏览器不兼容,让此JS能卸下历史负担,立足当下。代码大约14KB,已经上传github地址: https://github.com/JackWangCUMT/jYD,
    最后,限于个人精力有限,此框架难免有不足之处,也欢迎发送意见到邮箱进行反馈。

     1 命名

     一个JS框架,首先需要起一个名字,我思考再三,最终决定用我给即将出生的孩子起的名字允迪(YUNDI)来命名,取首字母,即jYD. 允迪取自 南朝·梁·任昉《为萧扬州荐荐士表》:“窃见秘书丞琅玡臣王暕,年二十一,字思晦,七叶重光,海内冠冕。神清气茂,允迪中和。”,允迪有诚实遵循的意思。

     2 框架构建

     为了方便后续的分模块开发,采用如下JS模式进行框架构建,此模块有私有变量和函数,有公有函数,m.方法即可以外部访问。

     1 //(C) 2017 wangming  all rights reserved
     2 //email:wangmingemail@163.com
     3 var jYD = (function(m) {
     4          //private
     5          var _ver = 1.0;
     6          var _toString = Object.prototype.toString;
     7          _log = function(msg) {
     8              console.log(msg);
     9          }
    10          //public
    11          m.log = function(msg) {
    12             _log(msg);
    13          }
    14          return m;
    15 }(jYD || {}));

      事件绑定,采用如下的代码段进行实现:

     1 function _on(obj, type, handle) {
     2              try { // Chrome、FireFox、Opera、Safari、IE9.0+
     3                  obj.addEventListener(type, handle, false);
     4              } catch (e) {
     5                  try { // IE8.0-
     6                      obj.attachEvent('on' + type, handle);
     7                  } catch (e) { // 早期浏览器
     8                      obj['on' + type] = handle;
     9                  }
    10              }
    11              var events = obj['the' + type];
    12              if (!events) {
    13                  events = obj['the' + type] = [];
    14                  events.push(handle);
    15              }
    16 }

      方法连缀的实现,可以在方法后return this来实现:

     1 m.first = function() {
     2              for (var i = 0, e; e = _ele[i++];) {
     3                  if (e.nodeType == 1)
     4                      _ele = e;
     5              }
     6              return this;
     7 };
     8  m.last = function() {
     9              var len = _ele.length;
    10              for (var i = len - 1, e; e = _ele[i--];) {
    11                  if (e.nodeType == 1)
    12                      _ele = e;
    13              }
    14              return this;
    15 };

      3 jYD使用

    1 <script src="jYD.js"></script> //引入js

    Dom

    jYD.$("#txt2").ele().value
    jYD.$("#frm input").ele()
    jYD.$("input:checked").ele()[0].value
    jYD.$("input[type=text]").ele()[0].value
    jYD.$(".classname").ele()[0].value
    jYD.$(".classname").first().ele()

    Form

    var _json = {
        "name3": "name3",
        "name6": "name6",
        "name7": "name7",
        "name2": "2017-08-08",
        "name1": "audi",
        "ajdsfa": false,
        "Fruit": "桃子",
        "fruit1": "香蕉",
        "hobby": ["音乐", "游泳"],
    };
    jYD.$("#frm").bindJson(_json)
    jYD.$("#frm").serialize() //name3=name3&name6=name6&name7=name7&name2=2017-08-08
    jYD.$("#frm").reset()
    jYD.$("input").disabled()
    jYD.$("select").disabled()
    jYD.$("button").disabled()
    jYD.$("input").enable()
    jYD.$("select").enable()
    jYD.$("button").enable()

    Event

    jYD.$("#btnok").off("click").on("click", function(e) {
          console.log(decodeURIComponent(jYD.$("#frm").serialize()));
    });
    //custom Event
    var sender = jYD.$("#cediv").ele();
    var target = jYD.$("#btnce").ele();
    jYD.createCE(sender, "divbtnclick", {
         detail: {
                tag: sender,
                 msg: "hello"
          }
    
    }, target, "click");
     //冒泡
    jYD.$("#cediv").on("divbtnclick", function(e) {
          console.log(e);
    });

    CSS

    jYD.$(".clss").addClass("red").removeClass("clss")
    jYD.$("#txt2").css({"backgroundColor":"#eee"});

    Ajax

     jYD.post('/api/api3.ashx')
         .params(jYD.$("#frm").serialize() + "&table=22")
         .success(function (data) {
               console.log(data);
         }).error(function (data) {
               console.log("eror" + data);
         })
         .send();

    Other

    jYD.is.Number(99)
    jYD.isElement(document.getElementById("frm"))
    jYD.is.Array([])
  • 相关阅读:
    推荐一个SAM文件中flag含义解释工具--转载
    字节码技术
    Jconsole工具检测堆内存变化的使用
    观察者模式
    装饰器模式(IO流案例)
    JVM垃圾收集器
    内存溢出与内存泄漏区别
    栈溢出
    内存溢出
    JVM参数调优
  • 原文地址:https://www.cnblogs.com/isaboy/p/jYD.html
Copyright © 2011-2022 走看看