1. 程式人生 > >使用JavaScript編寫iOS應用業務邏輯

使用JavaScript編寫iOS應用業務邏輯

JSAUIKitCocoa使你可以使用JavaScript編寫對效能要求不高但可能變動性很大的iOS應用的業務邏輯部分,View元件、需要多執行緒支援的Model等則直接使用原生物件。

編寫方式與React Native相似,但你幾乎無需學習除了JavaScript語法以外的任何新知識,因為你是直接使用UILabel、UIView這些類,或你自己編寫的擴充套件類,而無需再瞭解一套全新的React框架體系。

JSAUIKitCocoa推薦使用MyLayout進行佈局,JSAUIKitCocoaDemo也將使用MyLayout進行頁面佈局。當然,你也可以自由選擇你熟悉的佈局框架。配合JSAUIKitCocoa提供的JSAUIViewController,你可以像使用WEBView一樣從Server或本地載入顯示內容以及互動邏輯:

建立JSAUIViewController:

//獲得JSAUIViewController使用的JSA4Cocoa上下文環境
JSA4Cocoa* jsa = [JSAUIViewController sharedJSA];
//啟動JSA4Cocoa引擎,該程式碼全域性只應呼叫一次,建議放在AppDelegate中進行初始化
[jsa startEngine];

//建立一個JSAUIViewController
JSAUIViewController *mainVC = [[JSAUIViewController alloc] initWithJSClass:@"app.Main" Arguments:@[]];

這裡建立的JSAUIViewController就是UIViewController的子類,與你通常編寫一個頁面所建立的UIViewController子類是一樣的,唯一區別是,原來你寫在子類中的程式碼,現在可以使用JavaScript編寫。

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:構造器方法,可按上述方式進行元件的初始化。當然,你也可以編寫符合自己習慣的構造器方法。

JSAUIKitCocoa展示了一種使用JSAppSugar編寫原生應用業務邏輯的方式,你也可以使用JSAppSugar創造你自己的混合程式設計方式。

JSAppSugar同時提供可執行在Android的JSA4Java,你也可以使用類似的方式編寫Android應用的業務邏輯,如果你同時為iOS和Android定義了相同的JS物件對映,則你就可以實現同時執行在多端的JavaScript業務邏輯程式碼。

關注JSAppSugar瞭解更多