` 序列化片段內容 |
| `fragment.length` | `this.children.length` |
| `fragment._children(...args)` | 逐一新增每個引數作為子節點 |
| `fragment._child(value)` | 新增一個值(或值陣列);字串/數字轉為文字節點 |
## 範例
在同一個清單上串接子元素、class 與屬性設定,再讀回結果。
```demo
```
---
Source: https://renderjs.pardn.io/zh/api-reference-html-element.md
# HTMLElement 與連結擴充
`HTMLElement.prototype` 的版面與捲動工具,以及 `HTMLLinkElement.prototype` 的導覽工具。
## HTMLElement
原始碼:`src/prototype/HTMLElement.ts`
| 方法/屬性 | 說明 |
| --- | --- |
| `el._display(value)` | 鏈式 `style.display = value` |
| `el.width(v)` / `height(v)` / `paddingTop(v)` / `paddingLeft(v)` / `paddingBottom(v)` / `paddingRight(v)` / `marginTop(v)` / `marginLeft(v)` / `marginBottom(v)` / `marginRight(v)` | 鏈式數值型樣式設定;純數字/數字字串會自動補上 `px` |
| `el.padding(top, right?, bottom?, left?)` / `el.margin(...)` | CSS 簡寫式鏈式設定(1–4 個引數,回退規則與 CSS `padding`/`margin` 屬性相同)|
| `el.scrollToX(value, animation?)` / `el.scrollToY(value, animation?)` | 捲動至絕對位置(會限制在內容邊界內),可選擇 `behavior: "smooth"` |
| `el.scrollToT(animation?)` / `el.scrollToB(animation?)` | 捲動至頂部/底部邊緣 |
| `el.scrollToL(animation?)` / `el.scrollToR(animation?)` | 捲動至左側/右側邊緣 |
## HTMLLinkElement
原始碼:`src/prototype/HTMLLinkElement.ts`
| 方法 | 說明 |
| --- | --- |
| `a._go(href?)` | 鏈式:設定 `href`(若有給定)並在目前分頁導航(`target = "_self"`)|
| `a._open(href?)` | 鏈式:設定 `href`(若有給定)並在新分頁導航(`target = "_blank"`)|
## 範例
數值設定會自動補 `px`;`padding` 依 CSS 簡寫規則展開。
```demo
box
```
---
Source: https://renderjs.pardn.io/zh/api-reference-array-object.md
# Array 與 Object 擴充
`Array.prototype` 與 `Object.prototype` 新增的負索引存取、聚合與存在判斷。
## Array
原始碼:`src/prototype/Array.ts`
| 方法/屬性 | 說明 |
| --- | --- |
| `arr.$sum` | 透過 `reduce` 計算數值陣列總和 |
| `arr.$shuffle` | 原地 Fisher–Yates 洗牌;回傳 `this` |
| `arr.$map` | 每個項目的 `value → index` 組成的 `Map` |
| `arr._(value, index?)` | 支援負索引的插入(`splice`);省略 `index` 時附加至末尾 |
| `arr.$(index)` | 支援負索引的讀取 |
| `arr.$i(target)` | `indexOf(target)`,找不到時回傳 `undefined` 而非 `-1` |
| `arr.$_(index)` | 支援負索引的移除(`splice`)|
| `arr.$$(target?)` | 無參數時判斷非空,有參數時判斷 `target` 是否存在 |
| `arr.$req(body)` | 將陣列以 `/` 串接為 URL 路徑片段,再對該路徑呼叫 `$req` |
## Object
原始碼:`src/prototype/Object.ts`(擴充 `Object.prototype`,故適用於純物件)
| 方法/屬性 | 說明 |
| --- | --- |
| `obj.length` | `Object.keys(this).length` |
| `obj.$keys` / `obj.$values` | `Object.keys(this)` / `Object.values(this)` |
| `obj.$map` | 自身可列舉屬性組成的 `Map` |
| `obj.forEach(cb)` | 類陣列迭代:對自身可列舉屬性執行 `cb(key, value)` |
| `obj._(key, value, replace = true)` | 條件式設定——僅當 `replace` 為 `true` 時才覆蓋已存在的鍵 |
| `obj.$$(key?)` | 有 `key` 時為 `hasOwnProperty(key)`,否則為 `this.length > 0` |
## 範例
負索引從尾端計算;`obj._` 在 `replace = false` 時保留既有值。
```demo
```
---
Source: https://renderjs.pardn.io/zh/api-reference-map-form.md
# Map 與表單資料擴充
`Map` 的鏈式工具,以及 `FormData` 與 `
```
---
Source: https://renderjs.pardn.io/zh/api-reference-url.md
# URL 擴充
RenderJS 為 `URL.prototype` 加入的請求、瀏覽紀錄與 query string 方法。
## URL
原始碼:`src/prototype/URL.ts`
| 方法/屬性 | 說明 |
| --- | --- |
| `url.$queryAll` | 解析後的 query string 物件 |
| `url.$image` | 回傳預先載入該 URL 圖片的 Promise |
| `url.$$200(isImg = false)` | fetch 該 URL;若回應為圖片,轉換為 object-URL blob(`{ src, img }`),除非是 SVG 且 `isImg` 為假 |
| `url.$req(body, once = false)` | fetch 封裝:JSON 或 `FormData` body(透過 `body.json`/`body.files`/`body.tag`)、自訂 `header`/`credentials`、以共用 `Map`(以 URL 為 key)去重請求、自動 JSON/文字回應解析,4xx/5xx 時以回應文字 reject |
| `url.$$query(key)` | `searchParams.get(key)` |
| `url._history(title?)` | 對此 URL 執行 `pushState`,記錄至記憶體中的歷史堆疊,可選擇同步設定 `document.title` |
| `url._query(obj)` | 回傳一個**新** `URL`,將 `obj` 的鍵合併進現有 query string |
| `url.__history(title?)` | 對此 URL 執行 `replaceState`(同步更新歷史堆疊)|
| `url.__query(obj)` | 回傳一個**新** `URL`,query string 整個由 `obj` 取代 |
| `url.query_(keys)` | 回傳一個**新** `URL`,移除指定的鍵(單一或陣列)|
| `url.query__()` | 回傳一個**新** `URL`,query string 已清空 |
## 範例
查詢字串方法回傳新的 `URL`;`$req` 依 `Content-Type` 解析回應,4xx/5xx 時以回應文字 reject。預覽在 `location.origin` 為 `null` 的 `about:srcdoc` 框架中執行,因此以 `document.baseURI` 解析路徑;一般頁面直接寫 `"/llms.txt".$req()` 即可。
```demo
```
---
Source: https://renderjs.pardn.io/zh/api-reference-window.md
# 全域函式
RenderJS 掛在 `window` 上的函式:listener 啟用、檔案讀取、cookie 與 `document.body` 捷徑。
## window
原始碼:`src/prototype/window.ts`
| 方法 | 說明 |
| --- | --- |
| `_Listener(target?)` | 無參數時同時啟用 lazyload 與 SVG 兩個 observer。有參數時,`target.svg` 決定是否啟用 lazyload observer,`target.lazyload` 決定是否啟用 SVG observer(observer 內部實作見 [Listener 系統](/zh/listener-system))|
| `$file(file)` | 以 `FileReader.readAsDataURL` 包裝 `File`/`Blob`,於 `load` 事件時 resolve |
| `$cookie(key)` | 讀取並 URI 解碼 cookie;若值看起來像 JSON 會自動 `JSON.parse` |
| `_cookie(key, body, expire = 3600)` | 寫入 cookie(`expire` 單位為秒);物件會先 `JSON.stringify` |
| `$(selector)` | 模組層級的 `"selector".$` 捷徑 |
| `$all(selector)` | 模組層級的 `"selector".$all` 捷徑 |
| `_child(value, before)` / `__child(value)` | 新增至/取代 `document.body` 的子節點 |
## 範例
`_child` 附加到 `document.body`,`__child` 取代其所有子節點。
```demo
```
---
Source: https://renderjs.pardn.io/zh/api-reference-date-time.md
# Date 與 Number 擴充
`Date.prototype` 的日期欄位 getter、`$format` 格式化與相對時間,以及 `Number.prototype` 的時間戳與隨機鍵工具。
## Date
原始碼:`src/prototype/Date.ts`
| 方法/屬性 | 說明 |
| --- | --- |
| `date.$y` / `$yy` / `$yyyy` | 年(原始、兩位數、四位數)|
| `date.$M` / `$MM` | 月,從 1 起算(原始、補零)|
| `date.$D` / `$DD` | 日(原始、補零)|
| `date.$d` / `$dd` / `$ddd` / `$dddd` | 星期:索引,接著依長度遞增的本地化名稱(英文縮寫或 `zh` locale 的「星期X」,依 `navigator.language` 偵測)|
| `date.$H` / `$HH` | 24 小時制時(原始、補零)|
| `date.$h` / `$hh` | 12 小時制時(原始、補零)|
| `date.$a` / `$A` | `am`/`pm`(小寫/大寫)|
| `date.$m` / `$mm` | 分(原始、補零)|
| `date.$s` / `$ss` | 秒(原始、補零)|
| `date.$S` / `$SS` / `$SSS` | 毫秒,取 1/2/3 位數 |
| `date.$timestamp` | Unix 秒級時間戳 |
| `date.$gone` | 人性化相對時間(`"3 days"`/`"3天"`、`"Coming in..."`/`"還有..."`,未滿 1 分鐘為 `"recent"`/`"剛剛"`),依 `navigator.language` 本地化 |
| `date.$format(format = "yyyy/MM/DD (ddd) HH:mm:ss")` | Token 式格式化;支援上表列出重複次數的 `Y`/`M`/`D`/`H`/`h`/`m`/`s`/`S`/`A`/`a`/`d` token |
| `date.$date(body?)` | 依 `{ start }`/`{ end }`/`{ pre: { start } }`/`{ pre: { end } }` 回傳當月或上個月的第一天/最後一天;否則回傳 `new Date()` |
## Number
原始碼:`src/prototype/Number.ts`
| 方法/屬性 | 說明 |
| --- | --- |
| `n.$uniKey` | 長度為 `n` 的隨機字串,取自 52 字元字母表,在該行程生命週期內去重 |
| `n.$ASCII` | `String.fromCharCode(n)` |
| `n.$date` | 將 `n` 視為 Unix 秒級時間戳,回傳對應的 `Date` |
| `n.$y` / `$M` / `$D` / `$d` / `$H` / `$h` / `$a` / `$A` / `$m` / `$s` / `$S`(及其補零/重複變體)/ `$gone` | 轉發至 `n.$date` 對應的 `Date` getter |
| `n.$format(format)` | 轉發至 `n.$date.$format(format)` |
## 範例
日期欄位取自本地時間;`$gone` 與星期名稱依 `navigator.language` 而定。
```demo
```
---
Source: https://renderjs.pardn.io/zh/api-reference-media.md
# Image、File 與 Video 擴充
`Image` 的剪貼簿、下載與重新編碼,`File` 的縮圖擷取,以及 `