NativeScript 1.1 版本现已发布,您可以立即开始使用!如果您要从 1.0 版本更新 - 请阅读 更新说明。在此版本中,我们为 NativeScript 框架提供了三个新的基本功能 - 支持 npm 模块,支持原生 iOS 库以及 NativeScript 插件的初始版本。我们还对核心框架进行了一些增强和错误修复 - NativeScript 现在更加稳定和快速。
从今天开始,我们还将发起一项活动,帮助本地用户组见面并讨论 NativeScript。它被称为“NativeScript 之夏”,如果您正在运营用户组,请务必与我们联系,了解我们如何为您提供帮助。有关该活动的更多信息,请访问 此处。请帮助我们宣传 NativeScript!
在详细介绍之前,以下是我们今天发布内容的摘要
新的 Repeater UI 组件,
您可以在 GitHub 存储库中阅读 完整的发布说明。
让我们从更多了解我们发布的显著功能开始。
欢迎将整个 iOS 原生生态系统引入您的 NativeScript 应用程序!
在我们的 1.0 版本中,我们提供了对原生 Android 库的支持,您可以使用任何 Android 库在您的 NativeScript 项目中。这非常重要,因为您可以重用 Android 库的整个生态系统 在您的 NativeScript 应用程序中。通过利用它们,您可以开箱即用地支持几乎任何移动场景。
iOS 的情况也是如此 - 存在大量针对您可以想象的任何移动场景的已实现库。大多数这些库都以纯静态库或框架或 cocoapods 的形式分发。您可以使用所有 Google SDK、Facebook SDK、Twitter 以及 数千个库,这些库提供丰富的 UI 可视化或应用程序辅助功能。
此功能的最佳之处在于,当您添加原生库时,其 API 会自动作为 JavaScript API 提供,您无需处理原生代码的工作方式 - 只需使用您的 JavaScript 技能来利用原生 API 和可视化的强大功能。
下图显示了在 NativeScript iOS 应用程序中运行的 Google Maps 静态库。
您可以在以下位置查看此应用程序的工作原理以及如何自行添加 Google Maps SDK - https://github.com/NativeScript/sample-iOS-StaticLibs
以下是处理 Google Maps iOS SDK 的实际代码
function
createMapView(args) {
console.log(
'Providing GoogleMap API key...'
);
GMSServices.provideAPIKey(
APIKEY
);
console.log(
"Creating map view..."
);
camera = GMSCameraPosition.cameraWithLatitudeLongitudeZoom(-33.86, 151.20, 6);
mapView = GMSMapView.mapWithFrameCamera(CGRectZero, camera);
console.log(
"Setting a marker..."
);
marker = GMSMarker.alloc().init();
// 请注意,内联函数(例如 CLLocationCoordinate2DMake)不会导出。
marker.position = { latitude: -33.86, longitude: 151.20 }
marker.title =
"Sydney"
;
marker.snippet =
"Australia"
;
marker.map = mapView;
console.log(
"Displaying map..."
);
args.view = mapView;
}
要添加 iOS 库,您需要执行以下步骤
打开 Xcode 项目并将库或框架添加为引用,
如果您添加的框架或库没有资源,则无需执行任何其他操作,
如果库有依赖项或资源,请按照特定于静态库的步骤将其添加到 Xcode 项目中,
运行 CLI 的“prepare”命令,
开始使用您的 JavaScript 技能进行编码!
在下一个版本中,您将能够跳过所有这些手动步骤,并将库添加为 NativeScript 插件,CLI 工具将执行原生项目修改所需的步骤。这将我们引向我们今天发布的下一个基本功能 - 对 NativeScript 插件的初始支持。
作为应用程序开发人员,通过使用 NativeScript 插件,您将能够使用针对特定场景的跨平台代码。作为作者,通过使用插件,您将能够以干净和有组织的方式分发您的代码。
今天,我们发布了对仅限 JavaScript 插件的支持,包括支持在特定于平台的配置文件中声明性地描述更改。您可以打包您的 JavaScript 模块并将其作为 NativeScript 插件分发,设置模块依赖项以及模块所需的任何原生操作系统配置。您可以创建针对 iOS 和 Android 的插件,并使用通用的跨平台 API。在我们开始开发这项工作时,我们进行了大量的验证和社区参与,我相信您会很高兴地知道 NativeScript 插件实际上是一个 npm 模块,可以轻松地托管在 npmjs.org 上,并与任何 npm 模块一样安装其依赖项!您可以在 GitHub 问题 中阅读更多有关设计决策的信息。
如果您有兴趣了解更多关于插件的信息,请 阅读文档文章,我们将在其中描述体系结构和插件用法的详细信息。
我们对插件支持的最终目标不仅允许使用 JavaScript,还允许包含原生库。此功能将在我们下一个版本(7 月份的 1.2 版本)中推出。如果您决定创建自己的插件,请告知我们,我们将确保将其包含在 NativeScript 插件市场中,网址为 http://plugins.telerik.com。我们将于 8 月初正式推出此网站,因此现在是开始编写插件并将其与插件市场上的其他人共享的最佳时机。
说到插件,我们不能不提及社区迄今为止所做的出色工作。请查看 此社区驱动的存储库中当前可用的模块列表。我将要求每个模块开发者将其模块转换为插件,并与我们联系,以便我们将它们列为 NativeScript 的官方支持插件。
如上所述,NativeScript 插件实际上是一个 npm 模块,我们的工具“知道”如何处理并在应用程序内部集成。 npm 是打包和管理 JavaScript 模块的事实标准,我很高兴地宣布,从今天开始,我们还将发布对 npm 模块的支持。您会发现,在 NativeScript 中使用 npm 模块与通常使用节点模块的方式没有区别。这里没有什么特别的。现在,您可以打开 NativeScript 应用程序文件夹并键入
npm install <JSModule>
require(<JSModule>);
npm install moment
然后在您的页面中
var
moment = require(“moment”);
就是这样。现在,您就可以在 JavaScript 代码中调用 "moment.js" 库 API 并编写如下内容:
moment().format(
"dddd, MMMM Do YYYY, h:mm:ss a"
);
// 这将显示 "Wednesday, June 17th 2015, 3:25:50 pm"
这些是我们 5 月份 1.0 版本发布后对 NativeScript 进行的一些最值得注意的补充。如果您有任何反馈,请在下面的评论部分中写下。