Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Apps offline: O quão offline são?

Boa tarde, pessoal!

Tenho uma dúvida que perdura faz alguns meses, antes mesmo de ingressar no Alura. Eu sei que o HTML5 permite apps "offline", mas e quanto aos arquivos? O usuário deve sempre selecioná-los (API FileReader)?

Existe uma pequena confusão na minha cabeça sobre o "runtime environment" chamado NodeJS, e as capacidades de apps para web "offline". Existe algo que é instalado no PC que facilite a comunicação do JavaScript com o hardware? O que eu sei é que com o HTML5 o browser expôs várias APIs conhecidas por serem próximas do hardware como o WebGL (placa gráfica), e outro exemplo - inclusive é tema da minha dissertação - é a API em desenvolvimento WebVR para detectar dispositivos de realidade virtual.

Mas enfim, divaguei um pouco, existe algo que me permite acessar arquivos, portas de comunicação (USB), etc, em que eu possa facilitar/permitir a comunicação do javascript, via browser, com o hardware?

Desculpem os termos soltos, eu realmente queria que o JS tivesse maior acesso à máquina para poder programar unicamente para plataforma web, daí as dúvidas. Um exemplo grosseiro que permite isso é o antigo ActiveX. shivers rs

Obrigado!

2 respostas
solução!

Oi Paulo, bons pontos!

Se entendi bem, sua ideia de offline seria poder acessar o sistema de arquivos local da maquina do usuario. Isso vc nao pode fazer na Web, por questoes de segurança.

Quando falamos de offline, estamos basicamente falando da capacidade da sua pagina Web persistir seus recursos proprios (seu HTML, JS, CSS, imagens etc) pra uso quando o usuario estiver sem rede.

Tbm e possivel persistir dados do usuario e da app localmente, usando formas de dados especificas da Web - localStorage, IndexedDB, WebSQL por exemplo. Não acessar recursos quaisquer da maquina, como o sistema de arquivos completo.

Mas repare que essa nao é uma limitacao da Web, é proposital, por questoes de segurança. É a forma que acharam de seguir o modelo sandbox da Web que isola potenciais problemas. (bem parecido com outros ambientes sandbox, como programacao iOS por exemplo).

Aí vem a segunda parte da sua pergunta: como acessar recuesos de hardware avançados. Você não consegue acesso direto nativo a portas etc. Mas existem varias APIs que te permitem controlar certos tipos de devices. (e uma API nova WebUSB que esta sendo estudada para um acesso mais generico, mas ainda nao é realidade).

Exemplos: a Gamepad API permite interfacear controles externos; a WebMIDI permite acessar controladores MIDI; getUserMedia permite acessar cameras em geral; e varios outros, como o proprio WebVR que vc citou.

Obrigado, Sérgio! Foi bem no alvo mesmo.

É que eu estava analisando paralelamente à grotesca ActiveX e estive pensando no caso de necessitar conectar minha app a alguma interface de hardware. Isso não seria possível... mas ficou bem mais claro agora.

Pra elaborar um pouquinho mais: existem balanças rodoviárias que usam aplicativos não-web para entregar o peso da balança, e no local onde trabalho eles infelizmente fazem uso da ActiveX, por isso eu estive pensando sobre acessar os arquivos da máquina. rs

Bom, em todo caso eu entendi o motivo. Valeu mesmo!