NodeJS常用包介绍--slash

NPM 地址

https://www.npmjs.com/package/slash

Github 地址

https://github.com/sindresorhus/slash

版本

2.0.0

安装

npm install slash

简介

用于转换 Windows 反斜杠路径转换为正斜杠路径 \ => /

正斜杠在 Windows 上是可用的,因为 Windows API 会自动将 / 转换为 \。但是如果路径为扩展长度路径(“\?\”前缀),或包含非 Ascii 字符,则不会适用于Windows。

什么是扩展长度路径(extended-length paths)
在 Windows 系统中,文件路径的最大长度为 MAX_PATH,默认为 260 个字符。但是 Windows API 中有些函数,具有 unicode 版本,以允许扩张路径长度,最大长度为 32767 个字符。要指定扩展长度路径,需要使用 \\?\ 作为前缀,例如:\\?\C:\长路径
具体内容看这里

API

slash(path: string): string

const path = require('path');
const slash = require('slash');

const str = path.join('foo', 'bar');
slash(str);
// Unix   => foo/bar
// Windows => foo/bar

源码解析

全部源码:

'use strict';
module.exports = input => {
    // 判断是否是扩展长度路径
    const isExtendedLengthPath = /^\\\\\?\\/.test(input);
    // 判断输入中是否包含非 Ascii 字符
    const hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex

    // 如果包含非 Ascii 字符并且是扩展长路径,则直接返回输入
    if (isExtendedLengthPath || hasNonAscii) {
        return input;
    }

    // 替换输入中的 \ 为 /
    return input.replace(/\\/g, '/');
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,483评论 0 5
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,600评论 1 92
  • 去年有段时间得空,就把谷歌GAE的API权威指南看了一遍,收获颇丰,特别是在自己几乎独立开发了公司的云数据中心之后...
    骑单车的勋爵阅读 20,711评论 0 41
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342