leader 想讓我轉大前端,當時我心裏仍是比較興奮的,由於這跟我最開始對本身的定位是徹底一致的,但後續作了一些後端的東西后,發現本身對後端也有感受,不過實話實說都還在比較淺薄的層面上。html
上週末我想了兩天,發現本身確實得在大前端這塊上繼續「拋頭顱,灑熱血」,不單是再精進一些以前已掌握的知識,更是拓展了本身在稍微擅長的一個領域站得更穩,恰好最近負責的產品有往「跨平臺」的開發模式上轉,須要提早作些調研工做,再跟上最近團隊人員的變更,新來的同窗有意願切入 Weex 跨平臺框架。前端
固然,對於我我的而已,我徹底不喜歡任何非原生的東西,甚至目前到了用別人的庫都以爲「怪異」,今年年初的時候把當時最火的兩個跨平臺框架「小程序」和 「React-Native」 都擼了一遍,但就僅僅從 demo 這個級別出發,當時就已經很是的厭惡各類跨平臺的開發框架了,總有些說不出的「怪異」之處,但也不能說它們毫無是處,在編寫 demo 的過程當中,不少基礎組件上手就用,比 Native 開發效率上都大大提高了不僅一兩倍這麼簡單。vue
通過一週短暫的、磕磕碰碰的學習,也把今年學習的第三個目前也十分火爆的跨平臺框架—— Weex 寫出了 demo,其中大部分思路來源於 Weex 的官方文檔和教學視頻。若是你感興趣的話,能夠掃描下方二維碼進行試玩:webpack
對於 Weex 的介紹在網上已有大量的講解,在此用本身的話能夠總結以下:ios
Javascript
爲主體且依賴 Vue
,排除第一條後,上 Weex 幾乎沒有懸念,畢竟到如今 Weex 都被認爲是 Vue-Native
。該 demo 中運用到的主要相關知識點以下:git
div
,text
navigator
,storage
,dom
CSS
基本內容Vue.js
基本內容Javascript
基本內容Weex 吸取了目前最流行的 MVVM 和麪向組件開發的思想,上文中我所說的「爽」就來自於此!舉一個例子,navbar
組件,編寫一個組件相對 Native 來講,真的是又快又爽!在 <tempalte>
中寫好組件模版代碼,在 <script>
中寫好事件處理、屬性定義、生命週期管理,在 <style>
中寫好 CSS
樣式佈局,想要給別人用,直接拖走這個 .vue
文件便可完事(固然 native 也是同樣)。我以爲能有如此便利,多虧 CSS,在 native 實現一個功能可能使用 CSS 只須要兩三行便可完事!github
navbar
組件<template>
<div class="navbar">
<!-- v-if 判斷是否須要展現返回 icon -->
<text v-if="showBack" class="iconfont navbar-icon" @click="onBack"></text>
<text v-else class="navbar-title"></text>
<text class="navbar-title">{{ title }}</text>
<text class="navbar-title"></text>
</div>
</template>
<script>
const navigator = weex.requireModule('navigator')
export default {
name: 'navbar',
props: {
showBack: {
type: Boolean,
default: true
},
title: {
type: String,
required: true
}
},
beforeCreate () {
const domModule = weex.requireModule('dom')
domModule.addRule('fontFace', {
'fontFamily': 'iconfont',
'src': "url('http://at.alicdn.com/t/font_933576_ji32n9fdyki.ttf')"
})
},
methods: {
onBack () {
navigator.pop({
animated: 'true'
})
}
}
}
</script>
<style scoped>
.iconfont {
font-family: iconfont;
}
.navbar {
height: 88px;
background-color: #50e3a4;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding-left: 20px;
padding-right: 20px;
}
.navbar-title {
font-size: 32px;
color: #fff;
}
.navbar-icon {
color: #fff;
font-size: 36px;
}
</style>
複製代碼
npm install weex-toolkit -g
web
weex create awesome-app
vue-router
在建立工程的過程當中,會提示一些關鍵信息,好比做者、是否使用 vue-router
,ESLint
等等,根據提示等待便可。npm
weex platform add ios
weex run build
在 dist 文件夾下拿到對應的 js bundle 文件。
在工廠目錄下執行 npm start
後,會在瀏覽器打開一個「套殼」的頁面,有不少不須要的元素,若是不須要的話,能夠這麼作:
nmp start
後,打開的地址爲:http://172.20.10.4:8081/web/preview.html?page=index.js
http://172.20.10.4:8081/index.html
,這樣就去除掉了多餘不須要的元素了,頁面變得十分乾淨新增頁面後,此時若是經過瀏覽器直接輸入地址訪問會 404,由於這次 build 出來的資源文件中並未包含咱們新增的頁面,須要從新執行 npm start
進行從新構建。
決定你的頁面佈局主要方向,是row(水平)仍是column(垂直佈局)。
決定父容器中的元素在水平方向上的佈局,想要居中則設置爲 center
。
決定父容器中的元素在垂直方向上的佈局,想要居中則設置爲 center
。
決定父容器中的元素在主軸上如何排列,若是想要等分佈局,則設置爲 space-around
,左右邊距將爲中間間隔的一半。
決定元素在交叉軸上如何排列
經過 webpack 打包後生成的 JS Bundle
文件都在 dist
文件夾下。
在 Weex 中關於 bool 值,本質上爲字符串,好比"true"
這樣纔是「真」,true
這樣什麼也不是,官方說會在將來版本中進行修復,還有不少相似這種容易引發「差評」的地方。
構建出來的 js bundle 直接直接能夠拖入工程使用,在 iOS 下,看到的渲染後的頁面層級以下:
查看 WeexSDK,能夠看到基本上把原生組件都按照 Weex 支持的格式封裝了一遍,因此加入跨平臺框架後,app 體積不上升是不可能的,只不過得看用什麼個優化方法了(刪刪刪哈哈哈~)
原本想系統的介紹一下 Weex 的開發流程和部分細節,下次有機會再愉快的玩耍吧~本次 Weex demo 的練習,讓本身對 Weex 和 Vue 都有了一個直觀的感覺,到如今給我印象最深入的不是 Weex 而是 Vue,感觸良多。對原生開發的喜好又多了很多,在今天這個時代背景下,求快不求穩,無論怎麼說,我仍是一個堅決的原生開發者~
原文地址:PJ 的 iOS 開發平常