我正在编写一个Node应用程序(在TS中),需要与一些本机库连接.
我有一个库(用C语言编写) - 让我们认为它是一个黑盒子 - 而且我正在使用NAN编写一个包装器.库本机接口可以简化为以下功能:
typedef void (*got_message_reply_cb)(context ctx, void * priv, struct X * the_reply);
context lib_connect();
bool lib_send_message(context ctx, message msg, got_message_reply_cb callback, void * priv);
Run Code Online (Sandbox Code Playgroud)
我相信这很容易理解.
所以,我试图将这个黑盒子本机库包装成:
class TheLibrary : public Nan::ObjectWrap {
Initialize(v8::Handle<v8::Object> target);
SendMessage(...)
}
Run Code Online (Sandbox Code Playgroud)
然后到javascript对象,如:
class TheLibrary {
SendMessage(message: whatever, callback: (reply) => void); // or return promise, doesn't matter
}
Run Code Online (Sandbox Code Playgroud)
如何在NAN C++模块中实际处理回调?我需要以某种方式传递回调(可能由Local<Function>- 表示,如果我理解正确,范围有限)作为指向函数的指针,然后将其检索回来.怎么做?谢谢你的回复.
我正在挖掘AMP html,这条线立刻引起了我的注意.
AMP HTML文档必须:
包含顶级
<html ?>标记(<html amp>也被接受).
所以我的第一个问题是 - <html ?>有效的HTML?它的意思是,它似乎有用 - 但我看起来很奇怪.有人能指出unicode作为HTML属性的具体规则吗?
我的另一个问题是,它用于什么.在文档中指出,这是有效的AMP文档所必需的.
但丢弃它不会导致AMP验证错误.AMP本身的JS来源似乎也并不关心它.
这真的是爬行器和机器人将文档标记为AMP的标志吗?
提前致谢.:)