weex體驗(yàn)記錄

也許是我智商不行吧宾舅,weex的官方文檔看得相當(dāng)吃力糊识。
結(jié)合網(wǎng)上搜來的別人家的教程,把用到的在這里記一下吧堵未。

1.新建頁面

一開始建立新頁面就懵逼了一下下译红。新建的是vue文件,然而預(yù)覽里出現(xiàn)的是js文件兴溜。那么,對(duì)應(yīng)的js文件在哪里呢耻陕?run之后拙徽,他在出現(xiàn)在dist目錄下的。

2.跳轉(zhuǎn)頁面

跳轉(zhuǎn)其實(shí)有三種狀態(tài):weex > weex诗宣;weex > native膘怕;native > weex:

先記一下weex > weex:

使用navigator模塊

<script>
  var navigator = weex.requireModule('navigator')

  export default {
  }
</script>

script中添加跳轉(zhuǎn)方法jumpIn和jumpOut(分別對(duì)應(yīng)navigator模塊的push和pop行為):

<script>
    var navigator = weex.requireModule('navigator')
    var modal = weex.requireModule('modal')

    export default {
    methods: {
        jumpIn (event) {
            navigator.push({
                url: "http://www.bing.com",
                animated: 'true'
            }, event => {
                // 完成后執(zhí)行的操作
            })
        },
        jumpOut () {
            navigator.pop({
                animated: 'true'
            })
        }
    }
  }
</script>

在需要的按鈕上添加點(diǎn)擊事件

<text class="buttonText" @click="jumpIn">Enter</text>

如果要跳轉(zhuǎn)到項(xiàng)目中的其他頁面的話就要先獲取當(dāng)前的路徑,然后將要跳轉(zhuǎn)的頁面拼接到地址上召庞,以jumpIn方法中跳轉(zhuǎn)到b.html文件為例:

        jumpIn (event) {
            var url = weex.config.bundleUrl;  //獲取當(dāng)前路徑
            url = url.split('/').slice(0,-1).join('/') + '/b.html';//拼接當(dāng)前路徑到要跳轉(zhuǎn)的文件岛心。(這里看了很多教程都是用的js文件的地址,但是我目前的demo里實(shí)際是需要用html的地址篮灼。)
            navigator.push({
                url: url,
                animated: 'true'
            }, event => {
                // 完成后執(zhí)行的操作
            })
        },

3.import外部的js

由于目前weex中的頁面是用vue寫的忘古,所以這里其實(shí)是vue的知識(shí),建議看一下vue教程诅诱。這里簡單記一下:
有以下兩種寫法的js文件
test1.js

export default {
    methods: {
        test(){
            console.log("import succeed");
        }
    }
}


test2.js

export function test(){
    console.log("test");
}
export function test2(){
    console.log("test2");
}

script中導(dǎo)入文件

import netJs from "./net/httpRequests";
import * as testJs from "./net/testfunction";

方法調(diào)用分別是

netJs.methods.test();
testJs.test();
testJs.test2();

4.尺寸單位適配

除了熟悉的pt單位外髓堪,還有一個(gè)用了會(huì)在ide里出現(xiàn)警告提示但實(shí)際可用的單位wx(官方手冊(cè)也沒有提到,ide的代碼提示里也不會(huì)出現(xiàn)娘荡,所以這是做出來吃灰的么干旁?)。這個(gè)單位是根據(jù)屏幕縮放自動(dòng)適配的(類似dp)炮沐,實(shí)際使用發(fā)現(xiàn)效果還不錯(cuò)争群,然而并不是總是支持,有時(shí)會(huì)無效大年。

5.http請(qǐng)求

這個(gè)官方文檔倒大致寫明白了换薄。
使用stream模塊

export function httpReq(key){
    //文字轉(zhuǎn)碼
    var keyWord=encodeURI(key);
    var url="http://open.boosj.com/search/video/by_keywords?category=1362&keywords="+keyWord+"&size=20&page=1";
    console.log("request http for "+url);
    var stream = weex.requireModule('stream');
    stream.fetch({
        method: 'GET',
        url: url,
        type:'jsonp'
    }, function(ret) {
        if(!ret.ok){
            this.getJsonpResult = "request failed";
            return 0;
        }else{
            console.log('GOT');
            return _count;
        }
    });
}

帶中文的時(shí)候注意其中這句轉(zhuǎn)碼:

var keyWord=encodeURI(key);

再解析一下me.getJsonpResult這個(gè)JSON字符串
假設(shè)獲得的JSON是這樣的結(jié)構(gòu)

{
  body:{
    "resources":[{title:abc,id:0},{title:def,id:1}]
  }
}

使用parse方法將JSON解析為對(duì)象玉雾。然后根據(jù)name獲取結(jié)構(gòu)內(nèi)的對(duì)象和數(shù)組。

export function parseInfo(_info){
    var getJsonpResult =  JSON.stringify(_info);
    // console.log('get:'+me.getJsonpResult);
    var obj =JSON.parse(getJsonpResult);
    var objArray =obj.body.resources;//這里獲得了一個(gè)數(shù)組
    for(var i=0;i<objArray.length;i++){
        console.log('title:'+objArray[i].title);
        console.log('title:'+objArray[i].id);
    }
    return objArray.length;
}

在之前的httpReq方法中調(diào)用這個(gè)解析专控。

export function httpReq(key){
    //文字轉(zhuǎn)碼
    var keyWord=encodeURI(key);
    var url="http://open.boosj.com/search/video/by_keywords?category=1362&keywords="+keyWord+"&size=20&page=1";
    console.log("request http for "+url);
    var stream = weex.requireModule('stream');
    stream.fetch({
        method: 'GET',
        url: url,
        type:'jsonp'
    }, function(ret) {
        if(!ret.ok){
            this.getJsonpResult = "request failed";
            return 0;
        }else{
            var _count=parseInfo(ret.data);
            console.log('count:'+_count);
            return _count;
        }
    });
}

然后更新一下界面:
主界面上有個(gè)文本框綁定了變量totalCount

<text class="menuText">共 {{totalCount}} 條</text>

定義回調(diào)函數(shù):

httpCallback:function(val){
                this.totalCount = val;
            }

httpReq方法增加回調(diào)函數(shù)的參數(shù)抹凳,獲得數(shù)據(jù)后通過回調(diào)傳回?cái)?shù)值到界面。

export function httpReq(key,httpCallback){
    //文字轉(zhuǎn)碼
    var keyWord=encodeURI(key);
    var url="http://open.boosj.com/search/video/by_keywords?category=1362&keywords="+keyWord+"&size=20&page=1";
    console.log("request http for "+url);
    var stream = weex.requireModule('stream');
    stream.fetch({
        method: 'GET',
        url: url,
        type:'jsonp'
    }, function(ret) {
        if(!ret.ok){
            this.getJsonpResult = "request failed";
            httpCallback(0);
        }else{
            var _count=parseInfo(ret.data);
            console.log('count:'+_count);
            httpCallback(_count);
        }
    });
}

主頁面調(diào)用時(shí)將剛定義的回調(diào)函數(shù)作為參數(shù)傳給httpReq方法

httpJs.httpReq(key,this.httpCallback);

6.列表list的點(diǎn)擊事件

基本需求就是點(diǎn)擊列表項(xiàng)獲得序號(hào)伦腐,有序號(hào)之后查具體的信息就簡單了赢底。
假設(shè)列表長這樣。

<list class="videoList">
          <!--boxs是數(shù)據(jù)中的列表柏蘑,對(duì)應(yīng)script中data屬性里的數(shù)據(jù)名稱幸冻。item是元素的名字,隨便取咳焚,后面綁定數(shù)據(jù)的時(shí)候用到洽损。v-for是循環(huán)語句-->
          <cell class="cell" v-for="(item,index) in boxes" @click="onClick(index)">
              <div class="inlineBox">
                  <image class="imageBox" :src="item.imageUrl" />
              </div>
              <div class="inlineBox, cellText">
                  <text class="hintText">{{item.title}}</text><br>
                  <!--<text class="contentText" lines="2">{{item.description}}</text>-->
                  <text class="hintText">播放:{{item.click}}</text>
              </div>
          </cell>
      </list>

關(guān)鍵就是循環(huán)v-for="(item,index) in boxes"第一個(gè)括號(hào)內(nèi)的內(nèi)容。他們可以作為參數(shù)傳遞革半。
點(diǎn)擊事件@click="onClick(index)中將index作為參數(shù)傳遞碑定。
定義方法onCLick就獲得了序號(hào)

onClick(_index){
    console.log("index:"+_index);
}

相關(guān)github地址:https://github.com/codeqian/flow-page-demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市又官,隨后出現(xiàn)的幾起案子延刘,更是在濱河造成了極大的恐慌,老刑警劉巖六敬,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碘赖,死亡現(xiàn)場離奇詭異,居然都是意外死亡外构,警方通過查閱死者的電腦和手機(jī)普泡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來审编,“玉大人撼班,你說我怎么就攤上這事±莩辏” “怎么了权烧?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伤溉。 經(jīng)常有香客問我般码,道長,這世上最難降的妖魔是什么乱顾? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任板祝,我火速辦了婚禮,結(jié)果婚禮上走净,老公的妹妹穿的比我還像新娘券时。我一直安慰自己孤里,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布橘洞。 她就那樣靜靜地躺著捌袜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炸枣。 梳的紋絲不亂的頭發(fā)上虏等,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音适肠,去河邊找鬼霍衫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侯养,可吹牛的內(nèi)容都是我干的敦跌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼逛揩,長吁一口氣:“原來是場噩夢啊……” “哼柠傍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辩稽,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤惧笛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搂誉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡静檬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年炭懊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拂檩。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侮腹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稻励,到底是詐尸還是另有隱情父阻,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布望抽,位于F島的核電站加矛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏煤篙。R本人自食惡果不足惜斟览,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辑奈。 院中可真熱鬧苛茂,春花似錦已烤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躁绸,卻和暖如春裕循,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涨颜。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國打工费韭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庭瑰。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓星持,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弹灭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子督暂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 最近研究了下React Native 與 Weex , 整理了份對(duì)比~ 最終選擇的阿里霸霸的Weex! 本文主要是...
    ErHu丶閱讀 5,834評(píng)論 3 17
  • 前言 2016年4月21日,阿里巴巴在Qcon大會(huì)上宣布跨平臺(tái)移動(dòng)開發(fā)工具Weex開放內(nèi)測邀請(qǐng)穷吮。Weex能夠完美兼...
    一縷殤流化隱半邊冰霜閱讀 38,960評(píng)論 135 366
  • Weex在達(dá)人店的一年實(shí)踐 本文來自尚妝移動(dòng)端團(tuán)隊(duì)路飛發(fā)表于尚妝github博客逻翁,歡迎訂閱! 尚妝達(dá)人店接入wee...
    尚妝產(chǎn)品技術(shù)刊讀閱讀 3,407評(píng)論 3 38
  • 今天來聊聊我的小故事哦捡鱼,雖然沒有華麗的文字八回,但都是我最真實(shí)的經(jīng)歷和感悟!想了解我的成長經(jīng)歷都來看看,都是我這3年微...
    貓貓盛閱讀 1,644評(píng)論 0 0
  • 有些時(shí)候驾诈,我們總是過分放大的了自己的認(rèn)知和感覺缠诅,因?yàn)樽约哼€被深深的陷入自我的意識(shí)世界里。 我所該繼續(xù)修煉的該是開放...
    lonely_tree閱讀 519評(píng)論 0 0