浅谈基于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 YUI 读码日记之 YAHOO.util.Dom - Part.3
Mar 22 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
初步了解javascript面向对象
Nov 09 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 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
php中用foreach来操作数组的代码
2011/07/17 PHP
php5.3 注意事项说明
2013/07/01 PHP
php获取随机数组列表的方法
2014/11/13 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
js表单验证实例讲解
2016/03/31 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
javascript时间差插件分享
2016/07/18 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
经典c++面试题三
2015/07/08 面试题
生产管理的三大手法
2013/11/11 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
优秀班主任申报材料
2014/12/16 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
vue里使用create, mounted调用方法
2022/04/26 Vue.js