ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

NativeScript Core 演进全解析:从 CHANGELOG 看 @nativescript/core 的能力增长与迁移要点

2026/10/1 16:49:37 拓冰建站 浏览量
NativeScript Core 演进全解析:从 CHANGELOG 看 @nativescript/core 的能力增长与迁移要点 【免费下载链接】NativeScript⚡ Write Native with TypeScript ✨ Best of all worlds (TypeScript, Swift, Objective C, Kotlin, Java, Dart). Use what you love ❤️ Angular, React, Solid, Svelte, Vue with: iOS (UIKit, SwiftUI), Android (View, Jetpack Compose), Flutter and you name it compatible.项目地址https://gitcode.com/gh_mirrors/na/NativeScript点击查看免费下载本文以packages/core/CHANGELOG.md为骨架系统梳理 nativescript/core 从 0.10 到 9.1.2 十余年间的核心能力演进重点剖析 9.x 引入的跨平台 NativeWindow 窗口抽象、CSS 引擎增强与破坏性变更迁移路径帮助开发者在升级版本时快速定位影响面并掌握新 API 的实战用法。版本总览一条贯穿十年的能力增长线packages/core/CHANGELOG.md完整记录了 nativescript/core以及历史形态的 tns-core-modules自 2015 年 0.10.0 以来的全部发布历史截至本文写作时最新版本为9.1.22026-09-14。把各个大版本的关键主题串联起来可以看到一条清晰的能力演进脉络版本段核心主题9.xNativeWindow 跨平台窗口抽象、vite 构建链、iOS 26 / Android API 3637、CSS 连续圆角与 flexbox gutters8.xCSS 引擎全面升级css-tree parser、variables、calc、media queries、Node-API、事件系统收敛、WeakRef 标准化7.xes2017 目标、nativescript.config、ObservableArray 迭代器、RootLayout、TypeScript 46.xScoped Packages、暗黑模式system appearance、CSS variables/calc、HMR 能力成型5.xSafe Area、AndroidX、bundle workflow、Flexbox、CSS3 动画与过渡4.xAndroid Support Library 迁移、可复用视图、box-shadow/text-shadow、无障碍a11y一等公民3.x 及更早导航事件体系、手势系统、模态弹窗、ActionBar 与 CSS 支持的早期定型下文将按近期版本的实操影响和历史里程碑两个维度展开其中 9.x 与 8.x 内容来自 CHANGELOG 中信息量最大的段落值得每一位升级者仔细阅读。9.1.0 的重磅跨平台 NativeWindow 窗口抽象9.1.0 引入了 CHANGELOG 标注为 ⚠️ 的cross-platform NativeWindowscenes、multi-windows、iOS 改进 API、Android 同步支持这是近年对应用生命周期模型影响最大的一次重构。它的核心思路是把 iOS 的 UIScene / UIWindow 与 Android 的 Activity / Window 统一抽象为NativeWindow让窗口成为生命周期与内容承载的一等对象。在仓库中该能力位于 packages/core/native-window 模块由三个文件组成index.ts 统一导出接口、基类与平台实现native-window-interfaces.ts 定义事件常量与事件数据类型window-base.ts 提供跨平台窗口基类native-window.ios.ts 与 native-window.android.ts 分别承载 iOS/Android 实现。从 native-window-interfaces.ts 可以清楚看到这套抽象的事件模型NativeWindowEvents定义了窗口级事件activate/deactivate、background/foreground、close、attached/detached、displayed、contentLoaded、orientationChanged、systemAppearanceChanged、layoutDirectionChanged并分别保留了 iOS 场景事件sceneWillConnect、sceneDidActivate等与 Android Activity 事件activityCreated、activityResumed、activityBackPressed等。WindowEvents则在 Application 层暴露windowOpen、windowClose、primaryWindowChanged三个聚合事件。破坏性变更与迁移清单务必逐条核对CHANGELOG 在 9.1.0 段落给出了非常具体的迁移指引升级时请按以下清单核对代码iOS 访问方式NativeWindow.iosWindow更名为NativeWindow.ios其window属性更名为uiWindow。迁移为win.ios?.uiWindow/win.ios?.scene。Android 访问方式NativeWindow.androidWindow更名为NativeWindow.android。迁移为win.android?.activity。事件载荷语义SceneEventData.window现在就是NativeWindow原生UIWindow移到了SceneEventData.uiWindow。任何window载荷键一律表示NativeWindow。窗口枚举getWindows()现在按角色过滤默认只返回applicationembedded两类要枚举所有注册表面需显式调用getWindows(all)。退出事件语义Android 上exit事件只在最后一个窗口结束时触发此前任何 activity 结束都会触发iOS 的exit语义不变进程终止。生命周期归属场景模式下 Application 的suspend/resume反映整个应用状态追踪单个窗口请使用窗口的background/foreground事件。detached 代替销毁场景断开与 activity 重建现在触发detached而非销毁窗口窗口保持注册状态、监听器存活同一实例会在再次attached时复用。关闭后不可复用窗口在close之后会清空全部事件监听器不要复用已关闭的窗口实例。CSS 根类变化CSSUtils.getRootViewCssClasses()不再包含 orientation、appearance、direction 类——这些已变为按窗口维度请改从窗口实例读取。已弃用与已转正 API已弃用仍可用launch事件改用readysetWindowContentResolver()、shouldDelayLaunchEvent现在是 no-op、Application.orientation()/systemAppearance()/layoutDirection()委托给primaryWindow、枚举类 gettergetAllWindows、getAllScenes、getWindowScenes、getPrimaryWindow、getPrimaryScene。转正Un-deprecatedApplication上的activity*/scene*桥接 API 成为永久聚合 API——它们对每个窗口都会触发通过args.window区分具体窗口。窗口内容的供给通过WindowContentResolver完成见 native-window-interfaces.ts它接收一个WindowContentRequest含isPrimary标志、平台数据载荷可返回View、NavigationEntry或模块名来设置窗口内容返回null表示由调用方异步接管返回undefined则回退到应用主入口。9.x 错误处理策略uncaughtErrorPolicy 取代 discardUncaughtJsExceptions9.1.0 将uncaughtErrorPolicy类型化并正式弃用discardUncaughtJsExceptions关联 #11356。在仓库的 config/config.interface.ts 中可以看到当前配置形态uncaughtErrorPolicy?: UncaughtErrorPolicy; // 旧字段仅当取值为 true 时等价于顶层 uncaughtErrorPolicy 的抑制行为 discardUncaughtJsExceptions?: boolean;注意 CHANGELOG 与类型注释中给出的语义细节旧的discardUncaughtJsExceptions: true会抑制uncaughtErrorPolicy: throw的崩溃行为而false并不会恢复旧有的未捕获即崩溃行为——需要显式设置uncaughtErrorPolicy: throw。升级时建议把所有discardUncaughtJsExceptions配置替换为等价的uncaughtErrorPolicy取值。9.x CSS 能力扩展连续圆角、尺寸上限与 flexbox 间距9.1.0 之后的若干版本集中补齐了一批贴近 Web CSS 的布局与样式能力且都有源码直接支撑corner-shapeiOS 连续圆角corner-shapeCSS 属性用于 iOS 的 continuous corners。实现上ui/styling/background-common.ts 定义了cornerShape字段默认roundui/styling/background.ios.ts 在原生侧将其映射为kCACornerCurveContinuoussquircle或kCACornerCurveCircular。style-properties.spec.ts 中有对应测试验证cornerShape默认值与squircle取值在 Style/Background 上的联动。max-width / max-height9.1.0 起核心支持max-width与max-heightCSS 属性类型为PercentLengthType见 ui/styling/style/index.ts。flexbox gutters9.1.0 起支持 flexbox 的row-gap/column-gap见 ui/styling/style/index.ts。方向属性9.0.0 支持了 style 的directionltr/rtl属性layoutDirectionChanged事件随之成为窗口级事件。多阴影 box-shadow9.0.0 起支持多个 box-shadow 叠加此前 8.6.1/8.6.2 已修复none处理与解析边界。9.x 构建与平台vite 纯 JS 支持、runtimePackageName 与平台 SDK 更新vite 支持纯 JavaScript9.1.2关联 commit d0f3e7654vite 工作流在原有 TypeScript 基础上补齐了纯 JS 项目的支持相关信息同步记录在 packages/vite/CHANGELOG.md。9.0.0 时 nativescript/vite 即作为正式特性进入核心发布关联 #10948。runtimePackageName 配置项9.1.0向IConfigPlatform增加了runtimePackageName字段见 config/config.interface.ts用于在配置层面指定运行时包名。平台类型与 SDK9.1.1 带来 iOS 26.5 类型与 Android API Level 36 37 类型9.0.0 引入 iOS 26 类型含 ActionBar、Switch 改进以及.ns-{platform}-{sdkVersion}的 CSS 根作用域类Android 侧 9.0.0 支持 API Level 35 的OnBackPressed处理与 edge-to-edge 工具enableEdgeToEdge、setStatusBarColor、setNavigationBarColor、setDarkModeHandler。UI 组件9.0.0 起 TabView 在 iOS 18 使用 UITab 并支持 search roleiOS SplitView 成为正式组件9.0.0 引入、9.0.9 完善布局与生命周期ListView 获得 sticky headers、sectioned data 与自动隐藏搜索栏TextField 支持decimal键盘类型与 CSSwhite-space/text-overflow。Shared Element Transitions8.5.0 起支持共享元素转场9.1.0 持续改进 iOS 交互式 morph 关闭cornerRadius/alpha 修复。8.xCSS 引擎与事件系统的里程碑8.x 是 CSS 能力爆发期这部分演进直接奠定了 9.x 的样式基础解析器更替8.8.x 期间 css-tree 成为默认解析器6.4.0 引入可选支持8.8.0 引入 css-what 解析器并支持 Level 4 选择器:not()、:is()、:where()与~兄弟选择器同时带来CSS media query 支持此前 8.9.x 又在 ruleset 中缓存 media query 数组以提升性能。值与函数8.9.x 支持 CSS wide keywords、color-mix()、calc()中的 infinity 值8.x 期间 CSS variables 与嵌套calc()得到完整实现8.2.5 起支持移除指定 CSS 变量。框架集成8.9.0 支持 Tailwind v4并为style属性模块做了重组。事件系统收敛8.8.0 移除复数事件/手势名称与 GestureTypes 枚举作为 eventName 的用法事件回调参数强制使用类型化的事件数据对象如OrientationChangedEventData统一once监听器语义8.5.0 起WeakRef在 Android/iOS 统一使用deref。运行时与平台8.9.0 支持 Node-API 引擎与 winter-tc8.8.0 起可将核心嵌入既有原生宿主工程embed9.0.0 前的 8.5.x 还引入了 Swift Package Manager 配置支持与多 target 的 Swift 包支持。更早版本的关键断点升级路径参考7.x7.0.0 起以 es2017 为编译目标引入nativescript.config配置文件7.3.0 移动BottomNavigation/Tabs至 nativescript-community破坏性变更AndroidTransitionType并入Transition类静态成员7.1.0 增加 Frame 的navigatingTo/navigatedTo事件与queueMacroTask。6.x6.2.0 引入 scoped packages、系统外观暗黑模式属性/事件与 CSS 类、HSL/HSLA 支持6.3.0 起支持requestAnimationFrame、模态框系统 CSS 类与可选 css-tree parser6.5.x 完善手势、Span 垂直对齐与文件系统复制 API。5.x5.4.0 增加 elevation 阴影、activityNewIntent事件5.0.0 起核心框架迁移至 Android Support LibraryActivity 继承AppCompatActivity、Fragment 继承support.v4.app.FragmentiOS 原生视图改为加入可视树时才创建请在loaded事件中访问nativeViewContainerView 系组件默认溢出安全区。4.x4.0.0 移除Layout基类改用LayoutBase、application.start()迁移到run()、showModal收敛为 options 对象签名4.2.0 引入 Flexible Error/Exception 处理4.x 还带来 box-shadow/text-shadow、RootLayout 动态分层 API 与一等公民的无障碍支持。更早1.x-3.x确立导航事件四件套navigatingTo/navigatedTo/navigatingFrom/navigatedFrom、手势系统、模态链、ActionBar 结构以及 CSS 状态选择器、Flexbox 布局、CSS3 动画与过渡等基础能力1.0.0 时Image.url→src、local-settings→application-settings等命名收敛完成。如何核对与跟进升级影响升级到 9.x 时最权威的核对对象就是本 CHANGELOG 本身packages/core/CHANGELOG.md建议按以下路径操作通读你当前版本到目标版本之间所有标注 ⚠️ 或 BREAKING CHANGES 的段落逐条对照上文列出的迁移清单尤其 NativeWindow 相关九条。对每个被改动 API直接到 packages/core 对应模块核对类型定义例如窗口事件模型看 native-window/native-window-interfaces.ts配置项看 config/config.interface.ts样式属性看 ui/styling/style/index.ts。需要确认行为细节时仓库中带.spec.ts的文件如 native-window.ios.spec.ts、native-window.android.spec.ts、style-properties.spec.ts提供了可验证的行为契约。关注每个版本的 Thank You 段落的维护者动态以及### Performance段落——9.1.0 对 CSS matching/cascade/application 的整体重构关联 #11361和 media query 数组缓存#11309提示升级后若涉及大量动态样式可留意渲染性能的正面或负面变化。小结从packages/core/CHANGELOG.md可以完整读出 nativescript/core 的十年演进它把 CSS 能力从基础属性一路推进到 media query、color-mix、连续圆角与 flexbox gutters把窗口模型从单窗口起步推进到 iOS/Android 统一的NativeWindow抽象把构建链从 webpack 演进到 vite 并支持纯 JS 工程同时通过大版本的破坏性变更清单为升级者留下了清晰可执行的迁移路径。对计划升级到 9.x 的团队NativeWindow 迁移清单与uncaughtErrorPolicy配置替换是两项最优先核对的事项。赞分享【免费下载链接】NativeScript⚡ Write Native with TypeScript ✨ Best of all worlds (TypeScript, Swift, Objective C, Kotlin, Java, Dart). Use what you love ❤️ Angular, React, Solid, Svelte, Vue with: iOS (UIKit, SwiftUI), Android (View, Jetpack Compose), Flutter and you name it compatible.项目地址https://gitcode.com/gh_mirrors/na/NativeScript点击查看免费下载相关推荐MathPHP 版本演进全解析从 Dolibarr 内置数学库 CHANGELOG 看 v2.x 能力与迁移要点MathPHP 版本演进全解析从 Dolibarr 内置数学库 CHANGELOG 看 v2.x 能力与迁移要点 MathPHP 是一个用纯 PHP 编写、无企业应用后端SDWebImage 5.x 演进全解析从 CHANGELOG 看异步图片加载框架的能力版图与迁移要点SDWebImage 5.x 演进全解析从 CHANGELOG 看异步图片加载框架的能力版图与迁移要点 本文以 SDWebImage 官方 CHANGELOG移动开发图像处理puppeteer-core CHANGELOG 全解读从 25.x 主线看五年版本演进与迁移实践puppeteer core CHANGELOG 全解读从 25.x 主线看五年版本演进与迁移实践 packages/puppeteer core/CHAN浏览器控制测试网页爬虫开发工具上一篇CANN ops-nn 算子库 aclnnForeachDivListInplace 接口深度解析张量列表原地逐元素除法实战指南下一篇deepTools核心工具bamCoverage详解高效生成标准化覆盖度文件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考