1-初识 JSBinding

首先我们先认识JSBinding

JSBinding本身并非Hybrid,本质上也并无任何联系。

JSBinding实际是JS 与 Native 间的一座桥梁,通过JS引擎进行交互。

Hybrid实际是Web 与 Native间的一座桥梁,还是通过Web中,实际应用中仍然是WebView。

 

原生语言特点 :1、高性能   2、更底层 更强大   3、平台特性

动态脚本语言 :1、简单易用 2、免编译  3、热部署

那么在iOS7中两者可以很好的兼容。

JavaScriptCore

1、引入头文件JavaScriptCore.h

2、JSContext  (JS上下文或一个运行环境)

3、JSValue

4、JSExport

下面是一些简单的JSBinding代码

//JS上下文
    JSContext *context = [[JSContext alloc] init];
    
    //异常处理器
    context.exceptionHandler = ^(JSContext *ctx,JSValue *exception)
    {
        NSLog(@"%@",exception);
    };
    
    NSString *strScript;
    JSValue *result;
    
    //运算JS
    strScript = @"1+2+3.2";
    result = [context evaluateScript:strScript];
    NSLog(@" %@ = %f",strScript,[result toDouble]);
    
    //定义JS变量,获取JS变量
    strScript = @"var globalVar = 2*3+1;";
    result = [context evaluateScript:strScript];
    NSLog(@" var globalVar= %@",context[@"globalVar"]);
    
    //定义JS函数
    strScript = @"function sum(a,b){return a+b};";
    [context evaluateScript:strScript];
    
    JSValue *sum = context[@"sum"];
    result = [sum callWithArguments:@[@1,@2]];
    NSLog(@"sum = %f",[result toDouble]);
    
    //定义变量
    JSValue *foo = [JSValue valueWithDouble:123.123 inContext:context];
    context[@"foo"] = foo;
    [context evaluateScript:@"foo++;"];
    NSLog(@"foo = %f",[context[@"foo"] toDouble]);
    
    //联合GCD
    context[@"sum"] = ^(int a,int b)
    {
        return a+b;
    };
    result = [context evaluateScript:@"sum(1,2);"];
    NSLog(@"sum1 = %f",[result toDouble]);

  

转载于:https://www.cnblogs.com/zcw-ios/articles/4256186.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值