V8.NET使用详解

1,下载V8.NET

V8.NET 下载地址:https://v8dotnet.codeplex.com/乐山天立机械有限公司

2,了解V8基本概念(虽然是讲V8.NET,还是先讲V8)

1、基本概念 

在使用v8引擎之前,必须知道三个基本概念:句柄(handle),作用域(scope),

上下文环境(context,大爷的老外的这个context就是绕口,没法翻译成中文,可

以简单地理解为运行环境也可以)

(1)句柄(Handle) 

从实质上来说,每一个句柄就是一个指向v8对象的指针,所有的v8对象必须使用句

柄来操作。这是先决条件,如果一个v8对象没有任何句柄与之相关联,那么这个对

象很快就会被垃圾回收器给干掉(句柄跟对象的引用计数有很大关系)。


(2)作用域(Scope) 

从 概念上理解,作用域可以看成是一个句柄的容器,在一个作用域里面可以有很多

很多个句柄(也就是说,一个scope里面可以包含很多很多个v8引擎相关的对 象

),句柄指向的对象是可以一个一个单独地释放的,但是很多时候(尤其是写一些

“有用”的程序的时候),一个一个地释放句柄过于繁琐,取而代之的是,可以 释

放一个scope,那么包含在这个scope中的所有handle就都会被统一释放掉了。

(3)上下文环境(Context) 

从 概念上讲,这个上下文环境(以前看一些中文的技术资料总出现这个词,天知

道当初作者们是如何想的,不过这事情就是约定俗成,大家都这么叫也就习惯了)

也可 以理解为运行环境。这就好比是linux的环境变量,在执行javascript脚本

的时候,总要有一些环境变量或者全局函数(这些就不用偶解释了吧?! 就是那些直

接拿过来就用,根本不需要关心这些变量或者函数在什么地方定义的)。偶们如

果要在自己的c++代码中嵌入v8引擎,自然希望提供一些c++编写 的函数或者模

块,让其他用户从脚本中直接调用,这样才会体现出javascript的强大。从概念

上来讲,java开发中,有些功能jvm不提供,大家可 以用c/c++编写jni模块,通

过java调用c/c++模块来实现那些功能。而类比到javascript引擎,偶们可以用

c++编写全局函数,让其 他人通过javascript进行调用,这样,就无形中扩展了

javascript的功能。java+jni的开发模式与 javascript+c++module是一样的

思路,只是java更加复杂,系统库更加丰富;而javascript相对java来说比较

简单,系统 库比较少。仅此而已。(from:http://wuhuizhong.iteye.com/

blog/1107633)

3,使用v8.NET(以V8.Net-Console测试为例)

解压文件包


如下图,引用V8.NET和.V8.Net.SharedTypes两个库



打开测试项目V8.NET-Console

在Program.cs文件中看到v8.net的代码使用方法

实例化引擎


注册在V8引擎中使用的数据类型(不是必须注册,但是如果不注册则不能用一些高级功能,例如不能访问对象内部的一些属性,但是注册之后就可以访问)



设置全局句柄,绑定.net对象。这样就可以在JavaScript脚本中调用绑定的.net对象





在JavaScript定义函数


在.net中调用JavaScript中的对象


OK,希望本文对您有所帮助。如果不懂的可以直接加我qq:361058057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值