
node-slug 参数清单完整指南replacement、lower、remove 全选项与两种内置 mode 详解【免费下载链接】node-slugslugifies even utf-8 chars!项目地址: https://gitcode.com/gh_mirrors/no/node-slug本文是一份node-slug 参数清单完整指南面向需要用这款 Node.js slugify 工具把任意字符串转成 URL 友好 slug 的开发者。你将了解replacement、lower、remove等全部选项的作用与默认值并对比pretty与rfc3986两种内置 mode 的差异几分钟就能配置出理想的 slugify 行为。 快速上手1 分钟安装并完成第一次 slugify安装只需一行命令npm install slug然后直接调用const slug require(slug); slug(i ♥ unicode); // i-love-unicode slug(i ♥ unicode, _); // i_love_unicode slug(i ♥ unicode, { replacement: _ });// 与上一行完全等价第二个参数有两种写法直接传一个字符串等价于{ replacement }或传完整选项对象。实现见源码slug.js第 12–16 行。 node-slug 参数清单6 个选项 mode 一览参数作用pretty 默认值rfc3986 默认值replacement空格与分隔符的替换字符--lower结果是否统一转小写falsetrueremove额外删除字符的正则/[.]/g删掉所有句点null不删symbols是否转换 Unicode 符号♥ → lovetruetruecharmap单字符映射表可自定义扩展内置拉丁/希腊/俄语等同左multicharmap多字符映射表3→love、→and 等同左除这 6 个选项外清单的核心是mode参数——用来在两种内置模式之间切换。 replacement最常用的分隔符参数replacement决定原字符串中的空格和分隔符被替换成什么默认是-也可以换成下划线、空串或任意字符slug(foo bar baz, _); // foo_bar_baz slug(foo bar baz, ); // foobarbaz两条内置规则见slug.js第 64–66 行帮你省去手动处理连续的空格/分隔符会压缩成一个replacement不会产出--这类双分隔末尾的分隔符会被自动去掉结果不会以-结尾。 lower一个参数控制是否小写结果是否全部小写由lower决定两种模式的默认值不同模式lower默认效果示例prettyfalse保留原始大小写I-freaking-love-UNICODErfc3986true全部小写its-your-journey…在 pretty 模式下想强制小写传{ lower: true }即可官方测试用例test/slug.test.coffee第 226–234 行正好覆盖了这两种情况。✂️ remove用正则删除不想要的字符remove接收一个正则匹配到的字符会被直接删掉pretty模式默认为/[.]/g——句点默认全被删除包括省略号…转换出的...rfc3986模式默认为null句点等合法字符原样保留。想要更严格的“纯字母数字” slug 时可以自己传slug(Its your journey ... we guide you., { remove: /[^a-z]/gi });注意执行顺序remove在字符映射和符号转换之后生效见slug.js第 61 行所以它操作的是转换后的结果。 charmap / multicharmap / symbols三种映射能力charmap内置单字符映射表见slug.js第 81–166 行覆盖范围相当广拉丁文ß→ss、Æ→AE希腊文α→a、ψ→ps俄语ж→zh、ю→yu越南文、土耳其文、捷克文、波兰文等货币符号€→euro、¥→yen、元→yuan排版符号©→(c)、™→tm还可以随时扩展自己的映射slug.charmap[♥] freaking love;multicharmap多字符映射优先于 charmap 执行见slug.js第 76–78 行3→love、→and、||→or、w/→withslug(w/ 3 sugar || ☠); // with-love-and-sugar-or-skull-and-bonessymbolsUnicode 符号转换依赖内置 unicode 表♥→love、☢→radioactive、☯→yin-yang传{ symbols: false }可关闭关闭后这类符号会被直接移除。特别提醒NodeCommonJS下 symbols 默认开启浏览器script 标签 / AMD版本会自动关闭避免加载约 2MB 的 Unicode 符号表见slug.js第 189–209 行。⚖️ pretty 与 rfc3986两种内置 mode 怎么选mode用于切换两个预设定义在slug.js第 168–185 行对比项pretty默认rfc3986定位人类可读的友好 slug严格遵循 RFC 3986 URL 标准remove/[.]/g删除句点null不删除lowerfalse保留大小写true全部小写允许保留的符号_、~.、_、~适用场景文章标题、社交链接、SEO slug后端路由、API 路径、规范 URL一段对比最直观const text Its Your Journey We Guide You Through.; slug(text, { mode: pretty }); // Its-Your-Journey-We-Guide-You-Through slug(text, { mode: rfc3986 }); // its-your-journey-we-guide-you-through.❓ 常见问题Q1为什么 rfc3986 模式下句点被保留了因为.在 RFC 3986 中是合法的非保留字符该模式remove为null原样保留而 pretty 模式默认/[.]/g会把它删掉。Q2允许保留的字符白名单是什么slug.js第 60 行定义了白名单单词字符、空格、-、.、_、~。其余字符要么被映射转换要么被移除。Q3有命令行工具吗有。包内附带slug可执行入口见bin/slug.js全局安装后执行slug Hello World会直接输出以下划线分隔的结果。 文件资料清单核心源码slug.js完整流程选项合并 → 字符映射 → 分隔符替换 → 小写处理两种 mode 的预设定义slug.js第 168–185 行内置 charmap 映射表slug.js第 81–166 行选项合并逻辑slug.js第 12–25 行完整测试用例每个参数的行为都有示例test/slug.test.coffee快速上手示例与浏览器打包技巧README.md包信息版本、依赖、CLI 入口package.json【免费下载链接】node-slugslugifies even utf-8 chars!项目地址: https://gitcode.com/gh_mirrors/no/node-slug创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考