如何在 app/controller 中要求 widget/lib?

How to require a widget/lib in app/controller?

是否可以从 appController 访问 widget/lib 文件夹下的库文件?

我试过了

require('./widgets/com.myWidget/lib/myLib')

require('widgets/com.myWidget/lib/myLib')

所有这些抛出错误:

[ERROR] :  Script Error Couldn't find module: ./widgets/com.myWidget/lib/myLib for architecture: i386

如何在 controllers/myCtrlr.js 中要求 com.myWidget/lib/myLib.js

或者所有的库代码都应该只存在于 app/lib 下吗?

app
|--assets
|--controllers
    |--myCtrlr.js
|--lib
|--models
|--styles
|--views
|--widgets
   |--com.myWidget
       |--assets
       |--controllers
       |--lib
           |--myLib.js
       |--models
       |--styles
       |--views

您无法从您的应用程序直接访问小部件库。当您使用 Widget.createWidget(widget_name, [controller_name], [params]) 创建小部件实例时,它会加载 widget.js 控制器。

我认为访问您的库的最佳方式是将其添加到 app/lib 因为您可以从您的小部件中使用 require(mylib)

访问您的库

如果你真的想从你的小部件访问你的库,你可以创建一个函数来像这样导出它:

在widget.js中:

$.loadLib = function(){
 return require(WPATH(myLib));
};

在index.js中:

var w = Widget.createWidget('com.myWidget');
var myLib = w.loadLib(); //contains myLib located in com.myWidget/lib/