##什么是 hybrid
广义上指:非 Native技术与 Native 技术的混合
###WebView: web 技术与 Native 技术混合
- 纯内容展示
```oc
// 1.创建webview,并设置大小
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 64, ScreenWidth, ScreenHeight - 64)];
// 2.创建请求
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.jianshu.com/p/449f35cd935c"]];
// 3.加载网页
[webView loadRequest:request];
// 最后将webView添加到界面
[self.view addSubview:webView];
```
- 与 Native 交互
- 优势:热更新、可以结合 Web 与 Native两者优势
- 劣势:web 技术与 Native 技术在体验上比较难保持一致
- Native 扩展
- WKWebView: 使用 WKUserScript 以及 Script Messages 进行双向交互。
- ~~UIWebView~~ :
- 在 Native 方,使用 stringByEvaluationgJavaScriptFromString 调用 JavaScript 代码。
- 在 JavaScript方,需要使用 Hack URL 的技术才能调用到 Native方的代码。
##数据驱动
- 传统的服务器下发 JSON数据,客户端展示内容。
- 可进一步扩展为使用 JSON数据来驱动程序行为。
最大劣势:难以表达复杂的程序逻辑
##脚本驱动 (ios8)
###使用 JavaScript 来驱动应用程序行为
- React Native
- JSPatch
- 微信小程序