Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于浏览器的应用程序需要IO控制_Javascript_Node.js_Socket.io_Client Side Scripting_Server Side Scripting - Fatal编程技术网

Javascript 基于浏览器的应用程序需要IO控制

Javascript 基于浏览器的应用程序需要IO控制,javascript,node.js,socket.io,client-side-scripting,server-side-scripting,Javascript,Node.js,Socket.io,Client Side Scripting,Server Side Scripting,这是一个关于构建同时具有服务器端和客户端需求的应用程序的最佳方法的问题。请原谅我的长篇大论——我正试图用我模糊的问题尽可能地澄清 对于一个独立的非网络连接的艺术项目,我正在创建一个简单的基于浏览器的应用程序。最好将它比作一个华丽的半复杂的计算器 我希望应用程序能够利用浏览器的演示功能,并在一个不重新加载的页面中运行。虽然我有很多用perl、PHP和Python编写服务器端应用程序的经验,但我对客户端编程比较新,对JavaScript也比较陌生 该应用程序将做一个公平的数学,一个公平的Raspbe

这是一个关于构建同时具有服务器端和客户端需求的应用程序的最佳方法的问题。请原谅我的长篇大论——我正试图用我模糊的问题尽可能地澄清

对于一个独立的非网络连接的艺术项目,我正在创建一个简单的基于浏览器的应用程序。最好将它比作一个华丽的半复杂的计算器

我希望应用程序能够利用浏览器的演示功能,并在一个不重新加载的页面中运行。虽然我有很多用perl、PHP和Python编写服务器端应用程序的经验,但我对客户端编程比较新,对JavaScript也比较陌生

该应用程序将做一个公平的数学,一个公平的Raspberry Pi I/O控制位,以及大量的显示控制

我最初的想法(和舒适区)是用Python编写它,并使用一些JS钩子,但我可能需要重新考虑这一点。我更愿意将逻辑层与表示层分开,但考虑到整个过程都发生在一个不重新加载的html页面上,JavaScript似乎是我最合理的选择

我将在Raspberry Pi上运行这个,我需要访问输入和输出的GPIO端口。我知道JavaScript将无法直接执行I/O,因此我需要转向使用AJAX-ish类型的调用来接收和发送IO,比如nodejs或socket.IO

我的主要问题是——在这两种方法之间选择是否有明确的最佳实践:

  • 在客户端JavaScript中编写应用程序的主逻辑,并使用服务器端脚本执行I/O,或

  • 使用服务器端语言(如Python)编写应用程序的逻辑,并调用客户端Javascript来管理表示层


  • 这两种方法都需要客户端和服务器端脚本之间的中介。做这件事最简单的平台或库是什么,对学习者来说既不过分,也不过分?

    哦,这是一个多么好的问题!我现在正在考虑。我的方法有一点不同: 使用旧的MVC样式,你认为V(IEW)层是用JavaScript CSS和许多其他东西渲染的HTML页面,M和C将在服务器上运行。有一天,我遇到了AngularJS先生,我意识到:哇,一些基本的事情可能会改变: 认为观点(或我认为是观点的东西)实际上不是观点。AngularJS在“视图”中为我提供了控制器、数据资源甚至视图模板,换句话说:客户端本身可以是一个真正的应用程序。所以现在我的方法是: 服务器执行“服务器任务”,如:读写数据、向客户机发送数据、从客户机接收数据等。。。。 客户端做“客户端工作”:与用户交互,在数据发送之前进行逻辑处理,如验证,或格式化从用户收集的信息等


    也许你们可以重新思考你们的方法:问问你们自己什么样的逻辑应该在客户端运行,什么样的逻辑应该在服务器上运行。带有javascript的客户端执行其I/O,带有服务器端脚本的服务器执行其I/O。服务器将为客户端提供所需的资源,javascript将这些资源用作其MVC的M(odel)。希望你能理解,我的蹩脚英语:D

    经过一些考虑,我认为以下选项适合你的情况:

  • 禁用浏览器安全性并直接与GPIO通信。没有标准的图书馆
  • 使用具有GPIO访问和AJAX的JavaScript服务器环境。AJAX引入的复杂性
  • 使用熟悉的Python并使用嵌入式web浏览器(如果有库),非常简单

  • 如果您不熟悉工具和语言,请不要增加太多的复杂性。。。听起来你基本上已经决定了:

    • Python服务器。(Python必须管理GPIO。)
    • HTML/JavaScript客户端,创建一个漂亮的UI。(HTML必须显示UI。)
    那太好了! 您只是想知道在客户机/服务器划分的每一个方面要做多少工作。。。在功能上应该是等效的

    简言之:用任何一种你更有效率的语言做大部分工作

    我想到了其他注意事项:

    • 将整个服务器编写为独立的python非常简单 直来直去
    • 你不必这么做,但它很好而且 如果您从中提供页面内容本身,则是自包含的
    • 如果你 将大部分状态保留在服务器/python端,您可以 整个应用程序在页面重新加载时更加健壮(即使我 知道你提到的,那永远不会发生)

    我从未为Raspberry Pi开发过,也从未访问过GPIO端口。但我已经开发出了独立的网络应用程序,它就像一台华丽的半复杂计算器

    一个比较直接的方法供您考虑:

    将应用程序创建为单页HTML5独立web应用程序,该应用程序使用AJAX通过Node.JS或Python访问GPIO端口。根据我的经验,对这种方法的一些想法:

  • jQuery是保持DOM访问和操作可读性和可管理性的极好工具。它简化了使用HTML页面元素的JavaScript

  • 将您的状态保存在浏览器本地存储中—使用JavaScript对象和JSON使此过程非常简单和强大。(一行代码可以将整个全局状态对象作为JSON字符串写入本地存储。)始终将任何持久性应用程序状态更改从本地变量传输到本地存储,并使用page init例程,在任何浏览器刷新或系统重新启动时将本地存储拉入本地变量。通过在开发过程中不断刷新应用程序作为测试的一部分进行测试,以确保状态按照您希望的方式进行管理。这个技巧会在你前进的过程中保持稳定

  • 通过jQuery对任何I/O使用AJAX都是非常可读和可靠的。它的异步方法还可以在执行任何操作时保持应用程序的响应速度