告别零交互:在 EMLOG 中利用 C# 开发专属在线工具的实战指南

建站开发的朋友都知道,纯文字的博客容易让人疲劳。作为一个深耕技术的博主,我一直觉得,如果我们能把零点博客做成一个有温度、有工具的站点,粘性会高很多。

最近我在琢磨怎么给 EMLOG 加点料。我有 C# 的技术底子,而 EMLOG 主要是 PHP。怎么让这两者不“打架”,还能产生化学反应?答案就是:C# 搭建微型服务,EMLOG 做展示层。今天我就以开发一个“代码高亮预览工具”为例,手把手教你做在线工具开发

一、 架构设计:怎么把 C# 融进 EMLOG

很多人一听要开发在线工具就觉得头大,觉得要整 Nginx 反向代理、要搞 Docker 容器。其实对于中小型站点,最简单的方案是:独立写一个 C# 控制台程序(或 Windows 服务),暴露一个 HTTP 接口给 EMLOG 调用

这样的好处很明显:逻辑在 C# 里跑(性能好,微软全家桶特性多),前端通过 Ajax 发请求,展示在 EMLOG 的模板里。整个过程对 PHP 基本无侵入,维护起来非常方便。

二、 核心实战:从零开始写 C# 逻辑

我们需要一个能接收 Markdown 格式代码并返回 HTML 的接口。新建一个 .NET Core 控制台项目。

1. 引用必要的 NuGet 包

为了代码高亮,我们用 Antlr4.Runtime。

dotnet add package Antlr4.Runtime.Standard

2. 编写核心逻辑

写一个简单的 API 控制器,这里我省去繁琐的 HTML 转义,直接给你核心的请求处理逻辑:

using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace CodeHighlightService
{
    [ApiController]
    [Route("api/[controller]")]
    public class ToolController : ControllerBase
    {
        // 模拟简单的代码转高亮逻辑
        [HttpGet]
        public async Task<IActionResult> Highlight(string code, string lang)
        {
            // 实际项目中这里会调用 Prism.js 或 Highlight.js 的服务端库
            // 这里为了演示,我们返回一个结构化的 JSON
            var result = new {
                success = true,
                data = $<{code}>                
            };
            return Ok(result);
        }
    }
}

记得在 `Program.cs` 里加上 `app.MapControllers();`。跑起来后,你会发现访问 `http://localhost:5000/api/tool?code=Console.WriteLine("Hello");&lang=csharp` 就能得到结果。

三、 EMLOG 模板集成:让它跑起来

有了接口,怎么给零点博客用?修改你的 EMLOG 主题模板。假设你想在文章底部加个工具栏:

<div class="emlog-online-tool">
    <h3>在线代码预览</h3>
    <textarea id="tool-input" placeholder="在此粘贴代码..."></textarea>
    <button onclick="previewCode()">生成预览</button>
    <div id="tool-output"></div>
</div>

<script>
function previewCode() {
    var code = document.getElementById('tool-input').value;
    var lang = 'csharp';
    var url = 'http://你的C#服务地址/api/tool';

    fetch(url + '?code=' + encodeURIComponent(code) + '&lang=' + lang)
        .then(response => response.json())
        .then(data => {
            if(data.success) {
                document.getElementById('tool-output').innerHTML = data.data;
            }
        });
}
</script>

这一步非常关键,将 C# 的后端逻辑通过 Ajax 优雅地注入到 EMLOG 的前端。这就完成了从建站开发到功能落地的闭环。

四、 总结与避坑

通过这套方案,我们并没有去重写一套 CMS,而是把在线工具开发作为一个独立模块挂载在站点上。这种“微服务化”的思维,非常适合 EMLOG 用户。

在部署时,一定要把 C# 服务端口映射出来,或者直接部署到有公网 IP 的服务器上。当然,别忘了做跨域处理(CORS),不然浏览器会拦住请求。

希望这篇干货能帮到各位站长,如果你的站点也缺个趁手的工具,不妨试着动动手!