Vue day7

使用 饿了么的 MintUI 组件

Github 仓储地址

Mint-UI官方文档

  1. 导入所有MintUI组件:
1
2

import MintUI from 'mint-ui'
  1. 导入样式表:
1
2

import 'mint-ui/lib/style.css'
  1. 在 vue 中使用 MintUI中的Button按钮和Toast弹框提示:
1
2

Vue.use(MintUI)
  1. 使用的例子:
1
2

<mt-button type="primary" size="large">primary</mt-button>

Mint-UI中按需导入的配置方式

  1. 修改 .babelrc

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
    "presets": [
    ["es2015", { "modules": false }]
    ],
    "plugins": [["component", [
    {
    "libraryName": "mint-ui",
    "style": true
    }
    ]]]
    }
  2. 导入所有babel-plugin-componen组件:

1
2

import { Button, Cell } from 'mint-ui'
  1. 引入部分组件
1
2
3
4
5
6
7
8

Vue.component(Button.name, Button)
// Button.name 是可以自定义的 例如 Vue.component("mybtn", Button)
Vue.component(Cell.name, Cell)
/* 或写为
* Vue.use(Button)
* Vue.use(Cell)
*/
  1. 使用的例子:
1
2
3

<mt-button type="primary" size="large">primary</mt-button>
// 假如改变了 名字 那就要用自定义的组件名称 <mybtn>1233</mybtn>

Mint-UI中按需导入的配置方式

使用 MUI 代码片段

注意: MUI 不同于 Mint-UI,MUI只是开发出来的一套好用的代码片段,里面提供了配套的样式、配套的HTML代码段,类似于 Bootstrap; 而 Mint-UI,是真正的组件库,是使用 Vue 技术封装出来的 成套的组件,可以无缝的和 VUE项目进行集成开发;
因此,从体验上来说, Mint-UI体验更好,因为这是别人帮我们开发好的现成的Vue组件;
从体验上来说, MUI和Bootstrap类似;
理论上,任何项目都可以使用 MUI 或 Bootstrap,但是,MInt-UI只适用于Vue项目;

注意: MUI 并不能使用 npm 去下载,需要自己手动从 github 上,下载现成的包,自己解压出来,然后手动拷贝到项目中使用;

官网首页

文档地址

  1. 导入 MUI 的样式表:
1
2

import '../lib/mui/css/mui.min.css'
  1. webpack.config.js中添加新的loader规则:
1
2

{ test: /\.(png|jpg|gif|ttf)$/, use: 'url-loader' }
  1. 根据官方提供的文档和example,尝试使用相关的组件

将项目源码托管到oschina中

  1. 点击头像 -> 修改资料 -> SSH公钥 如何生成SSH公钥

  2. 创建自己的空仓储,使用 git config --global user.name "用户名"git config --global user.email ***@**.com 来全局配置提交时用户的名称和邮箱

  3. 使用 git init 在本地初始化项目

  4. 使用 touch README.mdtouch .gitignore 来创建项目的说明文件和忽略文件;

  5. 使用 git add . 将所有文件托管到 git 中

  6. 使用 git commit -m "init project" 将项目进行本地提交

  7. 使用 git remote add origin 仓储地址将本地项目和远程仓储连接,并使用origin最为远程仓储的别名

  8. 使用 git push -u origin master 将本地代码push到仓储中

App.vue 组件的基本设置

  1. 头部的固定导航栏使用 Mint-UIHeader 组件;

  2. 底部的页签使用 muitabbar;

  3. 购物车的图标,使用 icons-extra 中的 mui-icon-extra mui-icon-extra-cart,同时,应该把其依赖的字体图标文件 mui-icons-extra.ttf,复制到 fonts 目录下!

  4. 将底部的页签,改造成 router-link 来实现单页面的切换;

  5. Tab Bar 路由激活时候设置高亮的两种方式:

    • 全局设置样式如下:
    1
    2
    3
    4
    5
    6

    .router-link-active{

    color:#007aff !important;

    }
    • 或者在 new VueRouter 的时候,通过 linkActiveClass 来指定高亮的类:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    // 创建路由对象

    var router = new VueRouter({

    routes: [

    { path: '/', redirect: '/home' }

    ],

    linkActiveClass: 'mui-active'

    });

实现 tabbar 页签不同组件页面的切换

  1. 将 tabbar 改造成 router-link 形式,并指定每个连接的 to 属性;

  2. 在入口文件中导入需要展示的组件,并创建路由对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

// 导入需要展示的组件

import Home from './components/home/home.vue'

import Member from './components/member/member.vue'

import Shopcar from './components/shopcar/shopcar.vue'

import Search from './components/search/search.vue'



// 创建路由对象

var router = new VueRouter({

routes: [

{ path: '/', redirect: '/home' },

{ path: '/home', component: Home },

{ path: '/member', component: Member },

{ path: '/shopcar', component: Shopcar },

{ path: '/search', component: Search }

],

linkActiveClass: 'mui-active'

});

使用 mt-swipe 轮播图组件

  1. 假数据:
1
2
3
4
5
6
7
8
9
10

lunbo: [

'http://www.itcast.cn/images/slidead/BEIJING/2017440109442800.jpg',

'http://www.itcast.cn/images/slidead/BEIJING/2017511009514700.jpg',

'http://www.itcast.cn/images/slidead/BEIJING/2017421414422600.jpg'

]
  1. 引入轮播图组件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

<!-- Mint-UI 轮播图组件 -->

<div class="home-swipe">

<mt-swipe :auto="4000">

<mt-swipe-item v-for="(item, i) in lunbo" :key="i">

<img :src="item" alt="">

</mt-swipe-item>

</mt-swipe>

</div>

</div>

.vue组件中使用vue-resource获取数据

  1. 运行cnpm i vue-resource -S安装模块

  2. 导入 vue-resource 组件

1
2

import VueResource from 'vue-resource'
  1. 在vue中使用 vue-resource 组件
1
2

Vue.use(VueResource);

使用mui的tab-top-webview-main完成分类滑动栏

兼容问题

  1. 和 App.vue 中的 router-link 身上的类名 mui-tab-item 存在兼容性问题,导致tab栏失效,可以把mui-tab-item改名为mui-tab-item1,并复制相关的类样式,来解决这个问题;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    .mui-bar-tab .mui-tab-item1.mui-active {
    color: #007aff;
    }

    .mui-bar-tab .mui-tab-item1 {
    display: table-cell;
    overflow: hidden;
    width: 1%;
    height: 50px;
    text-align: center;
    vertical-align: middle;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: #929292;
    }

    .mui-bar-tab .mui-tab-item1 .mui-icon {
    top: 3px;
    width: 24px;
    height: 24px;
    padding-top: 0;
    padding-bottom: 0;
    }

    .mui-bar-tab .mui-tab-item1 .mui-icon~.mui-tab-label {
    font-size: 11px;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    }
  2. tab-top-webview-main组件第一次显示到页面中的时候,无法被滑动的解决方案:

    • 先导入 mui 的JS文件:

      1
      import mui from '../../../lib/mui/js/mui.min.js'
    • 在 组件的 mounted 事件钩子中,注册 mui 的滚动事件:

      1
      2
      3
      4
      5
      6
      mounted() {
      // 需要在组件的 mounted 事件钩子中,注册 mui 的 scroll 滚动事件
      mui('.mui-scroll-wrapper').scroll({
      deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006
      });
      true}
  3. 滑动的时候报警告:Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080

    1
    解决方法,可以加上* { touch-action: none; } 这句样式去掉。

原因:(是chrome为了提高页面的滑动流畅度而新折腾出来的一个东西) http://www.cnblogs.com/pearl07/p/6589114.html
https://developer.mozilla.org/zh-CN/docs/Web/CSS/touch-action

移除严格模式

babel-plugin-transform-remove-strict-mode

vue-preview

一个Vue集成PhotoSwipe图片预览插件

-------------本文结束感谢您的阅读-------------
0%