浅谈基于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语句中的CDATA标签的意义
May 09 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
Javascript学习指南
Dec 01 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
May 28 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
提高Node.js性能的应用技巧分享
Aug 10 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
Aug 28 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
Mar 08 Javascript
微信小程序实现蒙版弹出窗功能
Sep 17 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代码
2006/12/06 PHP
php目录管理函数小结
2008/09/10 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
php实现简单洗牌算法
2013/06/18 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
django框架如何集成celery进行开发
2017/05/24 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python中format函数如何使用
2020/06/22 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
超市活动计划书
2014/04/24 职场文书
催款通知书范文
2015/04/17 职场文书
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript