2016-05-04 9 views
2

多くのJSアプリケーションはクライアント側です。しかし、私がArduinoとインターフェースしたいのであれば、Node.jsのようなものを使ってサーバー上で行う必要があります。どうしてこれなの?Javascript/web dev:なぜハードウェアに接続するにはサーバーが必要ですか?

+0

詳細を教えてください。あなたは何を知りたいですか? node.jsはc/C++で書かれています。これはvanilla javascriptではなく、クライアント側のために残しています – zython

+0

これは私の状況です(私は何も知らないので、私と一緒に裸です):私はp5を使ってarduino .jsですが、サーバー上で実行できるようにノードをインストールする必要があります。なぜ私はハードウェアI/Oを使って作業しているのですが、サーバで実行する必要がありますが、サークルを描くような基本的なJS Webスクリプトを実行しているのであれば、サーバーなしですべてをローカルで実行できますか? –

+1

通常、通信ポートを介してArduinoと通信します。 WebページのJSはポートにアクセスできません。したがって、できるサーバーを実行します。 –

答えて

2

セキュリティとクロスプラットフォームの理由から、Webアプリケーションはsandboxに制限されています。もともと、WebアプリケーションはURLをロードしたり、フォーカスを合わせたときにキーボード/マウス入力を処理したり、ウィンドウ内の表示を制御したりすることができます。

その他のものは、ブラウザが提供しなければならない追加のAPIに依存するため、デフォルトの状態は何もありません。セキュリティ上の理由から、オペレーティングシステムのAPIにはWebアプリケーションからアクセスできません。

なぜ現在のブラウザにArduinosにアクセスするためのAPIがないのですか? every feature starting at -100 pointsとは別に、セキュリティを損なうことなくUSBデバイスへのアクセスを許可することは非常に難しいです(たとえば、WebアプリケーションでUSBキーボード入力を読み取って将来のパスワードをすべて取得するか、foot warmerを過熱するなど)。

幸いにも、そのような標準が現在開発中です。これはWebUSBと呼ばれています。ただし、can enable it in Chromeの値をchrome://flags/#enable-experimental-web-platform-featuresに変更しても、2016年5月現在はデフォルトでブラウザがサポートされていません。

+0

デバイス制御にJavaScriptを使用する全く異なる方法は、OPノートのようにNode.js経由で行うことに注意してください。そのアプローチはブラウザの問題を完全に回避します。 – Pointy

関連する問題