1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Napa.js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
module.md 7.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 05:42 7a34d50

Napa.js модуль

Содержание

Введение

Napa.js следует конвенциям Node.js для поддержки модулей, что означает:

  1. Поддерживаются как модули JavaScript, так и модули C++.
  2. Разрешение модулей следует тому же алгоритму, за исключением того, что вместо поиска расширения файла .node для аддонов, Napa.JS ищет .napa.
  3. Поддерживает NPM, с тем же способом создания и публикации модулей.
  4. API создания модулей C++ (аддонов) аналогичны. Napa.JS представил макросы, которые позволяют компилировать один и тот же исходный код для создания аддона Napa.js и аддона Node.js.

Но есть и отличия:

  1. Модуль C++, разработанный/реализованный для Napa.js, может работать на Node.JS (нужны разные флаги компиляции для создания файлов .napa и .node). Но не наоборот.
  2. Napa.js не поддерживает все API Node.js. API Node поддерживаются постепенно на основе мотивации добавления встроенных функций и основных модулей, необходимых для выполнения сложных задач. Вы можете получить доступ ко всем возможностям Node через зону Node (см. раздел «Зона Node» в файле node-zone.md).
  3. Napa.js не предоставляет функциональности uv, поэтому встроенные функции и основные модули имеют собственную реализацию. Для написания асинхронной функции в аддоне представлены методы DoAsyncWork/PostAsyncWork, которые работают как для Napa.js, так и для Node.js.
  4. Napa.js поддерживает режим встраивания. Модули C++ требуют отдельной компиляции между режимом Node и режимом встраивания.

Разработка модулей

Модуль: JavaScript против C++

Быстрый взгляд на NPM покажет, что большинство модулей являются чистым JavaScript. Вот несколько причин, по которым вы можете захотеть создать модуль C++.

  • Вы хотите предоставить API JavaScript для существующих функций C/C++.
  • Код включает значительное количество вычислений, критичных для производительности.
  • Объекты должны совместно использоваться несколькими потоками JavaScript, стоимость маршалинга/демаршалинга этих объектов нетривиальна (большой размер полезной нагрузки, сложная структура и т. д.), но разумно дёшево предоставлять API JavaScript из базовых собственных объектов.
  • В режиме встраивания вы хотите общаться с хост-процессом с помощью собственных объектов.

Этот пост даёт хорошее введение в создание модуля JavaScript. Для создания модуля Napa.JS C++ обратитесь к разделу API или ознакомьтесь с примерами в разделе «Краткий справочник».

Краткий справочник

JavaScript модуль

Описание Транспортный Пример кода
Стандартный модуль JavaScript Блог-пост (https://www.hacksparrow.com/how-to-write-node-js-modules.html)
Поделиться объектом JavaScript между изолятами X

C++ модуль

| Описание | ObjectWrap | Транспортный | Асинхронная функция | Пример кода | | ----------------------------------------------------------- | Экспорт функции JavaScript

Экспорт функции JavaScript.

Экспорт объекта JavaScript (ObjectWrap)

Экспорт объекта JavaScript, который представляет собой оболочку для объекта C++.

Совместное использование объекта C++ в разных изолятах

Совместное использование объекта C++ в разных изолятах.

Экспорт асинхронной функции JavaScript

Экспорт асинхронной функции JavaScript.

API

JavaScript

См. справочник по API (index.md).

C++

Экспорт классов JavaScript из модулей C++

TBD.

Помощники V8

TBD.

Использование STL с пользовательскими распределителями

TBD.

Специальные темы

Тема №1: сделать объекты доступными для совместного использования в нескольких потоках JavaScript

TBD.

Тема №2: асинхронные функции

TBD.

Тема №3: управление памятью в модулях C++

TBD.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Napa.js.git
git@api.gitlife.ru:oschina-mirror/mirrors-Napa.js.git
oschina-mirror
mirrors-Napa.js
mirrors-Napa.js
master