`
log_cd
  • 浏览: 1088861 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JSVM2使用

阅读更多
    JSVM (JavaScript Virtual Machine的缩写),一个JavaScript基础框架,sourceforge开源项目,由万常华(wch3116)于2003年底发起, 采用的是 BSD License 授权协议。
    JSVM并不是一个JavaScript Library,而是一个更底层的框架,基于这个框架,可以更好的实现JavaScript的模块化设计,以提高JavaScript代码的重用性。

1.加载JSVM 环境
   在web页面中加入代码:<script src="<jsvm2目录>/jsre.js"></script> 即可。
例如:
<script src="script/jsvm2/jsre.js" modules="smartloader" smartloaderurl="index.jsp"></script>


2.基于JSVM 的JavaScript开发
    JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。
     在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object。
“对象”的命名方式:<包名> + "." + <类名>,且必须以一个单独的文件形式保存。
保存路径是:<jsvm2目录>/classes [/<包名> …] /<类名>.class.js。
例如:
定义公用代码:
/**
 * 调用jsvm2提供的$package函数定义包名
 * 作用相当于:if (!window.com.logcd) {window.com.logcd = {};}
 */
$package("com.logcd");

com.logcd.StringBuffer = StringBuffer;

function StringBuffer(){   
   this._strings_=new Array;   
}
   
/*
 * 把该参数附加到字符串数组中
 */   
StringBuffer.prototype.append = function (str){   
   this._strings_.push(str);   
}
   
/**
 * 返回真正连接成的字符串
 */   
StringBuffer.prototype.toString = function(){   
   return this._strings_.join("");   
}
   
/**
 * 清空
 */   
StringBuffer.prototype.removeAll = function(){   
   this._strings_.splice(0,this._strings_.length);//this._strings_.length=0   
}  



页面上调用:
function execute() {
   $import("com.logcd.StringBuffer");	
   
   var buffer = new StringBuffer();
   buffer.append("learn ");
   buffer.append("use ");
   buffer.append("JSVM2!");
   alert(buffer.toString());
}


3.JSVM JavaScript Archive
    在使用JSVM2一段时间之后,很快会发现JSVM的工作模式是按需动态加载代码的。于是出现一个矛盾:当我们为了满足设计上的合理粒度将代码分散到多个对应的class.js文件中,造成代码的加载动作次数过于多,从而影响到一定的整体性能。
为了解决这个矛盾,JSVM2 提供了一个集中批量加载代码的解决方案。可以通过JSVM2自身提供的工具,将所需的多个class.js文件打包在一个js文件中,然后配置到classpath的环境变量中即可。 当程序执行到需要这个“类”或者“对象”的时候,JSVM会从缓存中直接获得对应的代码,从来避免了进行多次的XMLHttpRequest交互。

说明:该工具需要 FileSystemObject 组件的支持!所以使用该工具的环境必须是 IE. 并且如果访问的不是本地文件而是通过HTTP访问的页面,必须对该url进行信任站点授权操作。

4.JSVM Module
    JSVM2 的核心模块在 bin/kernel.js 中实现,除此之外,我们还可以使用JSVM2自带的(或者第三方提供的)其它模块。
模块文件也必须以 .js 作为扩展名,放置在 <jsvm目录>/bin 目录下。
加载模块的方式:<script src="jsvm2/jsre.js" modules="模块名称1,模块名称2"></script>

5.扩展模块 SmartLoader
    SmartLoader 是 JSVM2 的一个扩展模块。它能帮助 JSVM 实现智能地加载当前页面所需的所有 js class 文件。 有了它的帮助,程序设计人员不必关心如何对js class文件进行打包,又如何在每一个页面中的JSVM classpath参数中具体配置哪些lib文件,便可以让页面实现最小的js class加载开销。 注意:SmartLoader 需要服务端的支持,例如:web服务环境中需要支持asp,jsp或者php,perl等等动态语言。 smartloader 的使用方法:在页面的 jsvm2 的环境配置参数 modules 中加入 smartloader 即可。 如:<script src="jsvm2/jsre.js" modules="smartloader"></script>
分享到:
评论

相关推荐

    jsvm2框架源码

    JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。 在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object...

    jsvm2.06.071025

    jsvm2.06.071025jsvm2.06.071025jsvm2.06.071025

    jsvm2.05.061114

    jsvm框架,,版本:jsvm2.05.061114

    JSVM最新版本

    截止到2012年2月22日最新版本的JSVM

    JSVM解码器阅读笔记 详解解释JSVM解码过程

    JSVM解码器阅读笔记 详解解释JSVM解码过程 从数据读入到解码的整体流程大致如下: 1 由DecodeFrame作为入口,处理每一个Frame的数据 2 对于每一个Frame的数据,处理对应的AccessUnit中的每一个NALUnit数据 3 对于每...

    JSVM9.19.7

    JSVM_9_18 -&gt; JSVM_9_19 ====================== changes: - correction of scaling matrix selection - support of 2nd chroma QP offset - support of monochrome High profile decoding - correction of slice ...

    jsvm打包工具(将多个JSC打包成JS文件)

    jar.hta 是 JSVM2 下的一个打包工具. 也是基于jsvm2开发的。 能将一组多个类文件(.jsc文件)导出到一个lib文件中 (lib文件的扩展名推荐用.js)。

    jsvm:出于教育目的的JS虚拟机实现

    JSVM 16位js虚拟机实现记忆模型虚拟CPU使用情况: RAM内存(可以更改内存大小)。 平面模型,0x0000-0xFFFF(最高64Kb)。 内部寄存器存储器(仅可通过寄存器访问)。 现在不使用闪存。寄存器集实际信息可以在找到。...

    Javascript中arguments用法实例分析

    add(1,2&#41;); //NaN,js中调用方法采用就近原则; //而由于该方法没有传入n3,所以结果是NaN js中没有方法重载,怎么解决上面这个问题? //arguments function f1(){ var sum=0; for(var i=0;i&lt;arguments....

    JavaScript王者归来part.1 总数2

     10.5.3 构造新的文法--一个在JSVM中实现JSVM2解析器的例子   10.6 高级用法   10.7 用正则表达式处理文本   10.7.1 创建一个计价公式编辑器   10.7.1.1 需求分析--什么是计价公式编辑器   10.7.1.2 系统...

Global site tag (gtag.js) - Google Analytics