zoukankan      html  css  js  c++  java
  • AMD and CMD are dead之KMD规范

    What’s KMD?

    乱世出英雄,KMD名字的由来充满了杀气。

    Kill AMD and CMD

    KMD为替代混乱的AMD和CMD世界而生,一统天下。或者让这个混乱的世界更加混乱,导致:

    KMD AMD CMD三分天下

    KMD的目标从来都是远大的:

    JS工程化终极解决方案

    使用KMDjs的工程师从来都是:

    image

    尼玛,什么东西,这么NB?

    KMD规范

    0.KMD只暴露两个关键字,一个是define用来定义模块和加载模块,一个是kmdjs,用来使用kmdjs.config

    1.通过define定义命名空间和类

    define("MyApp.User", {
        init: function (name,age) {
            this.name = name;
            this.age = age;
        },
        say: function () {
            alert("my name is " + this.name);
        }
    })

    其中MyApp是命名空间,User是类

    2.不允许只定义类,不定义命名空间,如:下面的做法是错误的:

    define("User", {
        init: function (name,age) {
            this.name = name;
            this.age = age;
        },
        say: function () {
            alert("my name is " + this.name);
        }
    })

    3.通过statics给类定义静态属性和方法:

    define("NS2.Model.Animate",["NS2"], {
        statics: {
            Version: "1.0",
            CreateGUID: function () {
                return 2;
            }
        },
        init: function (name, age) {
            this.name = name;
            this.age = age;
        }
    })

    4.通过冒号实现继承:

    define("NS2.Model.User:NS2.Model.Animate", {
        statics: {
            CreateGUID: function () {
                return 3;
            }
        },
        init: function (name, age) {
            this.name = name;
            this.age = age;
        }
    })

    4.静态属性可继承,可覆盖,父类的保持不变

    5.通过define方法引用命名空间,引用之后,该命名空间下的类全部可以使用

    require(["NS", "NS2", "NS2.Model"], function () {
        //这里面可以使用上面三个命名空间下的所有类
    })

    这里不需要担心会加载大量Class,KMDjs会拿到function(){}去分析用来哪个命名空间下的哪个类,然后按需加载执行。

    6.通过_super访问父类方法:

    define("NS2.Model.User:NS2.Model.Animate", {
        init: function (name, age) {
            this._super(name, age);
            this.sex = "男";
        }
    })

    8.js文件名和类名一致

    
    

    9.类名和命名空间以及文件路径的关系在kmdjs.config方法配置

    KMDjs网址

    http://kmdjs.org/ 备案中..

    http://kmdjs.github.io/  kmdjs在github官网

    http://htmlcssjs.duapp.com/kmdjs/  kmdjs在BAE

    kmdjs@QQ.com kmdjs官方邮箱

    @当耐特 kmdjs官方微博

    总结

    AMD and CMD are dead. That's all.

    我不是认真,我就是为了输赢.

  • 相关阅读:
    swfupload多文件上传[附源码]
    C#函数式程序设计之泛型(下)
    ASP.NET MVC实现POST方式的Redirect
    使用Windows Azure的VM安装和配置CDH搭建Hadoop集群
    Asp.Net MVC 上传图片到数据库
    ASP.NET Web API标准的“管道式”设计
    如何捕获和分析 JavaScript Error
    快学Scala习题解答—第一章 基础
    职场人生
    合伙人的重要性超过了商业模式和行业选择(转)
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/3798652.html
Copyright © 2011-2022 走看看