从采集到展示:零点博客实战C#解析EMLOG数据,构建前端交互工具
大家好,我是零点博客的技术博主。最近在优化博客后台的前端开发体验时,突发奇想,能不能写个工具把以前EMLOG积累的历史数据重新利用起来?于是我尝试用C#结合MySQL,做了一个轻量级的数据采集与展示工具。整个过程走了不少弯路,今天就来给大伙复盘一下。
一、后端逻辑:C#与MySQL的“安全”握手
首先,我们要确保从MySQL读取数据是安全的。很多新手喜欢直接拼接SQL字符串,这可是SQL注入的重灾区。
// 连接EMLOG数据库示例
string connectionString = "Server=localhost;Database=emlog;User=root;Password=***;";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
string sql = "SELECT title, content FROM emlog_article WHERE cid = @cid";
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
// 关键点:使用参数化查询防止SQL注入
cmd.Parameters.AddWithValue("@cid", 1);
conn.Open();
// 执行查询逻辑...
}
}
在零点博客的实操中,我特意强调了参数化查询。一旦数据库结构变更,或者是有人恶意传入参数,预处理语句能牢牢守住数据安全的大门。
二、数据处理:正则与JSON的实战
EMLOG生成的文章内容是转义后的HTML,前端直接展示很乱。我们需要用正则表达式把正文提取出来,再转化为JSON格式方便传输。
// 提取纯文本内容的正则
string pattern = @"(.*?)
";
Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(htmlContent);
// 构建JSON对象
var result = new {
title = "历史文章标题",
excerpt = matches[0].Value // 取第一段作为摘要
};
string jsonOutput = JsonConvert.SerializeObject(result);
这里有个坑:正则写得太宽泛会匹配到脚本标签。实战中一定要限定范围,比如只匹配 `class="post-content"` 里面的内容。
三、前端实现:HTML/CSS/JS的动态渲染
后端搞定数据后,就是前端开发的舞台了。我们用原生JS通过接口获取数据。
零点博客历史归档
// 调用C#接口
fetch('/api/getBlogData')
.then(response => response.json())
.then(data => {
const list = document.getElementById('blog-list');
// 动态生成列表
list.innerHTML = data.items.map(item => `
${item.title}
${item.excerpt}
`).join('');
});
四、避坑指南与底层拆解
1. 字符编码问题:在C#端查询MySQL时,一定要指定 `Connection Charset` 为 UTF-8,否则前端JS解析JSON时会乱码。这是新手最容易忽略的细节。 2. 接口超时:如果你的数据量大,尽量加上分页参数 `LIMIT 0, 10`,不要一次性把所有内容吐给前端,那样会导致浏览器卡顿。
通过这次实操,不仅复习了C#的数据库操作,更深入理解了接口开发与前端渲染的配合。如果你也在做类似的工具开发,欢迎在零点博客留言交流!



评论一下吧
取消回复