使用Johnny-Five和React

我想用Johnny-Five和React JS创build一个接口。

我使用了这个React设置教程 。 我在同一个项目中安装了Johnny-Five: http : //johnny-five.io/ (Johnny-Five独立工作,独立应用程序,这使我可以控制我的Arduino)。

我的React index.js:

import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import MainRouter from './routes'; import registerServiceWorker from './registerServiceWorker'; import five from 'johnny-five'; var board = new five.Board({ port: "/dev/ttyACM0" }); board.on("ready", function() { var led = new five.Led(13); led.blink(500); }); ReactDOM.render( <MainRouter />, document.getElementById('root')) registerServiceWorker(); 

当我运行反应,网站开始,但董事会没有反应! 虽然没有React的代码工作得很好。 任何让Johnny-Five和React一起工作的想法?

问题是,Johnny Five(J5)不能从浏览器本地运行。 J5需要访问您的计算机上的浏览器(出于安全原因)不允许的端口。 我的理论是,当你说你“没有React运行”,你正在通过NodeJS控制台运行(而不是只是删除代码的React部分,并在浏览器中重新运行)。 NodeJS应用程序在不同的上下文中运行,然后浏览器脚本。

那么你如何实现你的目标? 你有几个我能想到的选项。

选项1:

首先,编写一个NodeJS桌面应用程序。 桌面应用程序为您提供了所需的运行时上下文(访问端口),同时为您提供了您所期望的Web应用程序的graphics用户界面(GUI)。 您可以使用Node Webkit , AppJS或其他一些(仅适用于Google NodeJS桌面应用程序)来执行此操作。 这些桌面应用程序的优点是GUI是用HTML和CSS编写的。 所以就像一个网页,它只是不在浏览器(或不是你所期望的浏览器)中运行。

选项2:

也许你真的想要一个Web应用程序(也许你想要一个网页,他人可以访问和控制你的Johnny五机器人)。 在这种情况下,你需要编写两个系统。 第一个是Web客户端(您已经在使用您的React代码)。 Web客户端不会有任何Johnny Five代码。 您需要编写的第二个系统是Web服务器。 服务器将处理所有Johnny Five代码。 你的客户端将有一个界面(button,文本input等)。 当用户点击一个button,你发送一个请求到服务器。 服务器通过调用正确的Johnny Five代码来处理这个请求。 这是一个非常简单的例子 。