我们向 Progress 的 NativeScript 团队成员征求了一些可能有用的或鲜为人知的技巧和窍门,这些技巧和窍门可能会帮助 NativeScript 开发者在开发下一个伟大的应用程序的道路上。以下是他们的分享!
Alex Vakrilov |
这并不是 NativeScript 特有的功能,但在调试路由问题和找出路由配置问题时非常有用!
它通过在调用 NativeScriptRouterModule.forRoot
时传递一个选项来实现
NativeScriptRouterModule.forRoot(routes, { enableTracing: true})
结果是在您的控制台中记录所有路由事件(包括解析路由的错误)
JS: Router Event: NavigationStart
JS: NavigationStart(id: 2, url: '/home')
JS: Router Event: RoutesRecognized
JS: RoutesRecognized(id: 2, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )
JS: Router Event: GuardsCheckStart
JS: GuardsCheckStart(id: 2, url: '/home', urlAfterRedirects: '/home', state: Route(url:'', path:'') { Route(url:'home', path:'home') } )
我们在 tns-core-modules
和 ns-angular
中使用了许多内置跟踪类别进行日志记录。启用它们可以提供有关框架在特定区域调试问题时内部发生的事情的见解。以下是启用的一些有用类别
import * as trace from "tns-core-modules/trace";
// Logs info on measure and layout passes
trace.addCategories(trace.categories.Layout);
// Logs info when modifying the view tree (adding views, removing views, etc.)
trace.addCategories(trace.categories.ViewHierarchy);
// Logs info related to navigation
trace.addCategories(trace.categories.Navigation);
// Don't forget to enable tracing
trace.enable();
trace.categories.XXX
中还有更多核心模块类别。对于 Angular 项目,nativescript-angular/trace
模块中还有 Angular 特定的跟踪类别。
tns-core-modules/profiling
的性能分析模块中包含许多有趣的实用程序。一些有用的方法
time()
:在 NativeScript 中获取时间的最快(也是最准确)方法start("my-timer-name")
/ stop("my-timer-name")
:stop 方法将返回一个 TimerInfo
对象,其中包含一些有用的信息,例如执行了多少次启动/停止迭代、总时间、上次测量的时间等。@profile
装饰器:您可以将其添加到方法上,它将自动跟踪执行通过该方法的次数以及花费的总时间。您可以使用 dumpProfiles()
转储由 profile 装饰器收集的所有信息。不过,您应该调用 enable()
才能使用装饰器。
Todd Anglin |
node_modules
、platform
和 hooks
文件夹,然后重新构建/重新运行您的应用程序,以“干净”地启动*.xcworkspace
而不是 *.xcodeproj
文件platforms > [ios/android] > build
中找到 iOS 和 Android 的原始构建资产
TJ VanToll |
利用 tns resources generate
命令提供的省时功能!您可以 从一个主源创建您的图标和启动画面,只需几分钟。
正如你们许多人已经知道的那样,NativeScript 市场中的示例应用程序 是一个随时可用的“可复制粘贴”代码的源泉。此外,它们已经在 NativeScript Playground 中运行,因此非常易于试验。
正在开发一个新的 NativeScript 插件? 使用插件种子! 它消除了很多痛苦。
在 Android 上处理大型图像? 这可能是一场斗争,因此请查看我们有关 Android 图像优化 的文档(以及我们有关 webpack 和 提高启动时间 的其他性能优化文章)。
向您的应用程序添加新的字体可能是改善外观和感觉的最简单方法。 查看这篇文章,了解如何正确识别您的自定义字体,以便您的 NativeScript 应用程序可以正确使用它们。
Sebastian Witalec |
generate
命令与 nativescript/schematics
(有关 Web/移动代码共享与 Angular 的更多信息)。
Rob Lauer |
小心将 <ScrollView>
或 <ListView>
嵌套在 <StackLayout>
中。由于 Android 上的渲染问题(我并不完全了解 😅),您通常应该使用 <GridLayout>
代替,如下所示
<GridLayout rows="auto, *">
<ListView row="1" ...
不要重新发明轮子!如果您尝试与设备 API 或第三方 SDK 交互,那么很可能其他人已经解决了这个问题。 查看 NativeScript 市场,获取全面的插件列表,为您节省大量时间。
使用 npm install -g nativescript
升级到 NativeScript CLI 的最新版本后,请确保您还使用 这些详细说明 更新您的应用程序。
哦,对了,说到更新,如果您使用的是 Visual Studio Code,请安装 Version Lens 扩展!此扩展使用代码透镜显示 package.json
中每个包的最新版本(并提供一键更新功能)
请注意,一旦您在
package.json
中更新了包版本,您需要在重新构建应用程序之前删除platforms
和node_modules
目录。
Todor Totev |
只有一个 😀:您可以使用 NativeScript Playground 添加没有原生组件的 NativeScript 插件。它隐藏在“添加 NPM 包”菜单中
您是否有自己的技巧或窍门要分享?在评论中分享您的想法吧!