翻譯 https://github.com/dojo/framework/blob/master/docs/en/creating-widgets/introduction.md
成都做網(wǎng)站、網(wǎng)站建設(shè)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)一個(gè)展示的機(jī)會(huì)來(lái)證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來(lái)新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
Dojo 鼓勵(lì)編寫簡(jiǎn)單的、模塊化組件,并稱之為部件,它僅實(shí)現(xiàn)應(yīng)用程序大量需求中的單一職責(zé)。部件被設(shè)計(jì)成可在各種場(chǎng)景中組合和復(fù)用,能以響應(yīng)的方式連接在一起,以滿足更復(fù)雜的 web 應(yīng)用程序需求。
部件使用渲染函數(shù)返回的虛擬節(jié)點(diǎn)描述其預(yù)期的結(jié)構(gòu)。然后,在應(yīng)用程序運(yùn)行時(shí),Dojo 的渲染系統(tǒng)會(huì)持續(xù)地將部件每一層渲染的內(nèi)容轉(zhuǎn)換為對(duì)應(yīng)的、高效的 DOM 更新。
功能 | 描述 |
---|---|
響應(yīng)式設(shè)計(jì) | Dojo 部件是圍繞響應(yīng)式的核心原則設(shè)計(jì)的,這樣在應(yīng)用程序中傳播變化的狀態(tài)時(shí),就可以確??深A(yù)見的、一致的行為。 |
封裝部件 | 創(chuàng)建獨(dú)立、封裝的部件,這些部件可通過(guò)各種配置組合在一起,從而創(chuàng)建出復(fù)雜且漂亮的用戶界面。 |
DOM 抽象 | 框架提供了恰當(dāng)?shù)某橄螅@意味著 Dojo 應(yīng)用程序不需要直接與命令式 DOM 打交道。 |
高效渲染 | Dojo 的渲染系統(tǒng)可以檢測(cè)出部件層次結(jié)構(gòu)中特定子節(jié)點(diǎn)的狀態(tài)變化,這樣當(dāng)更新發(fā)生時(shí),只需要高效的重新渲染應(yīng)用程序中受影響的部分。 |
企業(yè)級(jí) | 跨領(lǐng)域的應(yīng)用程序需求,如國(guó)際化、本地化和樣式主題,可以輕松地添加到用戶創(chuàng)建的部件中。 |
create()
將部件定義為一個(gè)渲染函數(shù) factorysrc/widgets/MyWidget.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
const factory = create();
export default factory(function MyWidget() {
return <div>Hello from a Dojo widget!</div>;
});
create
工廠為部件提供中間件key
屬性,來(lái)區(qū)分同一類型的兄弟元素,此示例中是兩個(gè) div
元素。這樣當(dāng)應(yīng)用程序中的狀態(tài)發(fā)生變化,需要更新 DOM 節(jié)點(diǎn)時(shí),框架就可以高效、準(zhǔn)確地定位到相關(guān)元素src/widgets/Greeter.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
import icache from '@dojo/framework/core/middleware/icache';
const factory = create({ icache }).properties<{
name: string;
onNameChange?(newName: string): void;
}>();
export default factory(function Greeter({ middleware: { icache }, properties }) {
const { name, onNameChange } = properties();
let newName = icache.get<string>('new-name') || '';
return (
<div>
<div key="appBanner">Welcome to a Dojo application!</div>
{name && <div key="nameBanner">Hello, {name}!</div>}
<label for="nameEntry">What's your name?</label>
<input
id="nameEntry"
type="text"
value={newName}
oninput={(e: Event) => {
icache.set('new-name', (e.target as HTMLInputElement).value);
}}
/>
<button
onclick={() => {
icache.set('new-name', undefined);
onNameChange && onNameChange(newName);
}}
>
Set my name
</button>
</div>
);
});
icache
中間件管理 state,并當(dāng)狀態(tài)變更時(shí),失效或重新渲染受影響的部件src/widgets/NameHandler.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
import icache from '@dojo/framework/core/middleware/icache';
import Greeter from './Greeter';
const factory = create({ icache });
export default factory(function NameHandler({ middleware: { icache } }) {
let currentName = icache.get<string>('current-name') || '';
return (
<Greeter
name={currentName}
onNameChange={(newName) => {
icache.set('current-name', newName);
}}
/>
);
});
renderer
函數(shù)將部件掛載到 DOM 中src/main.tsx
import renderer, { tsx } from '@dojo/framework/core/vdom';
import NameHandler from './widgets/NameHandler';
const r = renderer(() => <NameHandler />);
r.mount();
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
名稱欄目:創(chuàng)建Dojo部件簡(jiǎn)介-創(chuàng)新互聯(lián)
當(dāng)前地址:http://m.rwnh.cn/article2/isoic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、微信小程序、定制開發(fā)、面包屑導(dǎo)航、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容