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.

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

  • 相关阅读:
    SQLite打开提示database disk image is malformed
    windows查看端口占用
    新浪SAE使用Thinkphp框架,禁用memcache节省豆子的方法
    Realtek 8168 安装 VMware ESXi 提示没有驱动
    13年国庆彩蛋
    Flex使用宋体渲染越南语显示错误
    微信 编码要UTF8
    WeiXin 验证成为开发者和更换服务器验证代码
    测试网络连通情况
    废弃sqlite代码,备查
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/3798652.html
Copyright © 2011-2022 走看看