浅谈基于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 10 Javascript
Array栈方法和队列方法的特点说明
Jan 24 Javascript
JavaScript对象的property属性详解
Apr 01 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
Dec 31 Javascript
JavaScript Date对象详解
Mar 01 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
Bootstrap CSS使用方法
Dec 23 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 Javascript
vue数据更新UI不刷新显示的解决办法
Aug 06 Javascript
vue3+typescript实现图片懒加载插件
Oct 26 Javascript
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
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性能分析工具XHProf安装使用教程
2015/05/13 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
一个JQuery操作Table的代码分享
2012/03/30 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
跟老齐学Python之list和str比较
2014/09/20 Python
python爬取m3u8连接的视频
2018/02/28 Python
使用python生成目录树
2018/03/29 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python游戏地图最短路径求解
2019/01/16 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
校长师德表现自我评价
2015/03/04 职场文书
雷锋的故事观后感
2015/06/10 职场文书
运动会广播稿100字
2015/08/19 职场文书
《坐井观天》教学反思
2016/02/18 职场文书