diff --git a/.github/workflows/wangdoc.yml b/.github/workflows/wangdoc.yml index 8ba69af..5f718e6 100644 --- a/.github/workflows/wangdoc.yml +++ b/.github/workflows/wangdoc.yml @@ -10,27 +10,27 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: persist-credentials: false - name: Setup Node.js - uses: actions/setup-node@main + uses: actions/setup-node@v4 with: - node-version: '14' + node-version: 'latest' - name: Install dependencies run: npm install - name: Build pages run: npm run build - name: Deploy to website - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: JamesIves/github-pages-deploy-action@v4 with: - GIT_CONFIG_NAME: wangdoc-bot - GIT_CONFIG_EMAIL: yifeng.ruan@gmail.com - REPOSITORY_NAME: wangdoc/website - ACCESS_TOKEN: ${{ secrets.WANGDOC_BOT_TOKEN }} - BASE_BRANCH: master - BRANCH: master # The branch the action should deploy to. - FOLDER: dist # The folder the action should deploy. - TARGET_FOLDER: dist/webapi - CLEAN: true # Automatically remove deleted files from the deploy branch - COMMIT_MESSAGE: update from Web API tutorial + git-config-name: wangdoc-bot + git-config-email: yifeng.ruan@gmail.com + repository-name: wangdoc/website + token: ${{ secrets.WANGDOC_BOT_TOKEN }} + branch: master # The branch the action should deploy to. + folder: dist # The folder the action should deploy. + target-folder: dist/webapi + clean: true # Automatically remove deleted files from the deploy branch + commit-message: update from WebAPI tutorial + diff --git a/README.md b/README.md index b08393e..af6b8b9 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Web API 教程,提供各种浏览器 API 文档,正在建设中。 +Web API 文档,记录浏览器原生的各种 API 对象,正在建设中。 diff --git a/chapters.yml b/chapters.yml index fd36abe..39dabaa 100644 --- a/chapters.yml +++ b/chapters.yml @@ -2,12 +2,21 @@ - clipboard.md: Clipboard API - fetch.md: Fetch API - fontface.md: FontFace API +- formdata.md: FormData 对象 - geolocation.md: Geolocation API +- headers.md: Headers 对象 - intersectionObserver.md: IntersectionObserver - intl-relativetimeformat.md: Intl.RelativeTimeFormat +- intl-segmenter.md: Intl.Segmenter API - page-lifecycle.md: Page Lifecycle API - page-visibility.md: Page Visibility API +- request.md: Request API +- response.md: Response API - server-sent-events.md: Server-Sent Events - svg.md: SVG 图像 +- url.md: URL 对象 +- urlpattern.md: URL Pattern API +- urlsearchparams.md: URLSearchParams 对象 - websocket.md: WebSocket - web-share-api.md: Web Share API +- postmessage.md: window.postMessage() 方法 diff --git a/docs/canvas.md b/docs/canvas.md index 3594216..9c211eb 100644 --- a/docs/canvas.md +++ b/docs/canvas.md @@ -315,9 +315,10 @@ var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); var text1 = ctx.measureText('Hello world'); -text.width // 49.46 +text1.width // 49.46 ctx.font = 'Bold 20px Arial'; +var text2 = ctx.measureText('Hello world'); text2.width // 107.78 ``` @@ -790,7 +791,7 @@ function blobToImg(blob) { var newImg = document.createElement('img'); var url = URL.createObjectURL(blob); - newImg.onload = functio () { + newImg.onload = function () { // 使用完毕,释放 URL 对象 URL.revokeObjectURL(url); }; diff --git a/docs/fetch.md b/docs/fetch.md index 740c2fc..d1a9be0 100644 --- a/docs/fetch.md +++ b/docs/fetch.md @@ -6,15 +6,15 @@ ## 基本用法 -`fetch()`的功能与 XMLHttpRequest 基本相同,但有三个主要的差异。 +`fetch()`的功能与 XMLHttpRequest 基本相同,都是向服务器发出 HTTP 请求,但有三个主要的差异。 (1)`fetch()`使用 Promise,不使用回调函数,因此大大简化了写法,写起来更简洁。 (2)`fetch()`采用模块化设计,API 分散在多个对象上(Response 对象、Request 对象、Headers 对象),更合理一些;相比之下,XMLHttpRequest 的 API 设计并不是很好,输入、输出、状态都在同一个接口管理,容易写出非常混乱的代码。 -(3)`fetch()`通过数据流(Stream 对象)处理数据,可以分块读取,有利于提高网站性能表现,减少内存占用,对于请求大文件或者网速慢的场景相当有用。XMLHTTPRequest 对象不支持数据流,所有的数据必须放在缓存里,不支持分块读取,必须等待全部拿到后,再一次性吐出来。 +(3)`fetch()`通过数据流(Stream 对象)处理数据,可以分块读取,有利于提高网站性能表现,减少内存占用,对于请求大文件或者网速慢的场景相当有用。XMLHttpRequest 对象不支持数据流,所有的数据全部放在缓存里,不支持分块读取,必须等待全部获取后,再一次性读取。 -在用法上,`fetch()`接受一个 URL 字符串作为参数,默认向该网址发出 GET 请求,返回一个 Promise 对象。它的基本用法如下。 +用法上,`fetch()`接受一个 URL 字符串作为参数,默认向该网址发出 GET 请求,返回一个 Promise 对象。它的基本用法如下。 ```javascript fetch(url) @@ -31,7 +31,7 @@ fetch('https://api.github.com/users/ruanyf') .catch(err => console.log('Request Failed', err)); ``` -上面示例中,`fetch()`接收到的`response`是一个 [Stream 对象](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API),`response.json()`是一个异步操作,取出所有内容,并将其转为 JSON 对象。 +上面示例中,`fetch()`接收到的`response`是一个 [Stream 对象](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API),里面的数据本例是 JSON 数据,所以使用`response.json()`方法,将其转为 JSON 对象。它是一个异步操作,返回一个 Promise 对象。 Promise 可以使用 await 语法改写,使得语义更清晰。 @@ -49,7 +49,7 @@ async function getJSON() { 上面示例中,`await`语句必须放在`try...catch`里面,这样才能捕捉异步操作中可能发生的错误。 -后文都采用`await`的写法,不使用`.then()`的写法。 +后文都采用`await`的写法,不再使用`.then()`的写法。 ## Response 对象:处理 HTTP 回应 @@ -96,9 +96,9 @@ async function fetchText() { `Response.type`属性返回请求的类型。可能的值如下: - `basic`:普通请求,即同源请求。 -- `cors`:跨域请求。 +- `cors`:跨源请求。 - `error`:网络错误,主要用于 Service Worker。 -- `opaque`:如果`fetch()`请求的`type`属性设为`no-cors`,就会返回这个值,详见请求部分。表示发出的是简单的跨域请求,类似`