值得分享和收藏的xmlplus組件學(xué)習(xí)教程
xmlplus 介紹
xmlplus 是一個(gè)設(shè)計(jì)非常獨(dú)特 JavaScript 框架,用于快速開發(fā)前后端項(xiàng)目。
基于組件設(shè)計(jì)
在 xmlplus 中,組件是基本的構(gòu)造塊。評(píng)價(jià)組件設(shè)計(jì)好壞的一個(gè)重要標(biāo)準(zhǔn)是封裝度?;?xmlplus 設(shè)計(jì)的組件具有極高的封裝度。下面是一個(gè)簡單的組件示例:
Widget: {
css: "#widget{ color: red; }",
xml: `<h1 id='widget'>default</h1>`,
fun: function (sys, items, opts) {
sys.widget.text("hello, world");
}
}
注意,這個(gè)組件包含的樣式、XML 文檔以及函數(shù)項(xiàng)僅對(duì)該組件有效,其它組件對(duì)它是完全不可見的。這種組件的書寫方式改變了傳統(tǒng)的將 CSS、JS 以及 HTML 置于不同文件的應(yīng)用書寫模式,但它卻能使你在構(gòu)建應(yīng)用時(shí)更加得心應(yīng)手。
組件由命名空間組織。基于傳統(tǒng)目錄路徑的組件引用方式,讓組件的使用更為便捷。假設(shè)你已經(jīng)定義好一個(gè)位于命名空間 //ui 的 Calendar 組件,那么你可以在 HTML 頁面中這樣使用它:
<Calendar xmlns="http://ui"/>
至于如何定義組件,請(qǐng)參考官方文檔 http://www.xmlplus.cn/docs。
友好的相容性
非侵入式的設(shè)計(jì),使得 xmlplus 可以與當(dāng)今幾乎所有的框架或者庫集成使用。
利用 xmlplus 出色的整合能力,你可以整合現(xiàn)有的庫或框架到你的項(xiàng)目中,以避免陷入重造輪子的困境。
下面是一個(gè)封裝 Bootstrap 按鈕組件的一個(gè)示例:
Button: {
xml: `<button type='button' class='btn'/>`,
fun: function (sys, items, opts) {
this.addClass("btn-" + opts.type);
}
}
經(jīng)由此封裝后,你可以像下面這樣非常簡潔地使用它:
<Button type='default'>Default</Button> <Button type='primary'>Primary</Button> <Button type='success'>Success</Button>
一次學(xué)習(xí), 多端使用
xmlplus 獨(dú)特的設(shè)計(jì),使得它可以以相同的方式,設(shè)計(jì)基于瀏覽器端以及基于服務(wù)端的應(yīng)用。
在瀏覽器端,使用它可以高效地開發(fā)單頁應(yīng)用。在服務(wù)端,你既可以用它來開發(fā)服務(wù)應(yīng)用,還能用它開發(fā)傳統(tǒng)網(wǎng)站。
下面是一個(gè)服務(wù)端的一個(gè)簡單的 Sqlite 組件的封裝。
Sqlite: {
fun: function (sys, items, opts) {
var sqlite = require("sqlite3").verbose(),
return new sqlite.Database("data.db");
}
}
你可以像下這樣使用上面已經(jīng)定義好的 Sqlite 組件:
Example: {
xml: `<Sqlite id='sqlite'/>`,
fun: function (sys, items, opts) {
let stmt = "SELECT * FROM users";
items.sqlite.all(stmt, (err, rows) => console.log(rows));
}
}
本框架支持在后臺(tái)直接序列化輸出 HTML 代碼,所以使用 xmlplus 開發(fā)傳統(tǒng)網(wǎng)站是極其便利的。下面示例簡單地演示了這一點(diǎn):
HttpServer: {
xml: `<html>
<body id='body'>default</body>
</html>`
fun: function (sys, items, opts) {
let http = require("http");
http.createServer((req, res) => {
sys.body.text("hello,world");
res.setHeader("Content-Type", "text/html");
res.end(this.serialize(true));
}).listen(80);
}
}
通過示例,你可以發(fā)現(xiàn),在處理服務(wù)接受請(qǐng)求后,可以動(dòng)態(tài)改變 XML 的文檔結(jié)構(gòu),這一點(diǎn)使得 xmlplus 開發(fā)傳統(tǒng)網(wǎng)站方式與 PHP、JSP 等腳本語言有著很大的不同。
另外,xmlplus 所包含的檢索、通信、共享 以及 延遲實(shí)例化 等基本特性也是其獨(dú)有的,它們可以極其高效地輔助應(yīng)用的開發(fā)。
xmlplus 學(xué)習(xí)指南
xmlplus 是一個(gè)開源的框架,你可以訪問官方網(wǎng)站:http://www.xmlplus.cn。官方網(wǎng)站包含詳細(xì)的入門教程,你可以從這里開始。
另外 xmlplus 的源代碼托管于 github,你可以通過訪問下面的地址來獲取相應(yīng)的資源:
https://github.com/qudou/xmlplus
如果你已經(jīng)學(xué)完了基礎(chǔ)教程,那么可以繼續(xù)學(xué)習(xí)本博寫的 xmlplus 組件設(shè)計(jì)系列。此系列主要討論實(shí)際中組件的設(shè)計(jì)思路、方法與技巧等。
xmlplus 組件設(shè)計(jì)系列之一 - 圖標(biāo)(ICON)
xmlplus 組件設(shè)計(jì)系列之二 - 按鈕(Button)
xmlplus 組件設(shè)計(jì)系列之三 - 文本框(TextBox)
xmlplus 組件設(shè)計(jì)系列之四 - 列表(List)
xmlplus 組件設(shè)計(jì)系列之五 - 選項(xiàng)卡(Tabbar)
xmlplus 組件設(shè)計(jì)系列之六 - 下拉刷新(PullRefresh)
本系列文章基于 xmlplus 框架。如果你對(duì) xmlplus 沒有多少了解,可以訪問 www.xmlplus.cn。這里有詳盡的入門文檔可供參考。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript?新提案optional?chaining可選鏈屬性原理詳解
這篇文章主要為大家介紹了JavaScript?新提案optional?chaining可選鏈屬性原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
JS獲取月份最后天數(shù)、最大天數(shù)與某日周數(shù)的方法
這篇文章主要介紹了JS獲取月份最后天數(shù)、最大天數(shù)與某日周數(shù)的方法,涉及JavaScript針對(duì)日期與實(shí)現(xiàn)的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
JavaScript Array.flat()函數(shù)用法解析
這篇文章主要介紹了JavaScript Array.flat()函數(shù)用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
微信小程序使用slider設(shè)置數(shù)據(jù)值及switch開關(guān)組件功能【附源碼下載】
這篇文章主要介紹了微信小程序使用slider設(shè)置數(shù)據(jù)值及switch開關(guān)組件功能,結(jié)合實(shí)例形式分析了slider組件及switch組件的功能與使用方法,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12
解決JS使用fill()進(jìn)行數(shù)組填充遇到的問題
最近在做算法題時(shí),遇到需要?jiǎng)?chuàng)建二維數(shù)組并進(jìn)行初始化的情況,剛開始我使用的是 new Array(n).fill(new Array(n).fill('.')) 進(jìn)行二維數(shù)組的初始化,但無論怎樣我都通不過測(cè)試用例,所以本文就給大家詳細(xì)的介紹了如何解決這類問題以及將js中的fill(方法重學(xué)一下2023-09-09
javascript的document中的動(dòng)態(tài)添加標(biāo)簽實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄獪\談javascript的document中的動(dòng)態(tài)添加標(biāo)簽實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
微信小程序?qū)崿F(xiàn)隨機(jī)驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)隨機(jī)驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12

