????????Weex 是使用流行的 Web 開發(fā)體驗(yàn)來開發(fā)高性能原生應(yīng)用的框架赋铝。Weex 的目標(biāo)就是使用開發(fā)者基于一份代碼插勤,編寫出可以運(yùn)行在 iOS,Android 和 Web 上的應(yīng)用革骨,并最大化地提高開發(fā)效率和簡(jiǎn)化測(cè)試农尖、構(gòu)建、發(fā)布流程良哲。
DOM(Document Object Model)盛卡,即文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口筑凫,是 Web 中的概念滑沧。Weex 的運(yùn)行環(huán)境以原生應(yīng)用為主喇颁,在 Android 和 iOS 環(huán)境中渲染出來的是原生的組件,不是 DOM Element嚎货。原生環(huán)境中不支持 Web API橘霎,沒有?Element?、Event?殖属、File?等對(duì)象姐叁,詳細(xì)列表可以參考?Web APIs on MDN。不支持選中元素如?document.getElementById?洗显、?document.querySelector?等外潜;當(dāng)然也不支持基于 DOM API 的程序庫(kù)(如 jQuery)。
BOM(Browser Object Model)挠唆,即瀏覽器對(duì)象模型处窥,是瀏覽器環(huán)境為 javascript 提供的接口。Weex 在原生端并不基于瀏覽器運(yùn)行玄组,不支持瀏覽器提供的 BOM 接口滔驾。Weex 中并未提供瀏覽器中的?window?和?screen?對(duì)象,不支持使用全局變量俄讹。沒有?document?對(duì)象哆致,沒有?history?、location?患膛、navigator?對(duì)象
內(nèi)置組件
1摊阀、<a>?組件用于實(shí)現(xiàn)頁(yè)面間的跳轉(zhuǎn)。(不可以在標(biāo)簽內(nèi)部直接添加文本踪蹬,需要使用 <text>標(biāo)簽來顯示文本胞此。)
2、<div>?是通用容器跃捣。(不要在?<div>?中直接添加文本漱牵,而要使用?<text>?組件。在 Weex 中枝缔,<div>?不可滾動(dòng)布疙。要控制?<div>?的層級(jí)蚊惯,建議不要超過14層愿卸,否則會(huì)很影響頁(yè)面性能。)
3截型、<image>?用于在界面中顯示單個(gè)圖片趴荸。
4、<list>?組件是提供垂直列表功能的核心組件宦焦,擁有平滑的滾動(dòng)和高效的內(nèi)存管理发钝,非常適合用于長(zhǎng)列表的展示顿涣。最簡(jiǎn)單的使用方法是在?<list>?標(biāo)簽內(nèi)使用一組由簡(jiǎn)單數(shù)組循環(huán)生成的?<cell>?標(biāo)簽填充。(不允許相同方向的?<list>?或者?<scroller>?互相嵌套酝豪,換句話說就是嵌套的?<list>?/?<scroller>?必須是不同的方向涛碑。<list>?需要顯式的設(shè)置其寬高,可使用?position: absolute;?定位或?width孵淘、height?設(shè)置其寬高值)
5蒲障、Cell 必須以一級(jí)子組件的形式存在于 list recycler waterfall?中。(Cell 支持添加任意類型的組件作為自己的子組件瘫证,但是請(qǐng)不要再內(nèi)部添加滾動(dòng)容器了揉阎。不要指定?<cell>?的?flex?值。Cell 的寬度是由它的父容器決定的背捌,你也不需要指定它的高度毙籽。Cell 的排版的位置是由父容器控制的,所以一般不要為其指定?margin?樣式毡庆。)
6坑赡、<loading>?為容器提供上拉加載功能。(<loading>?是?<scroller>么抗、<list>垮衷、<waterfall>?的子組件,只能在被它們包含時(shí)才能被正確渲染乖坠。)
7搀突、<refresh>?為容器提供下拉刷新功能。(<refresh>?是?<scroller>熊泵、<list>仰迁、<waterfall>?的子組件,只能在被它們包含時(shí)才能被正確渲染顽分。)
8徐许、<recycle-list>?是一個(gè)新的支持豎向或橫向的列表容器,具有回收和復(fù)用的能力卒蘸,可以大幅優(yōu)化內(nèi)存占用和渲染性能雌隅。(<recycle-list>?只能使用?<cell-slot>?作為其直接子節(jié)點(diǎn),使用其他節(jié)點(diǎn)無效缸沃。)
9恰起、<scroller>?是一個(gè)容納子組件進(jìn)行橫向或豎向滾動(dòng)的容器組件。如果你的組件需要進(jìn)行滾動(dòng)趾牧,可以將?<scroller>?當(dāng)作根元素或者父元素使用检盼,否則頁(yè)面無法滾動(dòng)(?<list>?組件除外,?<list>?默認(rèn)可以滾動(dòng)翘单,不允許相同方向的?<list>?或者?<scroller>?互相嵌套吨枉,換句話說就是嵌套的?<list>?/?<scroller>?必須是不同的方向蹦渣。<scroller>?需要顯式的設(shè)置其寬高,可使用?position: absolute;?定位或?width貌亭、height?設(shè)置其寬高值柬唯。)
10、Slider 組件用于在一個(gè)頁(yè)面中展示多個(gè)圖片圃庭,在前端這種效果被稱為輪播圖权逗。默認(rèn)的輪播間隔為3秒。
11冤议、indicator?只能在?slider?中使用斟薇。
12、textarea>?與 <input>組件類似恕酸,可用于接受用戶輸入數(shù)據(jù)堪滨。<textarea>?支持多行文本輸入。?<textarea>?支持?<input>?支持的所有的屬性蕊温、樣式和事件袱箱。除了支持?input?支持的所有屬性外,textarea?還支持?rows?屬性义矛,用于指定輸入的行數(shù)发笔。
13、Weex 內(nèi)置的?<input>?組件用來創(chuàng)建接收用戶輸入字符的輸入組件凉翻。?<input>?組件的工作方式因?type?屬性的值而異了讨,比如?text,?password制轰,url前计,email,tel?等垃杖。(此組件不支持?click?事件男杈。請(qǐng)監(jiān)聽?input?或?change?來代替?click?事件。)
14调俘、<waterfall>?組件是提供瀑布流布局的核心組件伶棒。瀑布流,又稱瀑布流式布局是比較流行的一種頁(yè)面布局彩库,視覺表現(xiàn)為參差不齊的多欄布局肤无。隨著頁(yè)面滾動(dòng)條向下滾動(dòng),這種布局還可以不斷加載數(shù)據(jù)塊并附加至當(dāng)前尾部侧巨。(<waterfall>?只支持 Android 和 iOS舅锄,不支持 Web)
15鞭达、Video 組件用于在頁(yè)面中嵌入視頻內(nèi)容司忱。
16皇忿、<web>?用于在 WEEX 頁(yè)面中顯示由 src 屬性指定的網(wǎng)頁(yè)內(nèi)容。
內(nèi)置模塊
1坦仍、animation?模塊可以用來在組件上執(zhí)行動(dòng)畫鳍烁。JS-Animation可以對(duì)組件執(zhí)行一系列簡(jiǎn)單的變換 (位置、大小繁扎、旋轉(zhuǎn)角度幔荒、背景顏色和不透明度)。
2梳玫、clipboard用于獲取爹梁、設(shè)置剪切板內(nèi)容,目前只支持字符串類型
3提澎、dom用于對(duì) weex 頁(yè)面里的組件節(jié)點(diǎn)進(jìn)行一部分特定操作姚垃。(scrollToElement?將 list 的某個(gè)子節(jié)點(diǎn)滾動(dòng)到當(dāng)前視口,getComponentRect?獲取某個(gè)組件的 bounding rect 布局信息盼忌,addRule?添加 font-face rule积糯,getLayoutDirection0.20.0+?獲取某個(gè)組件的布局方向(rtl、lrt谦纱、inherit))
4看成、globalEvent?用于監(jiān)聽持久性事件,例如定位信息跨嘉,陀螺儀等的變化川慌。全局事件是需要額外 APIs 處理的次要 API
5、meta 模塊可用于聲明單個(gè)頁(yè)面的元信息祠乃,通常是一些頁(yè)面級(jí)別的配置窘游,如容器的顯示寬度 (viewport) 等。默認(rèn)情況下跳纳,應(yīng)用無需修改此配置忍饰。
6、modal?模塊提供了以下展示消息框的 API:toast寺庄、alert艾蓝、confirm?和?prompt。(toast()?會(huì)在一個(gè)小浮層里展示關(guān)于某個(gè)操作的簡(jiǎn)單反饋斗塘。例如赢织,在郵件發(fā)送前離開郵件編輯界面,可以觸發(fā)一個(gè)“草稿已保存”的 toast馍盟,告知用戶以后可以繼續(xù)編輯于置。toast 會(huì)在顯示一段時(shí)間之后自動(dòng)消失。alert()警告框經(jīng)常用于確保用戶可以得到某些信息贞岭。當(dāng)警告框出現(xiàn)后八毯,用戶需要點(diǎn)擊確定按鈕才能繼續(xù)進(jìn)行操作搓侄。confirm()確認(rèn)框用于使用戶可以驗(yàn)證或者接受某些信息。當(dāng)確認(rèn)框出現(xiàn)后话速,用戶需要點(diǎn)擊確定或者取消按鈕才能繼續(xù)進(jìn)行操作讶踪。prompt()提示框經(jīng)常用于提示用戶在進(jìn)入頁(yè)面前輸入某個(gè)值。當(dāng)提示框出現(xiàn)后泊交,用戶需要輸入某個(gè)值乳讥,然后點(diǎn)擊確認(rèn)或取消按鈕才能繼續(xù)操作。)
7廓俭、navigator通過前進(jìn)或者回退按鈕來切換頁(yè)面云石,允許我們指定在切換頁(yè)面的時(shí)候是否應(yīng)用動(dòng)畫效果
8、picker用于數(shù)據(jù)選擇研乒,日期選擇留晚,時(shí)間選擇。
9告嘲、stream?模塊提供了基本的網(wǎng)絡(luò)請(qǐng)求能力错维,例如 GET 請(qǐng)求、POST 請(qǐng)求等橄唬,用于在組件的生命周期內(nèi)與服務(wù)端進(jìn)行交互赋焕。
10、webview?模塊提供了一系列的 <web>組件操作接口仰楚,例如?goBack隆判、goForward?和?reload,一般與?<web>?組件一起使用僧界,在 Weex 頁(yè)面內(nèi)渲染 web 頁(yè)面侨嘀。
11、webSockets?是一種創(chuàng)建持久性的連接捂襟,并進(jìn)行雙向數(shù)據(jù)傳輸?shù)?HTTP 通信協(xié)議咬腕。Weex 提供了?webSockets?模塊方便用戶在 H5/iOS/Android 環(huán)境下與服務(wù)端創(chuàng)建 webSockets 鏈接進(jìn)行通信。
12葬荷、deviceInfo模塊可用來獲取設(shè)備的基本信息并進(jìn)行設(shè)置涨共,如fullScreenHeight(全面屏高度)。適配全面屏?xí)r建議使用該模塊宠漩。
13举反、console-log用于強(qiáng)制將 Weex 日志輸出到控制臺(tái)