1. 程式人生 > >移動開發之混合程式設計第一步:為JavaScript定義Class-based程式設計風格

移動開發之混合程式設計第一步:為JavaScript定義Class-based程式設計風格

無論是Java,還是Objective-C,他們都是Class-based程式設計風格,而JavaScript採用的是Prototype-based程式設計風格。為了讓JavaScript程式能夠更好的融入原生程式,也讓使用Java/Objective-C的開發者能夠沿用原有程式的架構方式,那麼就需要為JavaScript語言定義一種Class-based程式設計風格。

於是JSAppSugar便誕生了,JSAppSugar為JavaScript定義了一套Class-based程式設計風格,這樣應用便可以沿用原有程式架構,只是將部分類從原生實現變為JavaScript實現,從而實現在不改變原有程式架構的前提下,為移動應用開發提供了一種可以實施的分層方式:將特定功能模組用JavaScript開發,實現可多端執行的程式模組。

這種靈活的混合程式設計分層設計,可以讓架構設計更為自由和靈活的在執行效率(使用原生語言編寫類實現)和開發效率(使用JavaScript編寫類實現)之間做出平衡。

JSAppSugar定義的Class-based JavaScript程式設計風格的詳細文件:JSAppSugar-類體系

JavaScript類定義例子:

$class("my.sample.Person",{
  name : "Unknown",
  #init : function(name){
    if(name) this.name = name;
  },
  eat : function(food){
    return this.name + " is eating "+food;
  }
});

在JavaScript程式碼使用:

var bob = new my.sample.Person("Bob");
var doing = bob.eat("Salad"); //函式將返回字串 Bob is eating Salad

在iOS:Objective-C程式碼中使用:

//初始化JSAppSugar引擎
JSA4Cocoa* jsa = [[JSA4Cocoa alloc]init];
[jsa startEngine];

//使用糖方法建立類物件
id<JSAObject> bob = [jsa newClass:@"my.sample.Person" Arguments:@[@"Bob"]];

//使用糖方法呼叫物件方法
NSString* doing = [bob invokeMethod:@"eat" Arguments:@[@"Salad"]];

在Android:Java程式碼中的使用:

//初始化JSAppSugar引擎
JSA4Java jsa = new JSA4Java();
jsa.startEngine();

//使用糖方法建立類物件
JSAObject bob = jsa.newClass("my.sample.Person","bob");

//使用糖方法呼叫物件方法
String doing = (String)jsObject.invokeMethod("eat","Salad");

在JavaScript程式碼中使用原生類、類繼承等更多特性請檢視:JSAppSugar-類體系

關注JSAppSugar瞭解更多