最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年03月20日 10:41:26   作者:王永迪  
這篇文章主要介紹了詳解Weex基于Vue2.0開發(fā)模板搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

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

工作原理

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

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

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

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

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

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

框架說明

基于vue2.0搭建

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

多頁模式(拋棄vue-router)

單頁形態(tài)對于原生可能體驗不夠好,目前在 native App 里單頁模式不太合適

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

關(guān)于android、ios、h5平臺的集成與打包問題,在項目中都以解決~

集成eslint代碼檢查

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

注:

由于weexpack暫不支持vue問題,打包相關(guān)后續(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 getEntryFileContent (entryPath, vueFilePath) {
 const relativePath = path.relative(path.join(entryPath, '../'), vueFilePath);
 return 'var App = require(\'' + relativePath + '\')\n'
  + 'App.el = \'#root\'\n'
  + 'new Vue(App)\n'
}

function walk (dir) {
 dir = dir || '.'
 let directory = path.join(__dirname, './src', dir)
 let entryDirectory = path.join(__dirname, './src/entry');
 fs.readdirSync(directory)
  .forEach(file => {
   let fullpath = path.join(directory, file)
   let stat = fs.statSync(fullpath)
   let extname = path.extname(fullpath)
   if (stat.isFile() && extname === '.vue') {
    let entryFile = path.join(entryDirectory, dir, path.basename(file, extname) + '.js')
    fs.outputFileSync(entryFile, getEntryFileContent(entryFile, fullpath))
    let name = path.join(dir, path.basename(file, extname))
    entry[name] = entryFile + '?entry=true'
   } else if (stat.isDirectory()) {
    let subdir = path.join(dir, file)
    walk(subdir)
   }
  })
}

walk()

2、通過weex-loader打包生成native jsbundle

3、 通過weex-vue-loader打包生成web jsbundle

function getBaseConfig () {
 return {
  entry: entry,
  output: {
   path: 'dist'
  },
  resolve: {
   extensions: ['', '.js', '.vue'],
   fallback: [path.join(__dirname, './node_modules')],
   alias: {
    'assets': path.resolve(__dirname, './src/assets/'),
    'components': path.resolve(__dirname, './src/components/'),
    'constants': path.resolve(__dirname, './src/constants/'),
    'api': path.resolve(__dirname, './src/api/'),
    'router': path.resolve(__dirname, './src/router/'),
    'store': path.resolve(__dirname, './src/store/'),
    'views': path.resolve(__dirname, './src/views/'),
    'config': path.resolve(__dirname, './config'),
    'utils': path.resolve(__dirname, './src/utils/')
   }
  },
  module: {
   preLoaders: [
    {
     test: /\.vue$/,
     loader: 'eslint',
     exclude: /node_modules/
    },
    {
     test: /\.js$/,
     loader: 'eslint',
     exclude: /node_modules/
    }
   ],
   loaders: [
    {
     test: /\.js$/,
     loader: 'babel',
     exclude: /node_modules/
    }, {
     test: /\.vue(\?[^?]+)?$/,
     loaders: []
    }
   ]
  },
  vue: {
   postcss: [cssnext({
    features: {
     autoprefixer: false
    }
   })]
  },
  plugins: [bannerPlugin]
 }
}

const webConfig = getBaseConfig()
webConfig.output.filename = 'web/[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')

項目結(jié)構(gòu)

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

項目啟動

  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 -> 啟動

iOS 啟動

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

h5 啟動方式

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

項目示例

android 端示例

iOS 端示例


結(jié)語

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

框架項目地址:weex-frame_jb51.rar

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • element ui 表格動態(tài)列顯示空白bug 修復方法

    element ui 表格動態(tài)列顯示空白bug 修復方法

    今天小編就為大家分享一篇element ui 表格動態(tài)列顯示空白bug 修復方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 淺談Vue.js

    淺談Vue.js

    本文主要介紹了Vue.js的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • VUE中的自定義指令鉤子函數(shù)講解

    VUE中的自定義指令鉤子函數(shù)講解

    這篇文章主要介紹了VUE中的自定義指令鉤子函數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實現(xiàn)鼠標滑動預覽視頻封面組件示例詳解

    vue實現(xiàn)鼠標滑動預覽視頻封面組件示例詳解

    這篇文章主要為大家介紹了vue實現(xiàn)鼠標滑動預覽視頻封面組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Vue子組件內(nèi)的props對象參數(shù)配置方法

    Vue子組件內(nèi)的props對象參數(shù)配置方法

    這篇文章主要介紹了?Vue?子組件內(nèi)的??props?對象里的?default?參數(shù)是如何定義Array、?Object?、或?Function?默認值的正確寫法說明,感興趣的朋友跟隨小編一起看看吧
    2022-08-08
  • electron-vue開發(fā)環(huán)境內(nèi)存泄漏問題匯總

    electron-vue開發(fā)環(huán)境內(nèi)存泄漏問題匯總

    這篇文章主要介紹了electron-vue開發(fā)環(huán)境內(nèi)存泄漏問題匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • vue-cli+iview項目打包上線之后圖標不顯示問題及解決方法

    vue-cli+iview項目打包上線之后圖標不顯示問題及解決方法

    這篇文章主要介紹了解決vue-cli+iview項目打包上線之后圖標不顯示問題,本文通過兩種方法給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • vuex state中的數(shù)組變化監(jiān)聽實例

    vuex state中的數(shù)組變化監(jiān)聽實例

    今天小編就為大家分享一篇vuex state中的數(shù)組變化監(jiān)聽實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue3?vue-devtools?調(diào)試工具下載安裝使用教程

    Vue3?vue-devtools?調(diào)試工具下載安裝使用教程

    vue-devtools是一款基于chrome游覽器的插件,用于調(diào)試vue應用,這可以極大地提高我們的調(diào)試效率,尤其是對于初學vue的朋友來說可謂是一大利器,這篇文章主要介紹了Vue3?vue-devtools?調(diào)試工具下載安裝,需要的朋友可以參考下
    2022-08-08
  • Vue export import 導入導出的多種方式與區(qū)別介紹

    Vue export import 導入導出的多種方式與區(qū)別介紹

    這篇文章主要介紹了Vue export import 導入導出的多種方式與區(qū)別介紹,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論

嘉鱼县| 大悟县| 灵宝市| 如皋市| 瓦房店市| 庆元县| 龙南县| 广汉市| 吉木萨尔县| 都江堰市| 临漳县| 栾城县| 平果县| 石棉县| 苍梧县| 玉林市| 瑞金市| 女性| 安塞县| 秭归县| 吕梁市| 堆龙德庆县| 石狮市| 赣州市| 大兴区| 祁东县| 涡阳县| 麻阳| 固镇县| 金塔县| 霍邱县| 兴文县| 怀仁县| 绥宁县| 昭觉县| 松桃| 永吉县| 资阳市| 民勤县| 娄烦县| 昆山市|