在pebble js文件中包含一个外部javascript库

Including an external javascript library in pebble js file?

本文关键字:外部 javascript 包含一 pebble js 文件      更新时间:2023-09-26

是否有任何方法可以在我的卵石代码中包含外部JS库?通常在网页上,我会在header标签中这样做:

<script type='text/javascript' src='https://cdn.firebase.com/js/client/1.0.11/firebase.js'></script>

但在鹅卵石,我无法做到这一点,因为我只使用JS。那么,如何为JavaScript文件包含外部库呢?

目前,您不能包含外部JS文件。

如果你正在使用CloudPebble,那么唯一的方法就是复制并粘贴JS库文件的内容到你的JS文件中。

如果你在做本地开发,你可以修改wscript文件,在构建时将多个JS文件合并为一个。

我认为Pebble.js与PebbleKit JS (v3.8.1)之间存在一些混淆。Pebble.js是一个刚刚起步的SDK,程序员最终将能够编写纯JavaScript。它还在制作中,所以缺少一些功能,比如画线或获取屏幕尺寸的能力。repo是C和JS源代码的混合,你可以添加C代码来增加缺失的功能,但其他所有的代码都在src/js/app.jssrc/js/app/中。不管怎样,Pebble.js支持require

我没有使用CloudPebble,但我得到的印象是它要么支持Pebble.js(因此require),要么正在计划。我认为所有这些SDK样板代码都应该隐藏起来。

PebbleKit JS不支持require开箱即用。我做了一个演示,将require支持从Pebble.js移植到PKJS。更改摘要如下:

  1. 移动项目的src/js/pebble-js-app.jssrc/js/app/index.js。从src/js/app/index.js删除所有准备好的事件监听器。index.js将当ready事件被触发时被加载。
  2. 从Pebble.js中添加src/js/loader.js
  3. 增加src/js/main.js,在ready事件时调用require('src/js/app')
  4. 用以下内容更新wscript三角洲。
  5. 添加新模块时,将它们放在src/js/app/require('./name')下即可。

我已经试着在演示的自述文件中涵盖了所有这些。

顺便说一句,这是所有不同sdk的官方分类,但它有点令人困惑。

我不确定自上述答案以来是否有变化,但看起来实际上有一种方法可以在保持整洁的同时包含额外的资源。在卵石js页面上,有以下部分,其中包含有关该主题的一些信息。


全局名称空间 - 要求(路径)

加载另一个JavaScript文件,允许您编写多文件项目。包加载松散地遵循CommonJS格式。Path是指向依赖项的路径。


你可以使用下面的代码在你的pebble项目中"要求"一个JS库。这应该可以在Cloud Pebble和本地开发中使用。

// src/js/dependency.js
var dep = require('dependency');

你可以这样使用:

dep.myFunction(); // run a function from the dependency
dep.myVar = 2; // access or change variables

更新:在我自己对此进行了一番深入研究之后,我已经成功地让CloudPebble使用了这个功能。它有点复杂,但遵循ECMAScript 6标准。下面我发布了一个简单的例子,让事情设置。另外,我建议参考一下卵石js中的代码,以获得更好的复杂设置参考。

myApp.js

var resource = require('myExtraFile');        // require additional library
console.log(resource.value);                  // logs 42
resource.functionA();                         // logs "This is working now"

myExtraFile.js

var myExtraFile = {                           // create a JSON object to export
  "value" : 42,                               // variable
  functionA : function() {                    // function
    console.log("This is working now!");
  }
};
this.exports = myExtraFile;                   // export this function for
                                              // later use