mm_html
v1.1.7
Published
这是超级美眉用于服务端解析html模块
Downloads
28
Readme
mm_html
这是超级美眉用于服务端解析html模块,可以通过jquery在后端nodejs解析html。
功能特点
- 基于 jsdom 和 jquery 实现服务端 HTML 解析
- 支持 HTML 与 JSON 的双向转换
- 提供丰富的标签配置选项
- 支持属性解析和保留
- 可自定义文本节点处理方式
安装
npm install mm_html快速开始
const Dom = require('mm_html');
// 创建实例
const dom = new Dom();
// HTML 转 JSON
const html = '<div class="container"><h1>Hello World</h1></div>';
const json = dom.toJson(html);
// JSON 转 HTML
const htmlStr = dom.toHtml(json);服务端 jQuery 操作
通过 toJQ 函数,您可以在服务端使用熟悉的 jQuery 语法来操作 DOM 元素:
const Dom = require('mm_html');
const dom = new Dom();
// HTML 字符串
const html = `
<div class="content">
<h1>标题</h1>
<p class="desc">这是一段描述</p>
<ul class="list">
<li>项目1</li>
<li>项目2</li>
</ul>
</div>`;
// 获取 jQuery 操作对象
var $ = dom.toJQ(html);
// 使用 jQuery 方法操作 DOM
$('.desc').text('更新后的描述');
$('.list').append('<li>新增项目</li>');
// 获取修改后的 HTML
const updatedHtml = $('body').html();
console.log(updatedHtml);通过 toJQ 函数,您可以:
- 在服务端使用所有标准的 jQuery 选择器和方法
- 动态修改 DOM 结构和内容
- 提取特定元素的信息
- 批量处理 HTML 元素
API 文档
Dom 类
构造函数
const dom = new Dom(config);参数
config(Object, 可选): 配置对象,包含以下标签配置:tags_text: 文本标签列表tags_col: 列标签列表tags_hp: 标题和段落标签列表tags_left: 自闭合标签列表tags_no: 不处理子元素的标签列表tags_only: 仅处理自身的标签列表tags_container: 容器标签列表
toJQ(html)
将 HTML 字符串转换为 jQuery 操作对象。
参数
html(String): HTML 字符串
返回值
- (Object): jQuery 操作对象
toJson(html)
将 HTML 字符串转换为 JSON 对象。
参数
html(String): HTML 字符串
返回值
- (Object): JSON 对象,包含以下属性:
tag: 标签名attr: 属性对象(可选)text: 文本内容(可选)sub: 子元素数组(可选)
toHtml(json, tab)
将 JSON 对象转换回 HTML 字符串。
参数
json(Object): JSON 对象tab(String, 可选): 缩进字符,默认为 "\t"
返回值
- (String): HTML 字符串
使用示例
基础示例
const Dom = require('mm_html');
const dom = new Dom();
// HTML 转 JSON
const html = `
<div class="breadcrum-bg py-sm-5 py-4">
<div class="container py-lg-3">
<h2>About Us</h2>
<p><a href="index.html">Home</a> / About</p>
</div>
</div>`;
const json = dom.toJson(html);
console.log(JSON.stringify(json, null, 2));
// JSON 转回 HTML
const htmlStr = dom.toHtml(json);
console.log(htmlStr);处理文件示例
const Dom = require('mm_html');
require('mm_expand'); // 用于文件操作
async function processHtmlFile(filePath) {
const dom = new Dom();
// 读取 HTML 文件
const text = filePath.loadText(__dirname + '/');
// 转换为 JSON
const json = dom.toJson(text);
// 保存 JSON 文件
'./output.json'.saveJson(json, true);
// 转换回 HTML 并保存
const str = dom.toHtml(json);
'./output.html'.saveText(str);
}
processHtmlFile('./input.html');注意事项
- 确保已安装所有依赖包:
jquery、jsdom和mm_expand - 处理大型 HTML 文件时注意内存使用
- 自定义配置时注意标签分类的合理性
许可证
ISC
