小编jro*_*roy的帖子

了解节点插件 API (N-API) HandleScope

我很难理解如何正确使用HandleScopeEscapeableHandleScope。例如,从这个节点示例

MyObject::MyObject(const Napi::CallbackInfo& info) : Napi::ObjectWrap<MyObject>(info) {
  Napi::Env env = info.Env();
  Napi::HandleScope scope(env);

  this->val_ = info[0].As<Napi::Number>().DoubleValue();
};
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下我们需要创建一个新的 HandleScope?从另一个例子来看:

Napi::Object CreateObject(const Napi::CallbackInfo& info) {
  Napi::Env env = info.Env();
  Napi::Object obj = Napi::Object::New(env);
  obj.Set(Napi::String::New(env, "msg"), info[0].ToString());

  return obj;
}
Run Code Online (Sandbox Code Playgroud)

为什么这里不需要呢?

另外,我没有找到任何使用 EscapeableHandleScope 的示例,什么时候需要这个?

v8 nan node.js node.js-addon

5
推荐指数
1
解决办法
2936
查看次数

HTML5视频:停滞事件

我正在使用Google Chrome上的HTML5视频标签编写视频播放器:我需要显示一些视频(1),然后将它们从DOM文档中删除以显示其他视频,然后再创建一些指向与( 1)。

我注意到有时有时视频在第二次加载时没有显示,而是触发了“停滞”事件……我应该怎么做才能处理此事件并能够显示视频?如果我保留对第一个视频标签的引用,然后在以后重用它,则可以使用,但是保留对每个视频标签的引用可能会非常消耗内存!

javascript google-chrome html5-video

3
推荐指数
1
解决办法
2727
查看次数

组件未使用 Vue 兼容渲染

我正在尝试使用迁移构建将我的 Vue 应用程序从 Vue 2 切换到 Vue 3,以便逐步执行此操作。我已经遵循了第 1 点到第 3 点,但是当启动我的应用程序时,我的根组件似乎未正确呈现。

这是初始化应用程序的文件:

import Vue, {configureCompat} from "vue";

configureCompat({
    "MODE": 2
});

new Vue({
    "template": "<h1>Hello world!</h1>",
    mounted() {
        console.log("Mounted");
    }
}).$mount("#app");
Run Code Online (Sandbox Code Playgroud)

以及输出 HTML:

<body>
    <div id="app" data-v-app>
        <!---->
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我可以Mounted在控制台中看到日志,如果我进行更改,import Vue from "vue";它就import Vue from "@vue/compat"可以工作,但据我了解,这应该是不需要的,因为我在 Webpack 配置中配置了一个别名来vue指向@vue/compat

process.env.BABEL_ENV = "renderer";

const path = require("path");
const {VueLoaderPlugin} = require("vue-loader");
const HtmlWebpackPlugin = require("html-webpack-plugin");

const {dependencies} = …
Run Code Online (Sandbox Code Playgroud)

webpack vue.js vuejs2 vuejs3

3
推荐指数
1
解决办法
4313
查看次数