2016-05-04 31 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

相關問題