銀聯商務開放平臺小程序嘗試(weex)2

  好幾天沒有繼續學習,日漸荒蕪,而終期日近,深入反省。。html

  此次終於開始正式上手weex開發。看了幾期技術胖的視頻,確實略顯古舊,與當前的版本差別較大,基本屬於本身矯正的狀態。前端

  說到底,weex的開發目前仍然是基於vue的(weel-cli生成的就是vue文件爲核心的工程,不過當前版本只支持create建立,已經取消了init命令)vue

  本人在Android Studio建立AVD虛擬機的過程當中遇坑無數(Ubuntu18.04環境),相關細節不展開講了,最終採用本身的手機(華爲榮耀9,Android9.0系統)做爲app測試方案。 android

  按照技術胖的思路,採用weex platform add android命令生成Android工程,而後用Android Studio打開並下載,獲得的結果就是這個樣子(git

 

 出現了與技術胖同樣的問題,按照他的說法是尚未渲染出來,可是我等呀等呀,這個頁面就是不變。。github

  後來直接採用weex run android命令,能夠直接鏈接本身的手機進行安裝,此時即可以加載出來完整頁面了,並且。。web

 

 

 還有熱加載功能,這可太舒服了呀(不過要手機上先打開開發者模式,而後選擇待調試應用爲WEEX APP)前端框架

  接下來開始正式的功能開發學習。。。weex

  首先是自定義組件。這個徹底是Vue的路子,技術胖視頻中講的很是清楚,此處給出一份本人的示例代碼:架構

mytest.vue (位於src/components目錄下,與Helloworld平行。在技術胖的演示中,weex工程尚未如今這樣的架構,如今的weex工程demo已經將helloworld作成了一個獨立組件)

 1 <template>
 2     <text class="test">a test of vue component in weex.</text>
 3 </template>
 4 
 5 <script>
 6 export default {
 7   name: 'mytest.vue'
 8 }
 9 </script>
10 
11 <style scoped>
12     .test{
13         background-color: #41B883;
14         font-size: 60px;
15         margin: 20px;
16     }
17 </style>

index.vue:(話說博客園根本無法識別如今的前端框架語言,只能勉強當html用了)

<template>
  <div class="wrapper">
    <image :src="logo" class="logo" />
    <text class="greeting">The environment is ready!</text>
    <HelloWorld/>
    <mytest></mytest>
  </div>
</template>

<script>
import HelloWorld from '@/components/HelloWorld'
import mytest from '@/components/mytest'

export default {
  name: 'App',
  components: {
    mytest,
    HelloWorld,
  },
  data () {
    return {
      logo: 'https://gw.alicdn.com/tfs/TB1yopEdgoQMeJjy1XaXXcSsFXa-640-302.png'
    }
  }
}
</script>

<style scoped>
  .wrapper {
    justify-content: center;
    align-items: center;
  }
  .logo {
    width: 400px;
    height: 200px;
  }
  .greeting {
    text-align: center;
    margin-top: 70px;
    font-size: 50px;
    color: #41B883;
  }
  .message {
    margin: 30px;
    font-size: 32px;
    color: #727272;
  }
</style>

接下來又嘗試了一下將weex-ui中的組件整合進頁面中,weex-ui控件示例代碼在https://alibaba.github.io/weex-ui/#/cn/with-weex-toolkit

也作成了一個獨立的組件button.vue,與mytest.vue相似,也要導入到index.vue中。

<template>
    <div>
        <wxc-button text="Open Popup"
                    @wxcButtonClicked="buttonClicked">
        </wxc-button>
        <wxc-popup width="500"
                   pos="left"
                   :show="isShow"
                   @wxcPopupOverlayClicked="overlayClicked">
        </wxc-popup>
    </div>
</template>

<script>
import { WxcButton, WxcPopup } from 'weex-ui'
module.exports = {
  components: { WxcButton, WxcPopup },
  data: () => ({
    isShow: false
  }),
  methods: {
    buttonClicked () {
      this.isShow = true
    },
    overlayClicked () {
      this.isShow = false
    }
  }
}
</script>

 

運行效果以下:

 

 

 

 點擊Open Popup按鈕 就打開了左側的彈出窗(雖然目前裏面是空的,什麼都沒),而後再點擊窗外部的程序頁面,窗口就會退回。

 

  html的部分很好理解,設定了相關的外觀表現並註冊了兩個方法(method),一個是按鈕的點擊事件,另外一個是窗口外部區域的點擊事件,

  script的部分,能看到isShow成員控制是否顯示,這應該是WxcPopup的一個屬性,控制是否顯示彈出窗,可是因爲本人目前對vue/js瞭解尚淺,仍未能明白此處的module this所指爲什麼。彷佛這個module是包含了按鈕和彈出窗兩個組件的一個整合模塊,而this指向整個模塊,this.isShow直接控制的是WxcPopup,爲何對WxcButton沒有影響呢?這些以後再繼續研究。

 

  最後遇到了這樣一個問題:默認demo顯示的weex logo圖片是超連接資源:https://gw.alicdn.com/tfs/TB1yopEdgoQMeJjy1XaXXcSsFXa-640-302.png

  本人試圖將其更換爲本地資源,放置在web/assets目錄下,而後經過相對路徑進行訪問。因爲weex網頁輸出在dist目錄,與src平級,所以src/index.vue中的logo路徑複製到了dist/index.vue中依然能夠正常訪問,可是對於安卓程序,整個工程處於platform文件夾下,沒法訪問外部資源,即便根據platform/android下的index.vue位置手動添加資源,也根本不會被編譯到app裏。安卓工程中的index.vue位於platform/android/bundlejs/下,原先的資源文件是platforms/web/assets/res/res1.jpg,故我添加了一個platforms/android/web/assets/res/res1.jpg放進安卓工程中,index.vue中的文件路徑爲

logo: '../web/assets/res/res1.jpg'

目前關於本地資源的問題仍未解決,可是因爲比賽要求只須要在weex playground上演示程序,故此部分先暫時放下,接下來繼續學習weex開發方面的內容

相關文章
相關標籤/搜索