[周小鱼]& iOS——为你的项目引入超轻量级JS引擎JSPatch
-
JSEngine.m
JSEngine.h
JSPatch.js
使用
非常简单,在AppDelegate的didFinishLaunchingWithOptions方法中加入JSPatch的初始化代码
[JPEngine startEngine];
|
上面这些代码,是小鱼在本次演示中使用的,sourcePath指向的是项目中的sample.js(sample.js现在是空的)
除了上面我写的这种本地加载JS,更常用的是通过向服务器请求JS,JSPatch提供了非常全面的加载方法:
[JPEngine startEngine];
|
OK,继续,我们来写一段错误代码
- ViewController的Storyboard中拖入了一个UILabel,并且拖好线
-
给ViewController加一个数组
-
- (NSMutableArray *)array {
if (_array == nil) {
_array = [NSMutableArray array];
}
return _array;
} -
在viewDidLoad中这样写
- (void)viewDidLoad {
|
显然会出错是不是?毕竟数组中只有3个元素
OK,运行,然后程序崩了
我们尝试用JSPatch解决
现在我们原来空空如也的sample.js派上了用场,在里面写入
// sample.js
|
再运行,你会发现不会出错,页面中的Label显示了”first”字样
以上的JS起到的作用是:重新编写『ViewController』中的『test』方法
是不是非常简单,关于语法,在这里查看JSPatch的wiki,不要害怕,都是非常易懂的,就算你没有学JS,妹子我觉得这是见过最良心的文档了,简单易读还是中文,bang帅哥棒棒的
小结
想想一下,上面的问题,如果这时候你的项目已经上线了,所有用户浏览这个页面时都会崩溃,必须及时修复。Don’t worry,如果你已经预先在AppDelegate的didFinishLaunchingWithOptions中做了网络加载,你只需要去修改那段js,所有线上的用户问题都会被及时解决
3. 源码
老规矩,这里奉上上面demo的源码
有什么问题都可以在博文后面留言,或者微博上私信我,或者邮件我 coderfish@163.com。
博主是 iOS 妹子一枚。
希望大家一起进步。
我的微博:小鱼周凌宇
坚持原创技术分享,支持萌妹子,您的支持将鼓励我继续创作!
-
-
手动导入
简历JSPatch/目录,拖入: -
// 现在的属性有:
@property (weak, nonatomic) IBOutlet UILabel *lblText;
@property (nonatomic, strong) NSMutableArray *array; -
给数组加个懒加载
T


浙公网安备 33010602011771号