Weex基于Vue2.0開發(fā)框架模板搭建

Weex基于Vue2.0開發(fā)框架搭建

前言

最近有一些人反饋說在面試過程中常常被問到weex相關的知識,也側面反映的weex的發(fā)展還是很可觀的,可是目前weex的開發(fā)者大多數(shù)是中小型公司或者個人灌灾,大公司屈指可數(shù)卿嘲,揪其原因可能是基于weex的開發(fā)正確的姿勢大家并沒有找到玉凯,而且市面上的好多輪子還是.we后綴的,眾所周知,weex和vue一直在努力的進行生態(tài)互通喘先,而且weex實現(xiàn)web標準化是早晚的問題楷扬,今天和大家分享一下weex基于vue2.0的開發(fā)框架模板~

工作原理

先簡單熟悉一下weex的工作原理解幽,這里引用一下weex官網上的一直圖片,詳細信息見官網

Weex工作原理

開發(fā)環(huán)境搭建

weex 開發(fā)環(huán)境搭建

關于weex開發(fā)環(huán)境搭建問題見官方文檔

android 烘苹、iOS 開發(fā)環(huán)境

關于native開發(fā)環(huán)境搭建問題見官方文檔

框架說明

基于vue2.0搭建

像前面說的那樣weex和vue一直在努力的進行生態(tài)互通躲株,而且weex實現(xiàn)web標準化是早晚的問題,所以也建議開發(fā)者不要在用.we做后綴來開發(fā)了

native端多頁模式镣衡、web端采用單頁模式

  • 單頁形態(tài)對于原生可能體驗不夠好霜定,所以android與ios端采用多頁模式
  • web端沿用spa模式標準

集成三端(android、ios廊鸥、h5平臺)

關于android望浩、ios、h5平臺的集成與打包問題黍图,在項目中都以解決~

集成eslint代碼檢查

代碼檢查是必要的操作曾雕,為了能夠擁有vue開發(fā)的體驗奴烙,將eslint集成進來~

提供開源組件庫OSC

weex-frame提供了助被,開源組件庫OSC,降低開發(fā)者入門門檻~

注:

由于weexpack暫不支持vue問題切诀,打包相關后續(xù)會集成進來~

框架介紹

package.json依賴

"dependencies": {
    "vue": "^2.1.8",
    "vue-router": "^2.1.1",
    "vuex": "^2.1.1",
    "vuex-router-sync": "^4.0.1",
    "weex-vue-render": "^0.1.4"
  },
  "devDependencies": {
    "babel-core": "^6.20.0",
    "babel-eslint": "^7.1.1",
    "babel-loader": "^6.2.9",
    "babel-preset-es2015": "^6.18.0",
    "css-loader": "^0.26.1",
    "eslint": "^3.15.0",
    "eslint-config-standard": "^6.2.1",
    "eslint-loader": "^1.6.1",
    "eslint-plugin-html": "^2.0.1",
    "eslint-plugin-promise": "^3.4.2",
    "eslint-plugin-standard": "^2.0.1",
    "postcss-cssnext": "^2.9.0",
    "serve": "^1.4.0",
    "vue-loader": "^10.0.2",
    "vue-template-compiler": "^2.1.8",
    "webpack": "^1.14.0",
    "weex-devtool": "^0.2.64",
    "weex-loader": "^0.4.1",
    "weex-vue-loader": "^0.2.5"
  }

打包配置

1揩环、 遍歷.vue文件后綴,生成相應的entry.js文件

function getEntryFileData (entryPath, vueFilePath) {
  const relativePath = path.relative(path.join(entryPath, '../'), vueFilePath);
  return 'let App = require("${relativePath}")
          // 全局注冊組件
          Vue.component('root', require("components/root"))
          App.el = '#root'
          new Vue(App)'
}

...

2幅虑、通過weex-loader打包生成native jsbundle
3丰滑、 通過weex-vue-loader打包生成web jsbundle

...

const webConfig = getBaseConfig()
webConfig.entry = {
  entry: path.resolve('./src/entry.js')
}
webConfig.output = {
  path: 'dist/web',
  filename: '[name].js'
}
webConfig.module.loaders[1].loaders.push('vue')

const weexConfig = getBaseConfig()
weexConfig.output.filename = 'weex/[name].js'
weexConfig.module.loaders[1].loaders.push('weex')

項目結構

weex-frame
├── android (android項目)
│       
├── ios (ios項目代碼)
│
├── src (weex模塊)
│      ├── api (api模塊)
│      ├── components(組件模塊) 
│      ├── constants(常量配置)   
│      ├── utils (工具模塊)   
│      └── views(視圖模塊)  
│
└── dist (build輸出模塊)
       ├── weex (native使用jsbundle)
       └── web(web使用jsbundle) 

組件庫介紹

osc-navbar

三端導航條

osc-navpage

三端導航頁,適配iOS頂部20px問題

代碼示例:

<osc-navpage
    :title="title"
    leftItemSrc="https://gitlab.com/toonteam/weex/raw/ce656f79084ed9db357f8abd76c6e6c82dc5a28d/src/views/person-info/imgs/back.png"
    rightItemSrc="http://gtms02.alicdn.com/tps/i2/TB1ED7iMpXXXXXEXXXXWA_BHXXX-48-48.png"
    @naviBarLeftItemClick="onBack"
    @naviBarRightItemClick="onReload">
  <web class='web' ref='webview' :src='url' @pagestart='start' @pagefinish='finish'></web>
</osc-navpage>

osc-root詳細示例

界面根view倒庵,適配iOS頂部20px問題

代碼示例:

<osc-root>
  <text>OsMartian Root</text>
</osc-root>

osc-tabbar

底部tabbar

代碼示例:

<osc-tabbar :tabItems="tabItems" @tabBarOnClick="tabBarOnClick"></osc-tabbar>

osc-tabitem

底部tabbaritem元素

項目啟動

  1. git clone git@github.com:osmartian/weex-frame.git
  2. cd weex-frame
  3. npm install
  4. 執(zhí)行 ./start

android 啟動

  1. 打開andorid studio
  2. File -> New -> Import Project -> weex-frame/android -> 啟動

npm run dev:android

iOS 啟動

  1. cd ios
  2. pod install (未安裝pod褒墨,請先安裝)
  3. open WeexFrame.xcworkspace

h5 啟動方式

打開 http://localhost:12580/weex.html

項目示例

h5 端示例

h5我的頁面
h5發(fā)起頁面

android 端示例

android首頁
android我的頁面
android發(fā)起頁面

iOS 端示例

iOS首頁
iOS我的頁面
iOS發(fā)起頁面

結語

能看的出來上方的三端示例表現(xiàn)還是很一致的,本篇博文也是想給大家提供一個輪子擎宝,也歡迎大家多多提意見郁妈,共同促進weex生態(tài)成熟~

框架項目地址:

https://github.com/SyswinAE/weex-frame

本文已在版權印備案,如需轉載請訪問版權印绍申。53688340

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末噩咪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子极阅,更是在濱河造成了極大的恐慌胃碾,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筋搏,死亡現(xiàn)場離奇詭異仆百,居然都是意外死亡,警方通過查閱死者的電腦和手機奔脐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門俄周,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栏账,“玉大人,你說我怎么就攤上這事栈源〉簿簦” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵甚垦,是天一觀的道長茶鹃。 經常有香客問我,道長艰亮,這世上最難降的妖魔是什么闭翩? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮迄埃,結果婚禮上疗韵,老公的妹妹穿的比我還像新娘。我一直安慰自己侄非,他們只是感情好蕉汪,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逞怨,像睡著了一般者疤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叠赦,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天驹马,我揣著相機與錄音,去河邊找鬼除秀。 笑死糯累,一個胖子當著我的面吹牛,可吹牛的內容都是我干的册踩。 我是一名探鬼主播泳姐,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棍好!你這毒婦竟也來了仗岸?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤借笙,失蹤者是張志新(化名)和其女友劉穎扒怖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體业稼,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡盗痒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俯邓。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡骡楼,死狀恐怖,靈堂內的尸體忽然破棺而出稽鞭,到底是詐尸還是另有隱情鸟整,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布朦蕴,位于F島的核電站篮条,受9級特大地震影響,放射性物質發(fā)生泄漏吩抓。R本人自食惡果不足惜涉茧,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疹娶。 院中可真熱鬧伴栓,春花似錦、人聲如沸雨饺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沛膳。三九已至扔枫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锹安,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工倚舀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叹哭,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓痕貌,卻偏偏與公主長得像风罩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舵稠,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容