2016-05-04 29 views
2

许多JS应用程序都是客户端。但是如果我想与Arduino进行接口,那么我需要通过使用像Node.js之类的服务器来实现。为什么是这样?Javascript/web dev:为什么你需要一个服务器来连接硬件?

+0

请详述,你想知道什么? node.js是用c/C++编写的,它不是香草的javascript,它将前者留给客户端 – zython

+0

好吧,这是我的情况(和我一起裸露,因为我什么都不知道):我正在使用p5与arduino进行交互.js,但它要求我安装节点,以便它可以在服务器上运行。为什么如果我正在使用硬件I/O,我需要在服务器上运行它,但是如果我只是在做基本的JS Web脚本(如绘制一个圆圈),我可以在没有服务器的情况下在本地运行所有内容? –

+1

通常你通过一个通信端口与Arduino通信。网页中的JS无法访问端口。所以,你运行一个可以的服务器。 –

回答

2

出于安全性和交叉平台的原因,Web应用程序仅限于sandbox。最初,Web应用程序可能只需要加载URL,当它们聚焦时处理键盘/鼠标输入,并控制其窗口中的显示。

还有什么依赖于浏览器必须提供的额外的API,所以默认状态就是其他。同样,出于安全原因,操作系统的API不能从Web应用程序访问。

那么为什么目前的浏览器不具有访问Arduinos的API?除了every feature starting at -100 points之外,原因是很难在不影响安全性的情况下访问USB设备(例如,避免Web应用程序读取USB键盘输入并因此捕获所有未来密码或过热您的foot warmer)。

幸运的是,目前正在开发这样的标准 - 它被称为WebUSB。但是,截至2016年5月,默认情况下,浏览器不支持它,但您需要更改chrome://flags/#enable-experimental-web-platform-features的值can enable it in Chrome

+0

请注意,使用JavaScript进行设备控制的完全不同的方式是通过Node.js,如OP注释。该方法完全避免了浏览器问题。 – Pointy

相关问题