像import java类一样 import js类_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 像import java类一样 import js类

像import java类一样 import js类

 2011/11/2 8:10:33  ytrgmj  http://ytrgmj.iteye.com  我要评论(0)
  • 摘要:写js类,依赖的管理是一个比较麻烦的事情,如果a.js依赖b.js,而b.js又使用了c.js的代码,那么我们在客户程序中必须把a.js,b.js,c.js统统用script标签导入。如果c.js发生更改,又实用了d.js,那么所有包含a.js,b.js,c.js的页面统统需要修改。而在java中,我们import一个a.java,不过a.java的依赖项发生怎么样的更改,客户程序只要importa.java就可以了。根据这个需求,写了个小工具,可以动态加载js。在TestA
  • 标签:Java JS
写js类,依赖的管理是一个比较麻烦的事情,如果a.js依赖b.js,而b.js又使用了c.js的代码,那么我们在客户程序中必须把a.js,b.js,c.js统统用script标签导入。如果c.js发生更改,又实用了d.js,那么所有包含a.js,b.js,c.js的页面统统需要修改。
而在java中,我们import一个a.java,不过a.java的依赖项发生怎么样的更改,客户程序只要import a.java就可以了。
根据这个需求,写了个小工具,可以动态加载js。
在TestA.js中定义一个类

Java代码 
var TestA = $createClass('TestA',function(param){ 
    this.value = param; 
    this.name = "testA"; 
}); 

TestA.prototype.test = function(){
alert(this.name+":" + this.value);
}
在TestB.js中写一个类TestB.js继承TestA

Java代码 
$import('TestA');  //导入TestA 
var TestB = $createClass('TestB',function(param){ //继承TestA 
    this.TestA(param); //运行父类的构造函数 
    this.name = "testB"; 
},'TestA'); 

然后在TestC.js中写一个类继承TestB
Java代码 
$import('TestB');//只要导入TestB就可以了,不需要导入TestA 
var TestC = $createClass('TestC',function(param){ //继承TestB 
    this.TestB(param); //运行父类的构造函数 
    this.name = "testC"; 
},'TestB'); 


html文件中的代码:
Java代码 
<body> 
        <script> 
        $import('TestC');//只要导入TestC,TestB和TestA系统会导入。 
        $ready(function(){ 
            var obj = new TestC('test'); 
            obj.test(); 
        }); 
        </script> 
    </body> 

系统就会打印出:
testC:test

这个工具的难点是js的加载是完全异步的,当testC被加载后,他的父类TestB和TestA实际不存在,系统会让他继承一个空白类,当TestB和TestA加载进来后,系统会检查他们有哪些子类,然后把父类的函数和属性赋值给子类。用这种方法也可以动态加载普通的js库,比如jquery,你可以写个$import('jquery'),当然,jquery的类是不能被你继承的。

代码见附件
  • SW.rar (3.4 KB)
  • 下载次数: 0
发表评论
用户名: 匿名