写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的类是不能被你继承的。
代码见附件
分享到:
相关推荐
简单的利用java与js实现文件上传 package com.fendou.myString; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import javax.servlet....
Java认证:Java中import使用.doc
计算方面,调用ScriptEngineManager和ScriptEngine两 个类,直接通过eval函数直接把输入文本当作JS代码执行,输出执行结果,这样报错也 会直接实现,另把文本框设置不允许直接从键盘输入以防止出现安全事件。...
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List;
2 3 import com.demo.enums.WeekEnum;... 10 import java.text.ParseException; 11 import java.util.Date; 12 import java.util.List; 13 14 /** 15 * ************************************************
javaimport、package作用与用法.doc
前段时间 做了个学校的春萌项目,其中用到vue连接后端java接口。 先上后端接口代码: package controller; import net.sf.json.JSONObject; import util.DBUtil; import javax.servlet.ServletException; import ...
在线演示地址//www.jb51.net/jslib/Import/a.html主要功能代码import.js 代码如下: <!– (function(){ if(typeof window._Import != “undefined”) return; //防止多次加载 function _Import(uri, x)...
示例代码: import java.util.Random; import java.util.UUID; public class Dept { /** * 生成随机字符串 uuid */ public static String getUUID() { return UUID.randomUUID().toString(); } /** * ...
} </style> <script type="text/javascript" src="js/prototype-1.6.0.3.js"> </script> <script type="text/javascript"> function getXmlHttpRequest(){ var xhr = null; if((typeof XMLHttpRequest)!='undefined...
import java.awt.event.*; import java.sql.*; import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; public class Frame extends javax.swing.JFrame { ...
"<script language='javascript' src='js/tree.js'></script>" + "</HEAD>"); out.println(" <BODY>"); out.println(showCategory(0,0,new ArrayList(),"0")); out.println(" </BODY>"); out.println...
主要是Java调用微信公众号开发接口代码。包括: 1、创建菜单接口 2、根据code获取openid 3、获取令牌token 4、根据openid获取用户基本信息 ...如果报错是因为缺少相应jar包,请根据类上面的import加入对应jar包
javaSE的import要点和packet下类的编译和运行.doc
用于JavaScript / TypeScript的Java Parser,也基于 ,语法也来自(因此请报告错误并打开与上游语法相关的请求) 使用范例 import { parse , createVisitor } from 'java-ast' ; const countMethods = ( source : ...
import java.util.ArrayList; public class Page { //当前跳转的页面情况 private String pagetype; private PaginationBean pagination; private ArrayList result; //构造函数实例化接收一个pagetype...
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <script language="javascript" > function doValidate() ...
本文主要给大家介绍了关于javascript中require、import与export的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,...
json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript?...