Capacitor 1.0 发布:让混合应用程序开发变得更容易

阅读数:7404 2019 年 5 月 31 日 08:00

Capacitor 1.0发布:让混合应用程序开发变得更容易

Ionic 的新原生 API 容器 Capacitor 发布了 1.0 版本。这个容器旨在使用 JavaScript 创建 iOS、Android 和 Web 应用程序,为构建可访问原生特性的跨平台应用程序带来了新的视角。

Cordova 类似,Capacitor 的目标是在不需要编写平台特定代码的情况下访问底层操作系统的原生特性,这使得在 iOS、Android 和 Electron 应用程序中使用相同代码访问设备摄像头成为可能。Capacitor 采用了一种完全不同的方法将 HTML/CSS/JavaScript 应用程序运行在原生 Web 视图中,并通过统一的接口将原生功能暴露给应用程序。

与 Cordova 的一个主要区别是 Capacitor 要求开发人员处理原生应用程序项目,包括运行 Ionic 应用程序的 Web View,将其作为 Capacitor 应用程序的一个组件,而不是反过来。这种方法使得集成外部 SDK(在 iOS 上可能需要调整 AppDelegate)变得更加容易,并且无需编写插件就可以原生地功能集成到 Ionic 应用程序中,就像 Cordova 一样。

Capacitor 的另一个好处是它不再需要监听 deviceready 事件。Capacitor 会在加载 Ionic 应用程序之前加载所有插件,所以它们是立即可用的。此外,Capacitor 插件公开了可调用的方法,所以开发者不需要使用 exec。例如,下面是一个非常简单的 iOS Capacitor 插件,一个扩展了 CAPPlugin 的 Swift 类:

复制代码
import Capacitor
@objc(MyPlugin)
public class MyPlugin: CAPPlugin {
@objc func echo(_ call: CAPPluginCall) {
let value = call.getString("value") ?? ""
call.resolve([
"value": value
])
}
}

要使插件的 echo 方法直接对 Capacitor Web 运行时可用,需要在.m 文件中注册它:

复制代码
#
import
<Capacitor/Capacitor.h>
CAP_PLUGIN(MyPlugin, "MyPlugin",
CAP_PLUGIN_METHOD(echo, CAPPluginReturnPromise);
)

Capacitor 使用 npm 进行依赖关系管理,包括插件和平台。因此,如果你需要使用插件,只需像往常一样运行 npm install。而在使用 Cordova 时,你需要使用 cordova plugin add…命令。作为一个额外的简化,Capacitor 要求将 iOS 插件的原生组件打包成 CocoaPod,对于 Android 来说可以作为一个独立的库使用。

最后,Ionic 官方称,Capacitor 最终将取代 Cordova,成为 Ionic 应用程序容器化的官方方式,这样它们就可以跨平台访问原生特性,但在未来几年内,Cordvoa 仍然会有人提供支持。

查看英文原文 Capacitor 1.0 Aims to Improve the Creation of Hybrid, Web, and Native Apps

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论