コアコンセプト / NativeScriptアプリでのCommonJSモジュール

NativeScriptアプリでCommonJSモジュールを使用する

NativeScriptモジュールとNativeScriptアプリのコードは、CommonJS仕様に準拠する必要があります。 NativeScriptでは、ファイルとモジュールは1対1で対応しています。 カスタムまたは組み込みのNativeScriptモジュールの機能を呼び出すには、requireステートメントで参照する必要があります。 requireステートメントを宣言するとき、NativeScriptランタイムはパフォーマンス上の理由からプラットフォームに依存した方法でJavaScriptファイルを検索および評価することに注意してください。

以下は、ビルドおよびパッケージ化されたNativeScriptアプリの典型的なアーキテクチャです。 この記事のすべてのrequireステートメントの例は、このサンプルアーキテクチャを参照しています。

/private/var/.../Applications/HelloWorldApp.app └── app ├── app.js ├── main-page.js ├── package.json ├── user-module │ ├── helper.js │ └── index.js └── tns_modules └── camera ├── camera.js └── package.json

ロケーションルール

CommonJSモジュールをロードするには、いくつかの方法があります。

絶対ファイルの読み込み

/で始まるパスは、デバイスファイルシステムに対する絶対パスとして扱われます。

require('/private/.../HelloWorldApp.app/app/app.js');

これは、/private/.../HelloWorldApp.app/app/app.jsに解決されます。

アプリバンドルからファイルをロードする

~で始まるパスは、アプリバンドルに関連して解決されます。

require('~/user-module/index.js')

これは、/private/.../HelloWorldApp.app/app/user-module/index.jsに解決されます。

NativeScriptモジュールの読み込み

特別な記号なしで始まるパスは、tns_modulesフォルダーに関連して解決されます。

require('camera/camera.js');

これは、/private/.../HelloWorldApp.app/app/tns_modules/camera/camera.jsに解決されます。

NativeScriptとノードのプラグインの使用方法の詳細についてはPlugins.mdを参照してください。

モジュールを相対的にロードする

...で始まるパスは、呼び出しモジュールに関連して解決されます。

// In `app/user-module/index.js`:
require('./helper.js');

これは、/private/.../HelloWorldApp.app/app/user-module/helper.jsに解決されます。

JSONファイルを要求する

NativeScript 1.5.1以降では、.jsファイルと同じ方法で.jsonファイルを要求(require)できます。 オブジェクトはキャッシュされ、無期限に存続するため、一度だけ解析されて多くのモジュールから使用される、静的なコンフィグファイルに役立つ場合があります。 (一時的に利用する場合は)代わりにファイルシステムモジュールを使用してJSONファイルを読み取ることを検討してください。

利用可能なモジュール変数

各モジュールで、module変数は現在のモジュールを表すオブジェクトへの参照です。 moduleオブジェクトは、それを検査するための便利ないくつかの特性を有しています。 次の例は /private/.../HelloWorldApp.app/app/main.js モジュール用です。

グローバル要求機能

global.require関数は、評価モジュールのコンテキスト外で呼び出すことができるため、App Inspectorのコンテキストで使用でき便利です。 これはappフォルダーに関連して解決します。

global.require('./user-module');

これは、/private/.../HelloWorldApp.app/app/user-module/index.jsに解決されます。

AndroidおよびiOS固有のモジュール

モジュールには、Androidでは*.android.js、iOSでは*.ios.jsファイル拡張子を付けることができます。 このようにして、異なるプラットフォーム固有の実装で共通のインターフェースを公開できます。 プロジェクトの準備中に、プラットフォームに対応するモジュールの名前が* .jsに変更され、実行時に使用されます。

キャッシュ

モジュールはキャッシュされるため、ファイルを複数回必要とする場合でも1回だけ評価されます。 これは、循環依存関係を解決する際の無限再帰の回避にも役立ちます。

入門

コアコンセプト

ユーザーインターフェース

ツール

ハードウェアアクセス

プラグインの開発

リリース

アプリテンプレート

パフォーマンスの最適化

フレームワークモジュール

ガイド

サポートを受ける

トラブルシューティング

Siedkick