国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 使用CodeMirror實現Python3在線編輯器的示例代碼

使用CodeMirror實現Python3在線編輯器的示例代碼

2021-05-15 00:27小結點 Python

這篇文章主要介紹了使用CodeMirror實現Python3在線編輯器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、編寫頁面

主要是引入相關的css文件和js文件,這里采用簡單插入link和script標簽的形式。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>document</title>
  <link rel="stylesheet" href="codemirror/lib/codemirror.css" rel="external nofollow" >
  <link rel="stylesheet" href="codemirror/addon/fold/foldgutter.css" rel="external nofollow" >
  <link rel="stylesheet" href="codemirror/addon/hint/show-hint.css" rel="external nofollow" >
  <link rel="stylesheet" href="codemirror/addon/lint/lint.css" rel="external nofollow" >
  <link rel="stylesheet" href="leetcode.css" rel="external nofollow" >
</head>
<body>
  <form action="">
    <textarea id="editor" class="editor"></textarea>
  </form> 
  <button id="test">click</button>
</body>
</html>
<script src="codemirror/lib/codemirror.js"></script>
 
<script src="codemirror/addon/comment/comment.js"></script>
 
<script src="codemirror/addon/selection/active-line.js"></script>
 
<script src="codemirror/keymap/sublime.js"></script>
 
<script src="codemirror/addon/hint/show-hint.js"></script>
<script src="codemirror/mode/python/python.js"></script>
 
<script src="codemirror/addon/fold/foldcode.js"></script>
<script src="codemirror/addon/fold/foldgutter.js"></script>
<script src="codemirror/addon/fold/brace-fold.js"></script>
<script src="codemirror/addon/fold/indent-fold.js"></script>
<script src="codemirror/addon/fold/comment-fold.js"></script>
 
<script src="codemirror/addon/edit/closebrackets.js"></script>
<script src="codemirror/addon/edit/matchbrackets.js"></script>
 
<script src="axios.js"></script>
 
<script src="index.js"></script>

二、配置codemirror

在index.js中配置codemirror

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
window.onload = function () {
  var el = document.getelementbyid("editor");
  var version = "# version: python3\n\n";
  var codeareatip = "# please edit your code here:\n";
  var codestart = "# code start\n\n";
  var codeend = "# code end\n\n";
  var codetip = "'''\nthis function is the entry of this program and\nit must be return your answer of current question.\n'''\n";
  var code = "def solution():\n\tpass";
  var initvalue = version + codeareatip + codestart + codeend + codetip + code;
  var mycodemirror = codemirror.fromtextarea(el, {
    mode: "python", // 語言模式
    theme: "leetcode", // 主題
    keymap: "sublime", // 快鍵鍵風格
    linenumbers: true, // 顯示行號
    smartindent: true, // 智能縮進
    indentunit: 4, // 智能縮進單位為4個空格長度
    indentwithtabs: true, // 使用制表符進行智能縮進
    linewrapping: true, //
    // 在行槽中添加行號顯示器、折疊器、語法檢測器
    gutters: ["codemirror-linenumbers", "codemirror-foldgutter", "codemirror-lint-markers"],
    foldgutter: true, // 啟用行槽中的代碼折疊
    autofocus: true, // 自動聚焦
    matchbrackets: true, // 匹配結束符號,比如"]、}"
    autoclosebrackets: true, // 自動閉合符號
    styleactiveline: true, // 顯示選中行的樣式
  });
  // 設置初始文本,這個選項也可以在fromtextarea中配置
  mycodemirror.setoption("value", initvalue);
  // 編輯器按鍵監聽
  mycodemirror.on("keypress", function() {
    // 顯示智能提示
    mycodemirror.showhint(); // 注意,注釋了codemirror庫中show-hint.js第131行的代碼(阻止了代碼補全,同時提供智能提示)
  });
  var test = document.getelementbyid("test");
  test.onclick = function() {
    var value = mycodemirror.getvalue();
    axios.post("http://localhost/api/runcode", {
      code: value
    }).then(function(res) {
      console.log(res);
    });
  };
};

三、后臺調用python shell

過程如下:

  • 在接收的代碼字符串后面添加print(solution())用于打印結果
  • 將第一步處理后的字符串寫入一個文件中這里是code/code.py
  • 使用child_process模塊的exec方法調用shell執行python code/code.py命令,獲取打印結果
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const express = require("express");
const { exec } = require("child_process");
const router = express.router();
router.post("/api/runcode", (req, res) => {
  let code = req.body.code;
  fs.writefile("code/code.py", code+"\nprint(solution())", (err) => {
    let command = "python code/code.py";
    exec(command, (err, stdout, stdin) => {
      if(err){
        let reg = /[\d\d]*(line\s\d)[\d\d]*?(\w*(?:error|exception).*)/im;
        let matcharr = reg.exec(err.message);
        matcharr.shift();
        res.send(matcharr.join(", "));
      }
      else
        res.send(stdout);
    });
  });
});

效果:

使用CodeMirror實現Python3在線編輯器的示例代碼

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000017875558

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久精 | 欧美成人精品欧美一级私黄 | 国产黄色小视频 | 国产高清在线不卡 | 欧美日韩国产在线观看 | 久久久久久成人 | 激情综合五 | 性高湖久久久久久久久aaaaa | 亚洲一一在线 | 91精品国产日韩91久久久久久 | 瑟瑟视频网站 | 99久久婷婷国产综合精品电影 | 亚洲免费精品 | 久久精品在线 | 欧美综合影院 | 91精品国产欧美一区二区 | 成人福利在线观看 | 一区二区三区在线 | 久久国内精品 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲综合精品 | 日韩免费 | 国产精品免费久久久久久久久久中文 | 色婷婷导航 | 亚洲国产一区二区三区四区 | 亚洲在线观看一区二区 | 欧美香蕉 | 久久综合激情 | 亚洲 成人 av | 精品无码久久久久久国产 | 日韩免费一区 | 一区二区三区精品 | 夜夜操操 | 一区二区蜜桃 | 国产黄| 精品成人在线视频 | 欧美一级片 | 亚洲视频 欧美视频 | 国产精品一区视频 | 国产激情网 | 亚洲欧美视频 |