欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript庫urlcat?之URL構(gòu)建器庫

 更新時間:2022年02月17日 11:30:24   作者:杭州程序員張張  
這篇文章主要介紹了JavaScript庫urlcat之URL構(gòu)建器庫,urlcat?是一個小型的JavaScript庫,使構(gòu)建URL非常方便并防止常見錯誤。下文來看對其詳細介紹吧,需要的小伙伴可以參考一下

urlcat 是一個小型的 JavaScript 庫,它使構(gòu)建 URL 非常方便并防止常見錯誤;

特性:

  • 友好的 API
  • 無依賴
  • 壓縮后0.8KB大小
  • 提供TypeScript類型

1.作用

在調(diào)用 HTTP API 時,通常需要在 URL 中添加動態(tài)參數(shù):

const API_URL = 'https://api.example.com/';

function getUserPosts(id, blogId, limit, offset) {
? const requestUrl = `${API_URL}/users/${id}/blogs/${blogId}/posts?limit=${limit}&offset=${offset}`;
? // send HTTP request
}

正如你所看到的,這個最小的例子已經(jīng)很難閱讀了。這也是不正確的:

  • 我忘記了 API_URL 常量末尾有一個斜杠,所以這導致了一個包含重復斜杠的URL(https://api.example.com//users)
  • 嵌入的值需要使用 encodeURIComponent 進行轉(zhuǎn)義

我可以使用內(nèi)置的 URL 類來防止重復的斜杠和 URLSearchParams 來轉(zhuǎn)義查詢字符串。但我仍然需要手動轉(zhuǎn)義所有路徑參數(shù)。

const API_URL = 'https://api.example.com/';

function getUserPosts(id, blogId, limit, offset) {
? const escapedId = encodeURIComponent(id);
? const escapedBlogId = encodeURIComponent(blogId);
? const path = `/users/${escapedId}/blogs/${escapedBlogId}`;
? const url = new URL(path, API_URL);
? url.search = new URLSearchParams({ limit, offset });
? const requestUrl = url.href;
? // send HTTP request
}

如此簡單的任務,卻又很難讀,寫也很乏味!這是這個小型庫可以幫助您的地方:

const API_URL = 'https://api.example.com/';

function getUserPosts(id, limit, offset) {
? const requestUrl = urlcat(API_URL, '/users/:id/posts', { id, limit, offset });
? // send HTTP request
}

這個庫會這樣處理:

  • 轉(zhuǎn)義所有參數(shù)
  • 將所有部分連接起來(它們之間總是正好有一個 / 和 ?)

2.使用方法

目前,該軟件包通過 npm 分發(fā)。 (Zip 下載和 CDN 即將推出)。

npm install --save urlcat

在Node.js中使用

官方支持 Node 10 及更高版本。由于代碼在內(nèi)部使用 URL 和 URLSearchParams 類,它們在 v10 以下不可用,因此我們無法支持這些版本。

要構(gòu)建完整的 URL(最常見的用例):

const urlcat = require('urlcat').default;

要使用任何一個實用函數(shù):

const { query, subst, join } = require('urlcat');

要使用所有導出的函數(shù):

const { default: urlcat, query, subst, join } = require('urlcat');

在Typescript中使用

官方支持 TypeScript 2.1 及更高版本。

要構(gòu)建完整的 URL(最常見的用例):

import urlcat from 'urlcat';

要使用任何一個實用函數(shù):

import { query, subst, join } from 'urlcat';

要使用所有導出的函數(shù):

import urlcat, { query, subst, join } from 'urlcat';

在Deno中使用

import urlcat from 'https://deno.land/x/urlcat/src/index.ts';

console.log(urlcat('https://api.foo.com', ':name', { id: 25, name: 'knpwrs' }));

3.API

ParamMap:具有字符串鍵的對象

例如:{ firstParam: 1, 'second-param': 2 } 是一個有效的 ParamMap。

urlcat:構(gòu)建完整的 URL

function urlcat(baseUrl: string, pathTemplate: string, params: ParamMap): string
function urlcat(baseUrl: string, pathTemplate: string): string
function urlcat(baseTemplate: string, params: ParamMap): string

例如:

urlcat('https://api.example.com', '/users/:id/posts', { id: 123, limit: 10, offset: 120 })
→ 'https://api.example.com/users/123/posts?limit=10&offset=120'
urlcat('http://example.com/', '/posts/:title', { title: 'Letters & "Special" Characters' })
→ 'http://example.com/posts/Letters%20%26%20%22Special%22%20Characters'
urlcat('https://api.example.com', '/users')
→ 'https://api.example.com/users'
urlcat('https://api.example.com/', '/users')
→ 'https://api.example.com/users'
urlcat('http://example.com/', '/users/:userId/posts/:postId/comments', { userId: 123, postId: 987, authorId: 456, limit: 10, offset: 120 })
→ 'http://example.com/users/123/posts/987/comments?authorId=456&limit=10&offset=120'

query:構(gòu)建查詢字符串

使用指定的鍵值對構(gòu)建查詢字符串。鍵和值被轉(zhuǎn)義,然后由 '&' 字符連接。

例如:

paramsresult
{}''
{ query: 'some text' }'query=some%20text'
{ id: 42, 'comment-id': 86 }'id=42&comment-id=86'
{ id: 42, 'a name': 'a value' }'id=42&a%20name=a%20value'

subst:替換路徑參數(shù)

用模板字符串中的值替換參數(shù)。模板可能包含 0 個或多個參數(shù)占位符。占位符以冒號 (:) 開頭,后跟只能包含大寫或小寫字母的參數(shù)名稱。在模板中找到的任何占位符都將替換為 params 中相應鍵下的值。

例如:

templateparamsresult
':id'{ id: 42 }'42'
'/users/:id'{ id: 42 }'/users/42'
'/users/:id/comments/:commentId'{ id: 42, commentId: 86 }'/users/42/comments/86'
'/users/:id'{ id: 42, foo: 'bar' }'/users/42'

join:使用一個分隔符連接兩個字符串

僅使用一個分隔符連接兩個部分。如果分隔符出現(xiàn)在 part1 的末尾或 part2 的開頭,則將其刪除,然后使用分隔符連接兩個部分。

例如:

part1separatorpart2result
'first'',''second''first,second'
'first,'',''second' 
'first'','',second' 
'first,'','',second' 

到此這篇關于JavaScript庫urlcat 之URL構(gòu)建器庫的文章就介紹到這了,更多相關JavaScript URL構(gòu)建器庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 談談我對JavaScript DOM事件的理解

    談談我對JavaScript DOM事件的理解

    DOM與事件是JavaScript最核心的組成部分之一,他們賦予了頁面無限的想象空間,你根本無法離開他們,否則js將寸步難行。本文給大家分享我對javascript dom事件的了解,對javascript dom事件相關知識感興趣的朋友一起學習吧
    2015-12-12
  • 使用JS監(jiān)聽鍵盤按下事件(keydown event)

    使用JS監(jiān)聽鍵盤按下事件(keydown event)

    這篇文章主要介紹了使用JS監(jiān)聽鍵盤按下事件(keydown event),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • javascript 具名函數(shù)的四種調(diào)用方式 推薦

    javascript 具名函數(shù)的四種調(diào)用方式 推薦

    看四種方式執(zhí)行結(jié)果沒有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時可能會讓你有些失望。
    2009-07-07
  • 利用JavaScript制作一個酷炫的3D圖片演示

    利用JavaScript制作一個酷炫的3D圖片演示

    對于學前端的小伙伴來說,吸引你們?nèi)肟拥拇蠖际且恍╈趴岬捻撁妗1疚膶⒂肑avaScript編寫一個酷炫的3D圖片演示效果,感興趣的可以了解一下
    2022-03-03
  • 微信小程序?qū)崿F(xiàn)留言板功能

    微信小程序?qū)崿F(xiàn)留言板功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)留言板功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 靈活的理解JavaScript中的this指向

    靈活的理解JavaScript中的this指向

    this是JavaScript中的關鍵字之一,在編寫程序的時候經(jīng)常會用到,正確的理解和使用關鍵字this尤為重要。接下來通過本文給大家介紹javascript中的this,需要的朋友參考下吧
    2016-02-02
  • 很棒的一組js圖片輪播特效

    很棒的一組js圖片輪播特效

    這篇文章主要為大家分享了一款很棒的js組輪播特效,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • javascript適配器模式和組合模式原理與實現(xiàn)方法詳解

    javascript適配器模式和組合模式原理與實現(xiàn)方法詳解

    這篇文章主要介紹了javascript適配器模式和組合模式原理與實現(xiàn)方法,結(jié)合實例形式詳細分析了javascript適配器模式與組合模式相關原理、功能、實現(xiàn)方法與注意事項,需要的朋友可以參考下
    2023-07-07
  • JS遍歷樹層級關系實現(xiàn)原理解析

    JS遍歷樹層級關系實現(xiàn)原理解析

    這篇文章主要介紹了JS遍歷樹層級關系實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • javascript的BOM匯總

    javascript的BOM匯總

    本文給大家匯總了一些javascript的BOM相關方法,有需要的小伙伴可以參考下。
    2015-07-07

最新評論