0

处理一个使用 ProtoBuff 获取其内容的项目。通过在 HTML 中加载 JavaScript 使其工作一次。现在重构使用 requirejs 来加载脚本。但是当我尝试使用脚本时,它会给出一个错误,告诉我脚本没有加载。

  • Require.js 在 index.html 中加载
  • Bower 用于管理依赖项。

我很确定我在这里遗漏了一件(简单的)事情,希望有人能提供帮助。

requirejs.config({
    long : "long",
    ByteBuffer : "ByteBuffer",
    ProtoBuf : "ProtoBuf"
});

requirejs([ "long", "ByteBuffer", "ProtoBuf" ], 
    function( long, ByteBuffer, ProtoBuf ) {
}); ​

long.js、ByteBuffer.js 和 ProtoBuf.js 文件都与调用它的 App.js 在同一个映射中。

*虽然这个关于 requirejs 和 ByteBuffer的问题看起来很有希望,但我想我在这里遗漏了一些东西。

这确实有效,这些文件中的函数可以在其余范围内访问:

requirejs([ "otherPage", "differentPage" ], 
    function( util ) {
});
4

1 回答 1

1

你需要确保你已经正确连接了 requirejs 并且你已经加载了相关的 proto 库。

您可以使用 bower 来管理依赖项。安装bower

bower install long byteBuffer protobuf requirejs-text requirejs-proto

最终的代码看起来像这样:

require.config({
    paths: {
        'Long': '../../bower_components/long/dist/Long',
        'ByteBuffer': '../../bower_components/byteBuffer/dist/ByteBufferAB',
        'ProtoBuf': '../../bower_components/protobuf/dist/ProtoBuf',
        'text': '../../bower_components/requirejs-text/text',
        'proto': '../../bower_components/requirejs-proto/proto'
    },
    proto: {
        ext: 'proto',
        convertFieldsToCamelCase: false,
        populateAccessors: true
    }
});

require(['proto!test'], function(builder) {
    var pack = builder.build('pack');
    var Message1 = builder.build('pack.Message1');
});

require(['proto!test::pack.Message1', 'proto!test::pack.Message2'], function(Message1, Message2) {
    ...
});

来自https://www.npmjs.com/package/requirejs-proto的一些代码

于 2016-10-11T20:51:31.540 回答