2016-10-03 58 views
0

我最近完成了我的HTML和CSS课程,现在正在进入Javascript。我目前在Python中拥有不错的背景,并且希望利用我的网络编程经验。如何在Web浏览器中显示类似终端的环境(显示Python脚本的输出)?

我的问题是,我怎么能创建一个可以在我的HTML页面中显示我的python代码的终端环境?例如,如果我有一个名为hello.py的脚本,并且它向用户发送了一条hello world消息,那么我怎样才能采用该脚本,并将其结果显示在我的页面中,因此,当您将它加载时,它会显示为'hello world' ?

我希望这很清楚。我没有使用Python来引用显示HTML,就像Django这样的框架,而是如何创建脚本,运行它并将其输出显示到网页上?

+0

您是否想在离线状态下运行它,并生成可以查看的页面,或者让某人能够从网页调用脚本并查看结果。 – Dave

+0

我需要第二个选项。我希望能够通过浏览器窗口运行一个小文本RPG,并且运行诸如“战斗”功能和更新类的东西,需要这种功能吗? – classmethod

+0

脚本必须在服务器端执行。这意味着您将需要涉及HTML和JavaScript之外的其他语言。你可以使用PHP,或者如果你不想学习一种新的语言,你可以使用NodeJS(服务器上的JavaScript)。话虽如此,为简单任务混合多种语言并不是一个好主意。坚持使用JavaScript和HTML,因为它们是为网络设计的。 – Rodolfo

回答

0

撇开安全问题,你可以通过几种方式来做到这一点。

通过在CSS中显示假的用户提示并提供一个管理模拟命令行的textarea或输入区域,您可以追求“无状态,有点”的方法,这种方法更简单。当用户点击ENTER时,您将获得输入,将其发送到本地shell并捕获输出,然后将其显示格式化为终端。我认为这可以在AJAX中更好地完成。

由于您在Python中工作,因此这是a related question and answer扭曲。

上述方法只允许你非常简单(但仍然危险:-))交互。如果您启动了ncurses程序或任何尝试读取输入的交互式程序,您会立即卡住。但是,这足以运行hello.py

您可以改进使用测试库的方法,如this jQuery plugin

更复杂的方法是在本地分配一个终端(每个用户会话一个终端),捕获所有键盘事件并将它们“回显”给终端,然后读取控制台。您需要知道如何提供具有适当功能的有效终端环境,然后您需要解码程序输出(使用ANSI终端命令完成)并“重建”(虚拟)显示器外观,然后发送该“显示器“查看客户端浏览器以某种方式显示(AJAX,websockets ...)。结果会更好,但努力会成比例地增加。

后一种方法(使用Python)导致诸如thisthis之类的项目通过websockets与客户端进行通信。

UPDATE

这一切不需要做你需要的东西;你似乎需要模块执行器(不知道这个)加上聊天功能(这看起来是强制性的)之间的东西。

您需要的是摘要您的程序的输入和输出,以便它可以“通话”到Web浏览器。在这种情况下,您可以将程序作为守护程序运行(有一些模块允许守护程序执行基于stdio的程序)。然后,用户界面(可以使用jQuery插件)收集玩家A的输入并将其发送到程序,收集输出并将其发送回A的屏幕。你需要考虑变化和异步性,或者转向管理:玩家A可以输入五个命令,而玩家B只输入一个。此外,继续,您将不得不管理会话并断开/重新连接用户。

不幸的是,“网络”世界与“键盘”世界的方法和问题大不相同。

相关问题