溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Dojo 中間件簡(jiǎn)介

發(fā)布時(shí)間:2020-08-13 21:48:03 來源:網(wǎng)絡(luò) 閱讀:214 作者:blocklang 欄目:web開發(fā)

翻譯自:https://github.com/dojo/framework/blob/master/docs/en/middleware/introduction.md

Dojo 的中間件系統(tǒng)能以響應(yīng)式的方式管理異步或命令式 API,以及影響基于函數(shù)的組合部件或其他中間件的行為與屬性 API。

框架已提供了幾個(gè)核心中間件和可選中間件,應(yīng)用程序開發(fā)人員也可以輕松編寫自己的中間件。

功能 描述
響應(yīng)式 DOM 訪問 借助中間件,基于函數(shù)的部件可以處理和使用輸出節(jié)點(diǎn)對(duì)應(yīng)的 DOM 部分的具體信息和 API。
控制部件渲染的生命周期 對(duì)任何組合部件,中間件可以控制 Dojo 渲染管道的各個(gè)部分,如當(dāng)需要更新渲染時(shí)讓部件失效。也可以暫停和繼續(xù)部件的渲染,在等待關(guān)鍵信息可以使用時(shí),短路渲染結(jié)果。
框架提供了一些中間件 Dojo 提供了一些中間件,能讓部件實(shí)現(xiàn)很多功能,如響應(yīng)和控制焦點(diǎn)、簡(jiǎn)單的緩存值、響應(yīng)元素的交叉事件和大小變化事件、CSS 主題、國(guó)際化和構(gòu)建時(shí)渲染等。
易于組合和復(fù)用 中間件的設(shè)計(jì)是與基于函數(shù)的部件緊密結(jié)合的,中間件能組合到部件的層次結(jié)構(gòu)中,并且在開發(fā)自定義中間件時(shí)也可復(fù)用中間件

基本用法

創(chuàng)建中間件

  • 定義基于函數(shù)部件的 create() 也可以用于定義中間件
  • 定義一個(gè)屬性接口(可選),以擴(kuò)充使用了此中間件的部件的屬性接口。當(dāng)創(chuàng)建組合部件實(shí)例時(shí)傳入這些屬性值
  • 返回一個(gè)簡(jiǎn)單的函數(shù)引用,該函數(shù)定義了中間件的 API,供其他組合部件或中間件使用

src/middleware/myMiddleware.ts

import { create } from '@dojo/framework/core/vdom';

const factory = create().properties<{ middlewareProp?: boolean }>();

export const myMiddleware = factory(({ properties }) => {
    return () => {
        return properties().middlewareProp ? 'Conditional is true' : 'Conditional is false';
    };
});

export default myMiddleware;

組合中間件

  • 組合中間件并返回一個(gè)對(duì)象以公開更復(fù)雜的 API
  • 使用核心的 invalidator 中間件將組合部件標(biāo)記為需要重新渲染

src/middleware/myComposingMiddleware.ts

import { create, invalidator } from '@dojo/framework/core/vdom';
import myMiddleware from './myMiddleware';

const factory = create({ myMiddleware, invalidator });

export const myComposingMiddleware = factory(({ middleware: { myMiddleware, invalidator } }) => {
    return {
        get() {
            return myMiddleware();
        },
        set() {
            invalidator();
        }
    };
});

export default myComposingMiddleware;

部件內(nèi)使用中間件

  • 用中間件使用的附加屬性來擴(kuò)充部件的屬性接口
  • 使用中間件組合成的部件時(shí),傳入中間件的屬性

src/widgets/MyWidget.tsx

import { create, tsx } from '@dojo/framework/core/vdom';
import myComposingMiddleware from '../middleware/myComposingMiddleware';

const factory = create({ myComposingMiddleware });

export default factory(function MyWidget({ properties, middleware: { myComposingMiddleware } }) {
    return (
        <virtual>
            <div>{`Middleware property value: ${properties.middlewareProp}`}</div>
            <div>{`Middleware usage: ${myComposingMiddleware.get()}`}</div>
        </virtual>
    );
});

src/main.tsx

import renderer, { tsx } from '@dojo/framework/core/vdom';
import MyWidget from './widgets/MyWidget';

const r = renderer(() => <MyWidget middlewareProp={true} />);
r.mount();
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI