首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QML使用Node库

用QML使用Node库
EN

Stack Overflow用户
提问于 2016-07-12 22:49:44
回答 1查看 2.6K关注 0票数 3

我想使用为Node.js设计和打包的JS库,并将其与QML (特别是ProtoBuf库)一起使用。ProtoBuf库依赖于ByteBuffer库

我编辑了bytebuffer.jsprotobuf.js以添加.pragma library作为第一行。然后,在我的.qml中我有:

代码语言:javascript
复制
import "qrc:/scripts/bytebuffer.js" as BB
import "qrc:/scripts/protobuf.js"   as PB

Window {
  Component.onCompleted: {
    console.log('PB',  PB);
    console.log('func',PB.loadProtoFile);
    for (var k in PB) console.log(k,typeof PB[k],PB[k]);
    console.log('done!')
  }
}

我看到的输出是:

代码语言:javascript
复制
qml: PB [object Object]
qml: func undefined
qml: done!

因此,QML在某种意义上正在加载ProtoBuf库(我已经将调试消息放入该库中,并确认通用装载机正在运行并能够找到ByteBuffer),但它不是带有我期望的方法的对象,比如loadProtoFile()

如何访问库公开的~真实ProtoBuf对象?或者我应该如何修改库以正确地使用QML?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-12 22:57:17

我现在明白了QML命名空间库的方式,这个语句

代码语言:javascript
复制
import "qrc:/scripts/protobuf.js" as PB

使PB成为运行库脚本的全局范围。因此,库在此代码中公开的“真实”ProtoBuf:

代码语言:javascript
复制
(global["dcodeIO"] = global["dcodeIO"] || {})["ProtoBuf"] = factory(global["dcodeIO"]["ByteBuffer"]);

可以在QML中找到以下内容:

代码语言:javascript
复制
var ProtoBuf = PB.dcodeIO.ProtoBuf;
console.log( ProtoBuf.loadProtoFile );
//-> function() { [code] }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38340062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档