首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何写一个 JS 运行时

    JS 引擎 写一个 JS 运行时,首先就必须需要一个 JS 引擎来处理 JS,大部分的 JS 运行时都是基于 V8的,当然你也可以使用其他的 JS 引擎。...所以首先需要选择一个 JS 引擎,然后下载代码,编译成功。有了 JS 引擎,就可以通过它提供的一些 API 实现一个可以执行 JS 代码的软件。...:unique_ptr platform = platform::NewDefaultPlatform(); v8::V8::InitializePlatform(platform.get...但是幸运的是,JS 引擎提供了拓展能力,我们可以使用 JS 引擎提供的 API 拓展网络、文件这些功能。在之前代码的基础上增加以下代码。..., nullptr, global); Context::Scope context_scope(context); // 所有拓展功能挂到这个对象中 LocalObject> No = Object

    1.8K30

    聊一下Node.js中NAPI的napi_value

    接着执行了 *result = napi_value变量; result类型是napi_value*,即二级指针,这样调用方就拿到了v8创建的对象。我们看一下具体的调用代码。...napi_value ret; napi_create_array(env, &ret); 执行以上代码后,ret就保存了v8对象的信息。那么这样做有什么好处呢?我们继续看一下对ret的使用。...{ v8::Localv8::Context> context = env->context(); v8::Localv8::Object> obj; // 校验并转成对应的v8类型...class Local { T* val_;} 即把v的值复制到了val_中,后续就可以按照v8的模式去使用了。 分析到这里,就结束了,那么napi_value到底有什么用呢?...v8::Localv8::Object> v8value = v8::Object::New(...); v8::Localv8::Array> v8value = v8::Array::New(.

    1.5K60

    使用Node.js Addon实现类继承

    本文介绍一下如何实现这种映射(不确定是否能满足这位同学的需求)。 下面我们看一下Addon的实现。会涉及到V8的一些使用,可以先阅读该文章《一段js理解nodejs中js调用c++/c的过程》。...; using v8::Isolate; using v8::Local; using v8::Object; using v8::String; using v8::Value; using v8::...v8::Int32; using v8::NewStringType; void Initialize( LocalObject> exports, LocalValue> module,...第二种就是两个存在继承关系的C++类,同样先通过V8的API实现两个继承的类导出到JS使用,因为JS层使用的只是壳子,具体执行到C++代码的时候,我们再体现出这种继承关系。...上面代码新建了一个新的函数模板并且设置了一系列的原型属性,那么模板t就继承了这些属性。我们看看Node.js里怎么使用的。

    2.1K30

    通过Handle理解V8的代码设计(基于V0.1.5)

    假设我们有以下代码 HandleScope scope; Local hello = String::New(参数); 这个看起来很简单的过程,其实在V8的内部实现起来比较复杂。...而是V8内部使用的Handle(代码在handles.h),我们看看实现。...接着构造一个Local对象。ToLocal是V8代码的分水岭,我们看看Local的定义。...后记:从上面的分析中我们不仅看到了Handle的实现原理,也看到了V8代码的一些设计细节,V8在内部实现了一类对象,然后把内部对象转成外部使用的类型后返回给用户,当用户使用该返回的对象时,V8又会转成内部的对象再操作这个对象...外部类的定义在v8.h中,这是我们使用V8时需要了解的最好文档。内部类的实现根据版本不同而不同,比如早期版本都是在object.h里实现的,而实现内外部对象转换的方法在api.c中定义。 ?

    65520

    Node.js编写组件的几种方式

    简介 首先介绍使用v8 API跟使用swig框架的不同: (1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点是需要熟悉v8 API,编写起来比较麻烦,是js强相关的,不容易支持其它脚本语言...++组件,不需要了解各种脚本语言的组件开发框架,缺点是不支持javascript的回调,文档和demo代码不完善,使用者不多。...v8::FunctionCallbackInfo; using v8::Isolate; using v8::Local; using v8::Object; using v8::String; using...异步组件的实现只需要关注libuv的uv_queue_work API,组件实现时,除了主体代码hello.cpp和组件使用者代码,其它部分都与上面三的demo一致。...::FunctionCallbackInfo; using v8::Function; using v8::Isolate; using v8::Local; using v8::Object; using

    1.4K41
    领券