前言
在前端项目开发中,我们经常需要根据不同的 URI 判断出它们所使用的协议是 http 还是 https。在这个过程中,我们需要不停地写正则表达式进行判断,这可能会导致代码的冗长和难以维护。为此,我们可以使用 NPM 包 has-scheme 来解决这个问题。
has-scheme 简介
has-scheme 是一个用于检测 URI 是否有协议的 NPM 包,其功能非常简单且易于使用。通过使用这个包,我们可以很容易地判断一个 URI 是否符合协议的格式,从而避免了自己手动编写正则表达式的繁琐过程。
安装 has-scheme
要使用 has-scheme 包,我们需要先安装它。我们可以使用 npm
命令来进行安装:
npm install has-scheme --save
使用 has-scheme
安装完成后,我们就可以在项目中使用 has-scheme 来检测 URI 是否包含协议。首先,我们需要在代码中引入 has-scheme:
const hasScheme = require('has-scheme');
引入后,我们可以使用 has-scheme 提供的方法来检测 URI 是否包含协议。has-scheme 提供了两种方法:
hasScheme()
:判断 URI 是否有 http 或 https 协议hasCustomScheme()
:判断 URI 是否有自定义协议
例如,我们可以使用 hasScheme()
方法来检测一个 URI 是否有协议:
const url = 'https://www.example.com'; if (hasScheme(url)) { console.log('这个 URI 包含了 http 或 https 协议'); } else { console.log('这个 URI 不包含 http 或 https 协议'); }
输出结果将会是:
这个 URI 包含了 http 或 https 协议
我们也可以使用 hasCustomScheme()
方法来检测一个 URI 是否有自定义协议。这个方法需要传入要检测的 URI 和自定义协议的名称:
const url = 'myapp://page1'; const schemeName = 'myapp'; if (hasCustomScheme(url, schemeName)) { console.log(`这个 URI 包含了 ${schemeName} 协议`); } else { console.log(`这个 URI 不包含 ${schemeName} 协议`); }
输出结果将会是:
这个 URI 包含了 myapp 协议
深度学习 has-scheme
has-scheme 的源码非常简单,只有不到 40 行。如果我们想深入了解 has-scheme 的实现原理,可以先从阅读它的源码开始。
-- -------------------- ---- ------- -------- -------------- - ----- --------------- - ------ ----- --------------- - ----------------- ----- ------------------------- - ----------------------------- ------ - ------------------------- --- -- -- --------------- - ------------------------- -- --------------- --- -- -- - -------- -------------------- ----------- - ----- --------------- - ------ ----- -------------------------- - ------------------------------ ----- ------------------------- - ----------------------------- ------ - -------------------------- --- -- -- ------------------------- --- -- -- -------------------------- - ------------------------- -- - -------------- - - ---------- ---------------- --
从代码中我们可以看出,has-scheme 的实现原理就是判断传入的 URI 中是否包含了某个特定的字符串。如果包含了,就说明这个 URI 符合协议的格式;否则,就说明它不符合协议的格式。
总结
使用 has-scheme 包可以帮我们轻松地进行协议的格式判断,同时也能减少代码的冗长和难以维护。在实际项目中,如果需要检验 URI 是否符合协议的格式,我们推荐使用 npm 包 has-scheme。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562e481e8991b448e0776