文档章节

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

neal01
 neal01
发布于 11/22 00:11
字数 789
阅读 25
收藏 0

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了解更多

© 著作权归作者所有

共有 人打赏支持
neal01
粉丝 0
博文 6
码字总数 6015
作品 1
东城
私信 提问
基于原生的移动跨平台研究和实践

基于原生主要是针对基于webview+h5比较来说的,基于H5的我不想再讨论了,我想尝试的是从UI到功能都是原生,而不是用H5模拟的所谓原生体验。 背景 我们从开发角度来考虑,但凡想从事长远的开发...

voxer
2017/03/26
109
0
iOS与JS交互之UIWebView-JSExport协议

级别:★★☆☆☆ 标签:「iOS与JS交互」「UIWebView与JS交互」「JSExport」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),JS指前端(不...

QiShare
08/31
0
0
iOS与JS交互之UIWebView-JavaScriptCore框架

级别:★★☆☆☆ 标签:「iOS与JS交互」「UIWebView与JS交互」「JavaScriptCore」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),JS指前...

QiShare
08/30
0
0
iOS与JS交互之UIWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「UIWebView与JS交互」「UIWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
08/28
0
0
iOS与JS交互之WKWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「WKWebView与JS交互」「WKWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
20分钟前
4
0
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部