本文介绍一种在react应用中基于标题生成seo友好的slug的函数slugify。 该函数避免使用容易泄露信息的数据库id作为url的一部分,而是利用文章标题生成更易于理解和搜索引擎优化的url。

文章指出,直接使用数据库ID(_id)作为URL会暴露原始数据,不利于SEO。而使用slug(基于标题生成的URL片段)则能改善URL的可读性和搜索引擎优化效果。
以下代码片段展示了slugify函数的核心逻辑,以及辅助函数format和getsaferegexpstring:
<code class="javascript">function getsaferegexpstring(input) {
return input.split("").map((char) => `\${char}`).join("");
}
import { remove as stripaccents} from 'diacritics';
function format(input, delimiter, ignoreinvalid = false) {
const harmonized = stripaccents(input).trim().toLowerCase();
const safedelimiter = getsaferegexpstring(delimiter);
if (ignoreinvalid) {
return harmonized.replace(/s+/g, delimiter);
}
return harmonized
.replace(new RegExp(`[^a-z0-9\u0900-\u097f${safedelimiter}]+`, "g"), delimiter)
.replace(new RegExp(`${safedelimiter}+`, "g"), delimiter)
.replace(new RegExp(`^${safedelimiter}`, "g"), "")
.replace(new RegExp(`${safedelimiter}$`, "g"), "");
};
export default function slugify(node, options = { delimiter: "-", prefix: "" }) {
if (!options.delimiter) options.delimiter = "-";
if (!options.prefix) options.prefix = "";
if (!node || typeof node === "boolean") {
return "";
}
const { delimiter, prefix } = options;
if (typeof node === "boolean") {
return "";
}
if (typeof node === "string" || typeof node === "number") {
const harmonizedPrefix = format(prefix, delimiter, true);
const harmonizedNode = format(String(node), delimiter);
if (harmonizedPrefix) {
return `${harmonizedPrefix}${delimiter}${harmonizedNode}`;
}
return harmonizedNode;
}
if ("children" in node) {
return slugify(node.children);
}
if ("type" in node) return slugify(node.props.children, options);
if (Symbol.iterator in node) {
return slugify(
Array.from(node)
.map((subNode) => slugify(subNode, { delimiter }))
.join(delimiter),
options
);
}
return "";
};</code>getsaferegexpstring函数用于转义特殊字符,format函数使用diacritics包去除变音符号,并对输入进行规范化处理,最终生成slug。slugify函数则根据输入节点类型递归处理,最终生成完整的slug。 该函数支持自定义分隔符和前缀。
以上就是在React中使用标题创建slug的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号