移动开发vux组件

1)vux的组件的介绍

官网 vux是组件式开发其中有许多丰富的组件 以便web移动页面的快速开发

2)vux的使用步骤

2-1基于vux-cli webpack <projectName>创建的项目

  • 1 npm i vue-cli -g //安装vue脚手架
  • 2 vue init webpack <project> 创建项目
  • 3 npm install vux --save-dev 安装vux
  • 4 安装vux-loader (这个vux文档似乎没介绍,当初没安装结果报了一堆错误)
    npm install vux-loader --save-dev
  • 5 安装less-loader (这个是用以正确编译less源码,否则会出现 ' Cannot GET / ')
    npm install less less-loader --save-dev
  • 6 安装yaml-loader (以正确进行语言文件读取, 我没安装似乎也没报错)
    npm install yaml-loader --save-dev
  • 7(重要)
在build/webpack.base.conf.js 文件进行配置
const vuxLoader = require('vux-loader')
const webpackConfig = originalConfig

// 原来的 module.exports 代码赋值给变量 webpackConfig,

//即将原来的module.exports 改为 const webpackConfig
module.exports = vuxLoader.merge(webpackConfig, { plugins: ['vux-ui'] })

最后别忘了,在resolve: {
    extensions: ['.js', '.vue', '.json','.less']里加入.less。

完整的代码webpack.base.conf.js

'use strict'  
const path = require('path')  
const utils = require('./utils')  
const config = require('../config')  
const vueLoaderConfig = require('./vue-loader.conf')  
  
function resolve (dir) {  
  return path.join(__dirname, '..', dir)  
}  
const vuxLoader = require('vux-loader')  
const webpackConfig  = {  
  entry: {  
    app: './src/main.js'  
  },  
  output: {  
    path: config.build.assetsRoot,  
    filename: '[name].js',  
    publicPath: process.env.NODE_ENV === 'production'  
      ? config.build.assetsPublicPath  
      : config.dev.assetsPublicPath  
  },  
  resolve: {  
    extensions: ['.js', '.vue', '.json','.less'],  
    alias: {  
      'vue$': 'vue/dist/vue.esm.js',  
      '@': resolve('src'),  
    }  
  },  
  module: {  
    rules: [  
      {  
        test: /\.vue$/,  
        loader: 'vue-loader',  
        options: vueLoaderConfig  
      },  
      {  
        test: /\.js$/,  
        loader: 'babel-loader',  
        include: [resolve('src'), resolve('test')]  
      },  
      {  
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,  
        loader: 'url-loader',  
        options: {  
          limit: 10000,  
          name: utils.assetsPath('img/[name].[hash:7].[ext]')  
        }  
      },  
      {  
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,  
        loader: 'url-loader',  
        options: {  
          limit: 10000,  
          name: utils.assetsPath('media/[name].[hash:7].[ext]')  
        }  
      },  
      {  
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,  
        loader: 'url-loader',  
        options: {  
          limit: 10000,  
          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')  
        }  
      }  
    ]  
  }  
}  
module.exports = vuxLoader.merge(webpackConfig, { plugins: ['vux-ui'] })  

题外话如果想要在vue脚手架创建的项目中使用ip或者域名访问(不是localhost)需要在config中的index.js中把host 改成0.0.0.0

3)布局

3-1 ViewBox 标准移动端页面布局
分为头部 内容和底部

头部使用组件XHeader
内容默认div 或者填充想要的其他组件
底部使用 Tabbar

整合新闻列表完整案例


image.png
//app.js
<template>
  <div id="app">
    <view-box>
      <x-header slot="header" class="v-header" :left-options="{showBack:false}"> <!--头部-->
        <div slot="left">首页</div>
        <div>我的新闻</div>
        <div slot="right">搜索</div>
      </x-header>
      <scroller :lock-y="true"> <!--滑动-->
        <div style="width:1000px;">
           <tab active-color='red' :line-width="1"> <!--导航-->
            <tab-item selected>推荐</tab-item>
            <tab-item>视频</tab-item>
            <tab-item>热点</tab-item>
            <tab-item>社会</tab-item>
            <tab-item>娱乐</tab-item>
            <tab-item>军事</tab-item>
            <tab-item>科技</tab-item>
            <tab-item>汽车</tab-item>
            <tab-item>体育</tab-item>
            <tab-item>财经</tab-item>
            <tab-item>国际</tab-item>
            <tab-item>时尚</tab-item>
          </tab>
        </div>
      </scroller>
      <swiper loop auto :list="loopData"><!--轮播-->

      </swiper>

      <panel :list="panelList"></panel>

      <tabbar slot="bottom"> <!--底部-->
        <tabbar-item>
          <span slot="label">我的</span>
        </tabbar-item>
        <tabbar-item>
          <span slot="label">关于</span>
        </tabbar-item>
      </tabbar>
    </view-box>
    <router-view/>
  </div>
</template>

<script>
import { ViewBox,XHeader,Tabbar,TabbarItem,Tab,TabItem,Scroller,Swiper,Panel } from 'vux';
const panelList = [];
for(let i =0;i<10;i++){
  panelList.push({
        src: 'http://somedomain.somdomain/x.jpg',
        fallbackSrc: 'http://placeholder.qiniudn.com/60x60/3cc51f/ffffff',
        title: '标题'+i,
        desc: '由各种物质组成的巨型球状天体,叫做星球。星球有一定的形状,有自己的运行轨道。',
        url: '/component/cell'
      })
}
export default {
  name: 'App',
  components:{
    ViewBox, //容器
    XHeader,  //头部
    Tabbar,  //底部
    TabbarItem, //底部列表
    Tab, //导航
    TabItem, //导航列表
    Scroller, //滑动效果
    Swiper, //轮播效果
    Panel  //新闻主体
  },
  data(){
    return {
      loopData: //轮播数据
        [{
          url: 'javascript:',
          img: 'https://static.vux.li/demo/1.jpg',
          title: '送你一朵fua'
        }, {
          url: 'javascript:',
          img: 'https://static.vux.li/demo/2.jpg',
          title: '送你一辆车'
        }, {
          url: 'javascript:',
          img: 'https://static.vux.li/demo/3.jpg',
          title: '送你一次旅行'
        }],
        panelList:panelList
    }
  }
}
</script>

<style lang="less">
@import '~vux/src/styles/reset.less';
html,body{
  height:100%;
  width:100%;
  overflow:hidden;
}
#app{
  height:100%;
  .v-header{
    background:red;
    div{
      color:#fff;
    }
  }
}
</style>

4)额外组件上拉刷新

vue-scroller
官网案例
https://wangdahoo.github.io/vue-scroller/#/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容