# NAPI - [Introduction](#section11660541593) - [Directory Structure](#section161941989596) - [When to Use](#section11759141594811) - [Available APIs](#section1611515555510) - [How to Develop](#section937267212) - [Repositories Involved](#section3970193518214) ## Introduction The **foundation/arkui/napi** repository contains a development framework for extending the JS Native Module and provides APIs developed based on Node.js N-API for external use. **Figure 1** Architecture  - **NativeEngine** NativeEngine is the JS engine abstraction layer. It unifies API behavior of the JS engines at the NAPI layer. - **ModuleManager** ModuleManager is used to load modules and cache module information. - **ScopeManager** ScopeManager manages the NativeValue lifecycle. - **ReferenceManager** ReferenceManager manages the NativeReference lifecycle. ## Directory Structure The source code directory structure of this repository is as follows: ``` foundation/arkui/napi ├── interfaces │ └── kits │ └── napi # NAPI header files ├── module_manager # Module manager ├── native_engine # NativeEngine abstraction layer │ └── impl │ └── ark # Ark-based NativeEngine implementation ├── scope_manager # Scope manager └── test # Test code ``` ## When to Use NAPI is suitable for processing I/O- and CPU-intensive tasks and system tasks. It encapsulates the capabilities and provides them to apps as JS APIs. NAPI can be used to implement mutual access between JS and C/C++ code. You can use NAPI to develop modules such as network communications, serial port access, multimedia decoding, and sensor data collection. ## Available APIs For details about the API implementation, see the **foundation/arkui/napi** repository. **Table 1** Available NAPIs
Provides APIs executing ===, typeof, instanceof, and other operations alike. |
|
Provides functions for performing operations on object properties. |
|