在开始之前,需要知道的是LuCI2提供了一些存取UCI系统的一些帮助。如果写一个简单的管理/etc/config/
下配置文件不需要完全知道ubus
的调用方法,则可以跳过该部分。
构建一些更复杂的LuCI2视图前最好先弄明白使用到的ubus
调用。完整的对象和方法列表可以通过运行ubus -v list
命令来得到。
下面这个简单的例子调用了log
对象和write
方法,它需要提供一个event
参数传递进去。使用ubus
命令行国内根据是,需要如下所示命令:
ubus call log write '{ "event": "Foo" }'
LuCI2为ubus
通讯提供了一个叫做的工具,它可以如魔法般的帮助JavaScript访问
ubus
方法。注意,定义声明方法的时候方法并不被执行,参数也未传递,这是为以后调用准备的一个方法。下面这个示例的方法调用了log
对象的write
方法:
var writeToLog = ({ object: 'log', method: 'write', params: [ 'event' ] })
定义了一次这个方法后,可以在任意时间通过如下示例简单调用:
writeToLog('Foo');
在上面的例子中执行结果被忽略了,如果视图需要处理ubus
返回的数据时不能忽略执行结果。下面例子将通过访问system
对象的info
方法来描述返回结果的处理。在命令行下通过以下命令访问:
# ubus call system info { "uptime": 123, "localtime": 1234567890, "load": [ 1, 2, 3 ], "memory": { "total": 67108864, "free": 33554432, "shared": 0, "buffered": 16777216 }, "swap": { "total": 0, "free": 0 } }
在LuCI2(JavaScript)定义上面的访问如下所示:
var readSystemInfo = ({ object: 'system', method: 'info', expect: { memory: { } } /* 可选, 只提取结果的一部分memory */ })
通过简单的调用.then
方法可访问结果数据
readSystemInfo().then(function(memory) { (memory); });