2016-10-03 57 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只輸入一個。此外,繼續,您將不得不管理會話並斷開/重新連接用戶。

不幸的是,「網絡」世界與「鍵盤」世界的方法和問題大不相同。

相關問題