JSAUIKitCocoa使你可使用JavaScript编写对性能要求不高但可能变更性很大的iOS应用的业务逻辑部分,View组件、须要多线程支持的Model等则直接使用原生对象。javascript
编写方式与React Native类似,但你几乎无需学习除了JavaScript语法之外的任何新知识,由于你是直接使用UILabel、UIView这些类,或你本身编写的扩展类,而无需再了解一套全新的React框架体系。java
JSAUIKitCocoa推荐使用MyLayout进行布局,JSAUIKitCocoaDemo也将使用MyLayout进行页面布局。固然,你也能够自由选择你熟悉的布局框架。配合JSAUIKitCocoa提供的JSAUIViewController,你能够像使用WEBView同样从Server或本地加载显示内容以及交互逻辑:git
建立JSAUIViewController:github
//得到JSAUIViewController使用的JSA4Cocoa上下文环境 JSA4Cocoa* jsa = [JSAUIViewController sharedJSA]; //启动JSA4Cocoa引擎,该代码全局只应调用一次,建议放在AppDelegate中进行初始化 [jsa startEngine]; //建立一个JSAUIViewController JSAUIViewController *mainVC = [[JSAUIViewController alloc] initWithJSClass:@"app.Main" Arguments:@[]];
这里建立的JSAUIViewController就是UIViewController的子类,与你一般编写一个页面所建立的UIViewController子类是同样的,惟一区别是,原来你写在子类中的代码,如今可使用JavaScript编写。objective-c
app.Main的类定义以下:编程
//引入JS父类 $import("jsa.cocoa.JSAUIViewController"); $class("app.Main",{ $extends : "jsa.cocoa.JSAUIViewController", //与RN的render函数相似,这里返回一个组装好的UIView对象,该view将被赋值到UIViewController.view属性 getView : function(viewController){ //使用JSA语法糖函数$new建立MyRelativeLayout对象做为根视图以实现自动布局 this.view = $new("MyRelativeLayout","initWithJSAParam:",{ subviews:[ { //建立UILabel视图对象 view:$new("UILabel","initWithJSAParam:",{ textAlignment:"center", text:"HelloWorld", sizeToFit:true, }), topPos :{value : "safeAreaMargin",offset : 20}, centerXPos : 0, } ] }); return this.view; } });
上面的代码将在距顶部(从safeAreaMargin算起)20个点,居中的位置,显示文字:HelloWorld多线程
固然,你也能够像写原生代码同样先建立类对象,而后再进行属性设置,但考虑到JS与原生系统之间的函数调用时间相对较长,所以建议使用构造器函数一次性赋值,同时JSAUIKitCocoa对一些经常使用UI组件编写了initWithJSAParam:构造器方法,可按上述方式进行组件的初始化。固然,你也能够编写符合本身习惯的构造器方法。app
JSAUIKitCocoa展现了一种使用JSAppSugar编写原生应用业务逻辑的方式,你也可使用JSAppSugar创造你本身的混合编程方式。框架
JSAppSugar同时提供可运行在Android的JSA4Java,你也可使用相似的方式编写Android应用的业务逻辑,若是你同时为iOS和Android定义了相同的JS对象映射,则你就能够实现同时运行在多端的JavaScript业务逻辑代码。函数