浅谈基于Vue.js的移动组件库cube-ui


Posted in Javascript onDecember 20, 2017

cube-ui 是滴滴公司的技术团队基于 Vue.js 实现的精致移动端组件库。很赞,虽然组件还不是很多,但是基本场景是够用了,感谢开源!

首先创建一个vue项目

vue init webpack my-project
cd my-project
npm install

安装cube-ui

npm install cube-ui -S

官方推荐使用 babel-plugin-transform-modules 插件,可以更优雅引入组件模块以及对应的样式。

npm install babel-plugin-transform-modules -D

然后配置下这个插件,修改 .babelrc:(添加到plugins中去)

{
 "plugins": [
 ["transform-modules", {
  "cube-ui": {
  "transform": "cube-ui/lib/${member}",
  "kebabCase": true,
  "style": {
   "ignore": ["create-api", "better-scroll"]
  }
  }
 }]
 ]
}

引入方式1:全部引入

一般在入口文件main.js中:

import Vue from 'vue'
import Cube from 'cube-ui' // 一般直接放在这个位置
Vue.use(Cube)

全部引入了后就相当于全局注册了,直接用就可以了。不需要在每个.vue文件中import { … }(局部引用),以及components{ … }局部注册了。

引入方式2:按需引入

import {
 /* eslint-disable no-unused-vars */
 Style, // 必需
 Button
} from 'cube-ui'

注意: 按需引入的话,是不会打包基础样式部分的,所以在使用的时候需要引入 style 模块。

注册方式 可选全局注册也可以选择局部注册:

// 全局注册
Vue.use(Button) // 在入口文件中
// 或者局部注册
// 某个组件中
{
 components: {
 CubeButton: Button
 }
}

所有的可按需引入的组件:

import {
 Button,
 Checkbox,
 Loading,
 Tip,
 Toast,
 Picker,
 TimePicker,
 Dialog,
 ActionSheet,
 Scroll,
 Slide,
 IndexList
} from 'cube-ui'

也可以引入create-api和better-scroll模块:

import { createAPI, BetterScroll } from 'cube-ui'

示例

<template>
 <cube-button @click="showDiaog">show dialog<cube-button>
</template>

<script>
 export default {
 methods: {
  showDialog() {
  this.$createDialog({
   type: 'alert',
   title: 'Alert',
   content: 'dialog content'
  }).show()
  }
 }
 }
</script>

不使用后编译

注意: cube-ui 搭配 webpack 2+ 默认就会使用后编译,但是后编译需要有一些依赖以及配置(参见本页最后);如果不想使用后编译的话,可以直接修改 webpack 配置即可:

// webpack.config.js
module.exports = {
 // ...
 resolve: {
 // ...
 alias: {
  // ...
  'cube-ui': 'cube-ui/lib'
  // ...
 }
 // ...
 }
 // ...
}

使用后编译

cube-ui 搭配 webpack 2+ 后就会默认使用后编译,那么应用就需要兼容 cube-ui 的依赖和配置。

1、修改 package.json

{
 // webpack-post-compile-plugin 依赖 compileDependencies
 "compileDependencies": ["cube-ui"],
 "devDependencies": {
 "babel-plugin-transform-modules": "^0.0.2",
 // 新增 stylus 相关依赖 (都需要额外安装:npm install … -D)
 // stylus 类似于 sass,less
 "stylus": "^0.54.5",
 "stylus-loader": "^2.1.1",
 "webpack-post-compile-plugin": "^0.1.2"
 }
}

2、修改 .babelrc,依旧依赖babel-plugin-transform-modules:

"plugins": [
 ["transform-runtime"],
 ["transform-modules", {
 "cube-ui": {
  // 注意: 这里的路径需要修改到 src/modules 下
  "transform": "./node_modules/cube-ui/src/modules/${member}",
  "kebabCase": true
 }
 }]
]

3、修改 webpack.base.conf.js

var PostCompilePlugin = require('webpack-post-compile-plugin')
module.exports = {
 // ...
 plugins: [
 // ...
 new PostCompilePlugin()
 ]
 // ...
}

4、修改 build/utils.js 中的 exports.cssLoaders 函数

exports.cssLoaders = function (options) {
 // ...
 const stylusOptions = {
 'resolve url': true
 }
 // https://vue-loader.vuejs.org/en/configurations/extract-css.html
 return {
 css: generateLoaders(),
 postcss: generateLoaders(),
 less: generateLoaders('less'),
 sass: generateLoaders('sass', { indentedSyntax: true }),
 scss: generateLoaders('sass'),
 stylus: generateLoaders('stylus', stylusOptions),
 styl: generateLoaders('stylus', stylusOptions)
 }
}

运行看看成果:

npm run dev

浅谈基于Vue.js的移动组件库cube-ui

浅谈基于Vue.js的移动组件库cube-ui

参考官方文档;体验一下官方给的示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript全局变量封装模块实现代码
Nov 28 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
Jan 04 Javascript
详解JS中Array对象扩展与String对象扩展
Jan 07 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
vue实现点击关注后及时更新列表功能
Jun 26 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
JS代码简洁方式之函数方法详解
Jul 28 Javascript
JavaScript的function函数详细介绍
Nov 20 Javascript
Angular2+如何去除url中的#号详解
Dec 20 #Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 #Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 #Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 #Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 #Javascript
JavaScript实现重力下落与弹性效果的方法分析
Dec 20 #Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 #Javascript
You might like
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
php print EOF实现方法
2009/05/21 PHP
php 猴子摘桃的算法
2017/06/20 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python字符串详细介绍
2015/05/09 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
幼儿园新学期寄语
2014/01/18 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
行政监察建议书
2014/05/19 职场文书
党员倡议书
2015/01/19 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
新手入门Mysql--sql执行过程
2021/06/20 MySQL
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL