NativeScript 7は、es2017+をターゲットにすることで、最新のJavaScript標準に対応する。さらに、アプリ構成を1つのファイルに統合することで簡素化し、iOSアプリのJavaScriptCoreをV8に置き換える。
ES2017を採用すると、NativeScriptはデフォルトでそれを出力ターゲットとして使用するようになるが、その主な目的は、??
Nullish coalescing operatorとoptional chainingなどの言語にもたらされた改善を利用することである。
実際、TypeScriptでサポートされているES2017の機能を以前のNativeScriptバージョンで使用することはすでに可能だったが、コードがES5に変換され、パフォーマンスが低下する可能性があり、コードのステップ実行が困難になった。たとえば、それは「ネイティブ」になったasync/await
サポートとES2017のclass
ディレクティブの場合である。
ES2017への切り替えは、JavaScriptCoreランタイムを置換してiOSプラットフォームにもV8エンジンを採用することで可能になった。NativeScriptチームは1つのランタイムのみを維持する必要があるため、この決定により、両方のプラットフォームでのJavaScriptサポートがレベルアップし、メンテナンスコストが削減される。非互換性やその他の問題が発生した場合は、tns-ios
を使用することでNativeScriptにJavaScriptCoreの使用を強制できる。
NativeScript 7によってもたらされるもう1つの改善点は、構成ファイルの統合である。これまで、アプリの構成は3つの異なるファイルで指定されていた。ルートpackage.json
、nsconfig.json
、およびランタイムフラグを指定するためにソースディレクトリに隠された別のpackage.json
だ。今、新しいnativescript.config.ts
またはnativescript.config.js
を使用して、アプリ全体の構成を指定できる。新しいファイルにより、コードを使用してアプリの構成を指定できるため、TypeScriptを使用する場合、nativescript.config.ts
ファイルにはプロジェクトのタイプセーフな定義が実際に含まれる。単純なnativescript.config.ts
の例:
import { NativeScriptConfig } from '@nativescript/core';
export default {
id: 'com.company.app',
main: 'app.js',
appResourcesPath: 'App_Resources',
webpackConfigPath: 'webpack.config.js',
ios: {
discardUncaughtJsExceptions: true
},
android: {
discardUncaughtJsExceptions: true,
v8Flags: '--nolazy --expose_gc',
"markingMode": "none",
"suppressCallJSMethodExceptions": false
}
} as NativeScriptConfig;
ツールの面では、NativeScript CLIはns
に名前が変更された。しかし、必要に応じてnsc
または古いtns
を使用することもできる。新しいCLIには、プロジェクトのファイルをクリーンアップするために使用できる新しいns clean
コマンドが導入されている。
既存のプロジェクトの移行に関する最後の注意。NativeScript CLIは、その目的でns migrate
コマンドを提供するが、使用する前に、すべてのプラグインがNativeScript 7と互換性があることを確認する必要である。プラグインを開発している場合は、[調整] (https://nativescript.org/blog/nativescript-7-for-plugin-authors/0) のリストを確認してください。関心を払うことが必要だ。