使用JavaScript编写iOS应用业务逻辑

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业务逻辑代码。函数

关注JSAppSugar了解更多

相关文章
相关标签/搜索