`
ytrgmj
  • 浏览: 21516 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

像import java类一样 import 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)
  • 下载次数: 5
分享到:
评论

相关推荐

    java通过js上传文件

    简单的利用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

    Java认证:Java中import使用.doc

    Java计算器实验报告(1).doc

    计算方面,调用ScriptEngineManager和ScriptEngine两 个类,直接通过eval函数直接把输入文本当作JS代码执行,输出执行结果,这样报错也 会直接实现,另把文本框设置不允许直接从键盘输入以防止出现安全事件。...

    java——电信报表管理系统(完整版)

    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;

    定时任务cron 解析为中文.docx

    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

    javaimport、package作用与用法.doc

    Vue调用后端java接口的实例代码

    前段时间 做了个学校的春萌项目,其中用到vue连接后端java接口。 先上后端接口代码: package controller; import net.sf.json.JSONObject; import util.DBUtil; import javax.servlet.ServletException; import ...

    javascript同步Import,同步调用外部js的方法

    在线演示地址//www.jb51.net/jslib/Import/a.html主要功能代码import.js 代码如下: &lt;!– (function(){ if(typeof window._Import != “undefined”) return; //防止多次加载 function _Import(uri, x)...

    【JavaScript源代码】Java 生成随机字符的示例代码.docx

     示例代码: import java.util.Random; import java.util.UUID; public class Dept { /** * 生成随机字符串 uuid */ public static String getUUID() { return UUID.randomUUID().toString(); } /** * ...

    java练习题

    } &lt;/style&gt; &lt;script type="text/javascript" src="js/prototype-1.6.0.3.js"&gt; &lt;/script&gt; &lt;script type="text/javascript"&gt; 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 { ...

    无限级树(Java递归)

    "&lt;script language='javascript' src='js/tree.js'&gt;&lt;/script&gt;" + "&lt;/HEAD&gt;"); out.println(" &lt;BODY&gt;"); out.println(showCategory(0,0,new ArrayList(),"0")); out.println(" &lt;/BODY&gt;"); out.println...

    Java微信接口调用

    主要是Java调用微信公众号开发接口代码。包括: 1、创建菜单接口 2、根据code获取openid 3、获取令牌token 4、根据openid获取用户基本信息 ...如果报错是因为缺少相应jar包,请根据类上面的import加入对应jar包

    javaSE的import要点和packet下类的编译和运行.doc

    javaSE的import要点和packet下类的编译和运行.doc

    java-ast:适用于JavaScriptTypeScript的Java解析器(基于antlr4ts)

    用于JavaScript / TypeScript的Java Parser,也基于 ,语法也来自(因此请报告错误并打开与上游语法相关的请求) 使用范例 import { parse , createVisitor } from 'java-ast' ; const countMethods = ( source : ...

    Java Oracle分页处理

    import java.util.ArrayList; public class Page { //当前跳转的页面情况 private String pagetype; private PaginationBean pagination; private ArrayList result; //构造函数实例化接收一个pagetype...

    javajsp实现了js验证表单

    &lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; &lt;script language="javascript" &gt; function doValidate() ...

    一文让你彻底搞清楚javascript中的require、import与export

    本文主要给大家介绍了关于javascript中require、import与export的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,...

    Json-RPC for java中文手册

    json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript?...

Global site tag (gtag.js) - Google Analytics