Как запустить JS-код Node из npm внутри Swift - PullRequest
0 голосов
/ 14 сентября 2018

Я создаю приложение Cocoa и хочу вызвать пакет Node JS, загруженный из npm, для запуска из Swift.

Я не знаю, возможно ли это, но я ничего не смог найти в интернете. Могу ли я позвонить в npm посылку от Swift?

Хотя для этого потребуется, чтобы Node был доставлен или находился на компьютере пользователя, запустившего приложение, я не против этого. Но можно ли это сделать?

Или я должен написать тот же код узла в Swift?

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Я не знаю, как работает swift, но если вы можете включить файл js, вы можете просто включить файл. чтобы файл выглядел как простой файл javascript. не файл nodejs. Вы можете использовать browserify, он сгенерирует один js-файл для браузера из узловых модулей. есть такая вещь: https://cocoapods.org/pods/SwiftJavascriptBridge или даже больше https://google.com/?q=Swift+javascript

эта статья выглядит хорошо: http://www.dbotha.com/2014/11/19/using-javascript-core-for-game-scripting-on-ios/

0 голосов
/ 24 сентября 2018

Это отличный вопрос.Я постараюсь дать вам общее представление о том, как работают эти разные системы, и дать теоретическое, но довольно болезненное решение.Swift работает на мобильном конце и управляет своими ресурсами на более низком уровне.

С другой стороны, Javascript - это язык общего назначения, для которого требуется встроенная виртуальная машина (ВМ), которая «понимает» JavaScript,в систему, на которую вы нацеливаетесь.К счастью, iOS уже сделала это с javascriptcore интерфейсом.С его помощью вы можете загрузить пакет Javascript и оценить любую функцию из него.

Теоретически, то, что вы предлагаете, будет работать так:

  1. Найти в комплектеверсия пакета, которую вы хотите запустить

  2. Загрузите ее на виртуальную машину javascript с помощью интерфейса JavaScriptCore

  3. Оцените функцию пакета

Посмотрите это замечательное руководство

Большим предостережением этого подхода являются специфичные для платформы вызовы пакета npm (например, Node.js ').fs пакет не существует).

Если это так, то вам следует использовать удаленную службу, которая запускает код для вас, как предложено cenk.

0 голосов
/ 18 сентября 2018

Что вы можете сделать, так это то, что вы можете создать сокет или веб-приложение через узел & npm на сервере, который может обмениваться данными через URL-адрес отдыха.

Затем, сделав запрос к этому URL-адресу, вы сможете получить к нему доступ..

Но, конечно, это не значит, что вы можете встроить пакет npm в свой код swift.Это означает, что вы можете использовать его как услугу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...