返回博客首页
← 所有文章

如何使用任何 Cordova 插件与 NativeScript

2018年5月24日 — 作者:Rob Lauer

更新:您现在可以在 GitHub 上找到此插件

许多 NativeScript 开发人员以前是混合应用开发人员。我们成长于 Web,认为 PhoneGap/Cordova 是将我们的集体脚趾浸入移动领域的最佳方式,并在 NativeScript 出现时看到了光明 🌞。

这也意味着我们正在维护旧版混合应用,或者希望开始迁移路径 从 Cordova 到 NativeScript

提示:如果您是视频学习者,请查看 NativeScripting 上的这个免费课程 将 Cordova 应用程序升级到 NativeScript 

幸运的是,此迁移通常比我们预期的要容易得多。为什么?因为 NativeScript 已经支持相同的语言(JavaScript、TypeScript)、框架(AngularVue.js)和样式功能(CSSSassLESS),我们已经在使用了。

当迁移 UI 层和我们之前必须用来访问本地设备功能的自定义 Cordova 插件时,会遇到更繁重的任务 🏋️。

但当然,我们为您提供了解决方案 😀!有大量的 文档教程 可供您学习如何创建真正的原生跨平台 UI 层。还有一个广泛的 插件市场 供您发现等效的插件。

如果您找不到合适的 Cordova 插件,或者 NativeScript 版本的 API 对您来说差别太大,该怎么办?

Cordova-NativeScript

引入 cordova-nativescript-plugin,这是一个即将发布的插件,它允许您在 NativeScript 应用程序中使用任何现有的 Cordova 插件。该插件目前处于 Alpha 阶段(目前仅支持 Android,iOS 正在开发中),将成为那些希望从 Cordova 迁移的用户之间的另一座桥梁。

cordova-nativescript

让我们来看一个使用此插件和 Cordova 图片选择器 插件以及一个简单的 NativeScript 应用程序的真实场景。

Android 概念验证

您可以参考 GitHub 上的此存储库

同样,截至本文撰写之时,此插件仍处于早期 Alpha 阶段。是的,iOS 开发正在进行中!

插件 本身包含用于运行 Cordova 插件的全部本地文件以及 before-prepare 钩子。此钩子负责查找 NativeScript 项目中的所有 Cordova 插件,并将其转换为 NativeScript 插件

演示应用程序 在其 package.json 文件中同时引用了 cordova-nativescript-plugincordova-plugin-telerik-imagepicker Cordova 插件

"dependencies": {
    "cordova-nativescript-plugin": "file:..\\cordova-nativescript-plugin",
    "cordova-plugin-telerik-imagepicker": "2.1.10",
    ...

在完成此简短的设置后,我们需要执行一些操作才能在 NativeScript 视图中实际运行 Image Picker 插件

1) 引用 cordova-nativescript-plugin

require("cordova-nativescript-plugin");

2) 引用 cordova-plugin-telerik-imagepicker Cordova 插件

const imagePicker = cordova.require("com.synconset.imagepicker.ImagePicker").imagePicker;

提示:cordova.require 内部的字符串是插件的 ID - com.synconset.ImagePicker - 以及插件 plugin.xml 文件 中导出的 js 模块的名称。

3) 使用以下命令执行 ImagePicker 插件

imagePicker.getPictures(successCallback, failCallback);

您可以通过在终端中运行这些命令来自己尝试此确切的示例

git clone https://github.com/NativeScript/nativescript-cordova-imagepicker-showcase
cd nativescript-cordova-imagepicker-showcase
cd demo
tns run android

接下来是什么?

我是否提到过这是插件的早期 Alpha 版本!?🤔

显然,对 iOS 的支持至关重要,这将使 NativeScript 的“跨平台”部分重新发挥作用。我们还希望让您更容易require Cordova 插件。但请继续关注,因为我们将分享更多关于 Cordova 开发人员这一激动人心的新机会的信息!