• 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.

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

  • 相关阅读:
    调整vmware虚拟机硬盘空间的方法
    微型网络IP转换工具
    初观线程(1)
    Linux逻辑盘卷管理LVM详解(转载)
    微型IP转换工具V1.0升级版
    android 模拟器一键root
    android自用小软件"小毛毛起床啦!“<1>
    很久没更新博客了,写下最近的情况
    解决skype突然无法启动的问题(原创)
    OllyDBG处理C++ EH exception异常
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/3798652.html
Copyright © 2020-2023  润新知