YJS语法 ======= -------------- 概述 ---- YJS源文件包括任意数量的\ **import声明**\ 和一个\ **contract定义**\ 。 -------------- import声明 ---------- 与JavaScript(ES6)类似,YJS也支持import声明语句,在全局层面,开发者可以使用如下import声明来导入其他文件。 :: import "filename"; 内容 ~~~~ import声明语句将包含在“filename”文件中的所有全局符号(单元)导入到当前文件,且全局范围内有效。 路径 ~~~~ **filename**\ 通常用\ **/**\ 做目录分隔符来表示文件的路径,例如,从同一目录下导入\ **x.yjs**\ 文件到当前文件,可以使用\ **import “x.yjs”**\ 语句;从其他目录下导入\ **x.yjs**\ 使用\ **import “lib/x.yjs”**\ 语句。 -------------- Contract定义 ------------ 示例 ~~~~ 以下是一个合约示例,用于JSON处理,此YJS源文件以合约名称命名。 :: contract ScoreAdder{ //arg = {"action":"main","arg":"[{\"score\":20},{\"score\":20}]"} export function main(arg){ //JSON is a build-in object. var point = JSON.parse(arg); var s = 0; print(point[0].score); print(point.length); for (var i=0;i`__\ 中渲染。 首先在合约中import以下模块。 .. code:: javascript module Viewable{ export function loadResource(arg){ return Global.Resources.loadAsString(arg); } export function needRender(arg){ return true; } } 同时,import以后,定义一个getMainFrame方法,以便数瑞客户端识别主页: .. code:: javascript export function getMainFrame(arg){ return "/html/main.html"; } 该方法的返回结果为一个资源文件的路径。 示例的资源文件“/html/main.html”如下: .. code:: html
Data from contract:
示例的资源文件“/html/hello.js”如下: .. code:: javascript var queryDataFromContract = function(){ //第一个参数为函数名,第二个为参数,第三个参数为回调。 var data = executeCurrentContract("query","abc",function(argg){ $("#resultText")[0].innerHTML = argg.result; }); } 参考示例: YJS-Python ~~~~~~~~~~ TODO