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#异常处理知识汇总

    C#异常处理知识汇总 什么是异常 异常是指程序运行过程中,出现了不可预测的错误或者状态,导致程序无法正常执行。异常属于错误,不能被忽略,需要进行处理。 C#中的异常处理 在C#中,可以使用try-catch语句进行异常处理。其基本语法结构如下: try { // 可能会抛出异常的代码块 } catch (Exception ex) { // 异常处理代码块 …

    C# 2023年5月15日
    00
  • asp.net6 blazor 文件上传功能

    下面是ASP.NET6 Blazor文件上传功能的完整攻略: 1. 简介 在ASP.NET6 Blazor中,文件上传功能可通过<InputFile>组件轻松实现,可以用于上传各种类型的文件,如图片、音频、视频等。通过实现IFormFile接口,开发人员可以轻松地将上传的文件保存到服务器上。 2. 示例 示例1:上传图片 1)前端代码 在Blaz…

    C# 2023年6月3日
    00
  • C#笔试题之同线程Lock语句递归不会死锁

    当同一线程中出现递归的Lock语句时,如果没有特殊的处理,就可能导致死锁。这是因为Lock语句在执行前会获取锁,并在执行完毕后释放锁,如果在获取锁之后又执行了同一个Lock语句,就会导致锁无法释放,进而导致死锁。 解决这个问题的方法是利用Monitor.Enter和Monitor.Exit方法,进行锁的操作。其中,Monitor.Enter方法获取锁,如果已…

    C# 2023年6月7日
    00
  • 深入理解MVC中的时间js格式化

    关于“深入理解MVC中的时间js格式化”的完整攻略,我将以下面的方式进行详细说明: 1. 什么是MVC 首先,我们需要了解MVC模式的基本概念。MVC代表Model-View-Controller(模型-视图-控制器),是一种设计模式,一种将应用程序的逻辑分离成三个主要部分的方式。这三个部分之间的交互是根据一组规则进行的。 Model:代表应用程序的数据和业…

    C# 2023年5月31日
    00
  • VB 书籍

    VB 书籍攻略 如果你正在寻找一本好的 VB 书籍,以下是一些建议和提示,可以使你更容易找到适合你的书。 初学者 《Visual Basic 6.0从入门到精通》 这本书对于那些没有编程经验且想学习 VB 的人非常有帮助。它从基础开始,详细介绍了语言的各个方面,包括变量、数据类型、运算符、控制结构等。同时,它还提供了许多示例,演示如何使用 VB 来实现各种功…

    C# 2023年6月8日
    00
  • ASP.NET Core中引用OpenAPI服务的添加示例

    ASP.NET Core中引用OpenAPI服务的添加示例 OpenAPI是一种用于描述RESTful API的规范。在ASP.NET Core中,可以使用Swashbuckle.AspNetCore包来生成OpenAPI文档。本攻略将提供一些示例,演示如何在ASP.NET Core中引用OpenAPI服务。 步骤 步骤1:创建一个新的ASP.NET Cor…

    C# 2023年5月17日
    00
  • .NET Core使用Worker Service创建服务

    .NET Core使用Worker Service创建服务 在.NET Core中,我们可以使用Worker Service来创建长时间运行的服务。Worker Service是一种轻量级的.NET Core应用程序,可以在后台运行,并执行一些任务,例如处理消息队列、定时任务等。本文将介绍如何使用Worker Service创建服务,并提供两个示例来说明如何…

    C# 2023年5月17日
    00
  • C#.NET采用HTML模板发送电子邮件完整实例

    下面是 C#.NET 采用 HTML 模板发送电子邮件的完整攻略: 第一步:添加命名空间和引用 在 C# 代码中,我们需要引用 System.Net.Mail 命名空间来发送电子邮件。因此,在代码文件的头部需要添加以下引用语句: using System.Net.Mail; 第二步:构建邮件内容 首先,我们需要准备好邮件的内容。在这里,我们将采用 HTML …

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