cnblogs csdn 代码运行框实现代码

如果想在博客中展示代码的运行效果,可以借助一些第三方的代码运行框。像cnblogs和csdn都提供了这样的功能,可以直接在文章中展示代码的执行结果、输出或图形等,非常实用。下面是使用cnblogs和csdn实现代码运行框的攻略。

一、cnblogs 代码运行框实现

1. 准备

首先,需要在博客园中打开“源代码”模式,即切换到HTML源代码编辑模式,才能够使用cnblogs的代码运行框。

接着,在HTML源代码编辑器中添加以下代码:

<head>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/ace/1.4.7/ace.js"></script>
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
</head>

以上代码添加在文档的头部标签<head>中,包含了jQuery、UI和Ace编辑器的引用,后面会介绍使用过程中这些文件的作用。

2. 使用

准备工作完毕后,就可以在文章中插入代码运行框了。

2.1 多行代码

在文章编辑器中,使用Markdown语法输入代码块,如:

(function() {
  var app = angular.module('SampleApp', []);
  app.controller('MainController', function($scope) {
    $scope.message = 'Hello World!';
  });
})();

接下来,在代码块的外部,添加以下代码:

<div id="code-area-div" style="position: relative">
  <div id="code-area" class="shadow" style="position: relative"></div>
  <pre id="output-area" class="shadow"></pre>
  <button id="run-button" style="position: absolute; right: 10px; top: 10px;">Run</button>
</div>

其中,id="code-area-div"表示代码运行框的最外层div;id="code-area"是Ace编辑器的占位div;pre id="output-area"是输出信息的div;id="run-button"是运行按钮;样式中的position: relative表示这些元素是相对定位(为了方便定位按钮)。

最后,在文章底部,添加以下JavaScript代码:

$(document).ready(function() {
  var editor = ace.edit("code-area");
  editor.setTheme("ace/theme/chrome");
  editor.session.setMode("ace/mode/javascript");
  editor.setValue(`(function() {
  var app = angular.module('SampleApp', []);
  app.controller('MainController', function($scope) {
    $scope.message = 'Hello World!';
  });
})();`, 1);

  $("#run-button").on("click", function() {
    try {
      var result = eval(editor.getValue());
      $("#output-area").html(result);
    } catch (e) {
      $("#output-area").html(e.stack);
    }
  });
});

以上代码包含两部分:

  1. 初始化Ace编辑器。其中,ace.edit("code-area")表示在<div id="code-area"></div>中创建Ace编辑器实例;editor.setTheme("ace/theme/chrome")表示设置Ace编辑器的主题;editor.session.setMode("ace/mode/javascript")表示设置Ace编辑器的语言模式;editor.setValue表示设置Ace编辑器的默认文本。
  2. 执行代码和展示输出信息。点击“Run”按钮后,使用editor.getValue()获取Ace编辑器中的代码,并使用eval()执行代码(如果代码有语法错误则会捕获异常),最后将结果写入$("#output-area")中。

完成上述步骤后,就可以在文章中插入一个带有代码运行框的代码块。

2.2 单行代码

如果想在文章中插入一个单行的代码,可以使用如下代码:

<span id="code-area-span" class="shadow"></span>
<pre id="output-area-span" class="shadow"></pre>
<button id="run-button-span">Run</button>
<script>
  $("#run-button-span").on("click", function() {
    try {
      var result = eval($("#code-area-span").text());
      $("#output-area-span").html(result);
    } catch (e) {
      $("#output-area-span").html(e.stack);
    }
  });
</script>

CSS样式可以自行定义,这里只给出关键部分。在文章中,输入单行代码,例如:

<span id="code-area-span" class="shadow">console.log('Hello World!');</span>

最后添加上述JavaScript代码即可。

二、csdn 代码运行框实现

1. 准备

csdn的代码运行框类似,也需要Spark Editor的支持,因此需要引入以下css和js文件:

<head>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/Spark/1.0.0/spark.min.css" rel="stylesheet" type="text/css" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Spark/1.0.0/spark.min.js"></script>
</head>

2. 使用

csdn的代码运行框和cnblogs的实现方式略有差异。假设需要在文章中插入一个多行代码块,可以使用如下代码:

<pre class="language-javascript">
(function() {
  var app = angular.module('SampleApp', []);
  app.controller('MainController', function($scope) {
    $scope.message = 'Hello World!';
  });
})();
</pre>
<button onclick="runCode(this)">Run</button>
<div class="output"></div>
<script>
  function runCode(button) {
    var code = button.previousElementSibling.textContent;
    try {
      var result = eval(code);
      button.nextElementSibling.innerHTML = JSON.stringify(result);
    } catch (e) {
      button.nextElementSibling.innerHTML = e.stack;
    }
  }
</script>

代码中用到了csdn提供的语法高亮功能,需要在代码块的外部使用<pre>标签和class="language-javascript"标识语言类型。其中,button是运行按钮,div class="output"是输出信息的div。

点击“Run”按钮后,执行JavaScript代码并将执行结果写入输出信息的div中。这里使用了eval()方法,可以自行替换成其他运行代码的方法。

如果需要在文章中插入单行代码,可以参考cnblogs的实现方式,在单行代码的外部添加一个span或者div,进行类似的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:cnblogs csdn 代码运行框实现代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 详解C# 反射(Reflection)

    详解 C# 反射(Reflection) C# 反射(Reflection)是指在程序运行的时候动态的获得一个类的信息以及可以操作这个类、实例等相关信息的能力。反射提供了一种机制来检查程序集中的元数据,包括类型定义、字段、属性、方法等信息。在运行时,可以通过反射来创建对象、调用方法、获取或设置属性等。 反射的作用 可以查看类型、方法、构造函数、属性、字段、事…

    C# 2023年6月1日
    00
  • asp.net 代码隐藏的编码模型

    ASP.NET代码隐藏编码模型是一种ASP.NET编程技术,可以有效地隐藏应用程序中的代码和资源文件,以增加应用程序的安全性。下面是ASP.NET代码隐藏的完整攻略,包括两个示例说明: 1. 使用<%# %> 标记实现动态绑定 使用 <%# %> 标记可以将 ASP.NET 数据绑定语句嵌入到标记内部,从而实现动态绑定。下面是一个使用…

    C# 2023年5月31日
    00
  • .NET WinFrom中给文本框添加拖放事件的代码

    下面是 “.NET WinFrom中给文本框添加拖放事件的代码” 的攻略,包含了步骤和示例。 添加控件和事件 首先,我们需要在 WinForm 窗体中添加一个文本框控件,并且为其注册拖放事件。 // 在窗体代码中声明文本框控件 private TextBox textBox1; // 在窗体的构造函数中初始化文本框控件并注册拖放事件 public Form1…

    C# 2023年6月7日
    00
  • 关于C# TabPage如何隐藏的问题

    下面是关于C# TabPage如何隐藏的完整攻略: 关于TabPage TabPage是C#中Windows Form中的一种控件,用于创建选项卡界面。一个选项卡界面可以包含多个选项卡页(TabPage)。 隐藏TabPage 隐藏一个TabPage非常简单,只需要设置它的Visible属性即可。如果设置为false,TabPage将不会在界面上显示。示例如…

    C# 2023年6月6日
    00
  • C# TextReader.Peek – 预读取下一个字符

    TextReader.Peek 方法用于返回下一个字符但不移动数据流中的位置指针。该方法返回的结果是下一个可用字符,但并不消费该字符。如果要消费该字符,可以调用 Read 方法。 该方法的语法为: public virtual int Peek() 其中,返回值是一个整数,表示下一个可用字符,或者当没有可用字符时为 -1。 Peek 方法可以在文本文件或字符…

    C# 2023年4月19日
    00
  • ASP.NET Core实现动态获取文件并下载

    在ASP.NET Core中,我们可以使用FileResult类来实现动态获取文件并下载。FileResult类是一个ActionResult,它表示一个文件的内容作为响应发送到客户端。在本攻略中,我们将介绍如何使用FileResult类来实现动态获取文件并下载,并提供两个示例说明。 实现步骤 以下是在ASP.NET Core中实现动态获取文件并下载的步骤:…

    C# 2023年5月16日
    00
  • c#文件的复制,移动,创建(实例代码)

    下面是关于c#文件的复制、移动和创建的完整攻略。 一、文件复制 文件复制是指将一个文件的内容完整地复制到另一个文件中。在C#中,我们可以使用File.Copy()方法完成文件复制,具体实现代码如下: using System.IO; // 源文件路径 string sourcePath = @"C:\example\example1.txt&quo…

    C# 2023年5月31日
    00
  • .net自定义事件示例分享

    下面是详细的“.net自定义事件示例分享”的攻略: 1. 简介 在 .NET 中,自定义事件是一种非常常见的编程模式,该模式便于构建松耦合、可扩展和可测试的代码。在 C# 中,使用以下语法创建自定义事件: public event EventHandler<MyEventArgs> MyCustomEvent; 其中,MyCustomEvent …

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部