快速上手

新手教程项目:cube-application-guide

脚手架

如果你打算用在一个新项目中使用 cube-ui,可以通过我们提供的一套基于 vue-cli 实现的脚手架去初始化 cube-ui 项目的配置和基础代码,这样你就可以忽略安装步骤,直接看使用部分

  1. vue init cube-ui/cube-template projectname

关于初始化时特殊的配置项,请参考 cube-template WIKI

如果你打算在现有项目中使用 cube-ui,请先参考安装部分。

安装

NPM

  1. npm install cube-ui --save

cube-ui 搭配 webpack 2+ 支持后编译和普通编译 2 种构建方式(默认使用后编译),使用前都需要修改应用的依赖和配置。

  • 后编译

1. 修改 package.json 并安装依赖

  1. {
  2. // webpack-post-compile-plugin 依赖 compileDependencies
  3. "compileDependencies": ["cube-ui"],
  4. // webpack-transform-modules-plugin 依赖 transformModules
  5. "transformModules": {
  6. "cube-ui": {
  7. "transform": "cube-ui/src/modules/- {member}",
  8. "kebabCase": true
  9. }
  10. },
  11. "devDependencies": {
  12. // 新增 stylus 相关依赖
  13. "stylus": "^0.54.5",
  14. "stylus-loader": "^2.1.1",
  15. "webpack-post-compile-plugin": "^0.3.1",
  16. "webpack-transform-modules-plugin": "^0.3.2"
  17. }
  18. }

2. 修改 webpack.base.conf.js

  1. var PostCompilePlugin = require('webpack-post-compile-plugin')
  2. var TransformModulesPlugin = require('webpack-transform-modules-plugin')
  3. module.exports = {
  4. // ...
  5. plugins: [
  6. // ...
  7. new PostCompilePlugin(),
  8. new TransformModulesPlugin()
  9. ]
  10. // ...
  11. }

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

  1. exports.cssLoaders = function (options) {
  2. // ...
  3. const stylusOptions = {
  4. 'resolve url': true
  5. }
  6. // https://vue-loader.vuejs.org/en/configurations/extract-css.html
  7. return {
  8. css: generateLoaders(),
  9. postcss: generateLoaders(),
  10. less: generateLoaders('less'),
  11. sass: generateLoaders('sass', { indentedSyntax: true }),
  12. scss: generateLoaders('sass'),
  13. stylus: generateLoaders('stylus', stylusOptions),
  14. styl: generateLoaders('stylus', stylusOptions)
  15. }
  16. }

4. 修改 vue-loader.conf.js

  1. module.exports = {
  2. loaders: utils.cssLoaders({
  3. sourceMap: sourceMapEnabled,
  4. extract: false
  5. }),
  6. // ...
  7. }

具体参见 https://github.com/vuejs-templates/webpack/pull/970/files

  • 普通编译

1. 修改 package.json 并安装依赖

  1. {
  2. // webpack-transform-modules-plugin 依赖 transformModules
  3. "transformModules": {
  4. "cube-ui": {
  5. "transform": "cube-ui/lib/- {member}",
  6. "kebabCase": true,
  7. "style": {
  8. "ignore": ["create-api", "better-scroll"]
  9. }
  10. }
  11. },
  12. "devDependencies": {
  13. "webpack-transform-modules-plugin": "^0.3.2"
  14. }
  15. }

2. 修改 webpack 配置:

  1. // webpack.config.js
  2. var TransformModulesPlugin = require('webpack-transform-modules-plugin')
  3. module.exports = {
  4. // ...
  5. resolve: {
  6. // ...
  7. alias: {
  8. // ...
  9. 'cube-ui': 'cube-ui/lib'
  10. // ...
  11. }
  12. // ...
  13. }
  14. // ...
  15. plugins: [
  16. // ...
  17. new TransformModulesPlugin()
  18. ]
  19. // ...
  20. }

CDN

  1. <script src="https://unpkg.com/cube-ui/lib/cube.min.js"></script>
  2. <link rel="stylesheet" href="https://unpkg.com/cube-ui/lib/cube.min.css">

使用

全部引入

一般在入口文件中:

  1. import Vue from 'vue'
  2. import Cube from 'cube-ui'
  3. Vue.use(Cube)

按需引入

  1. import {
  2. /* eslint-disable no-unused-vars */
  3. Style,
  4. Button
  5. } from 'cube-ui'

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

我们推荐直接全局注册:

  1. // 全局注册
  2. Vue.use(Button)
  3. // ...

所有的可按需引入的组件以及模块:

  1. import {
  2. // 基础样式
  3. Style,
  4. // basic
  5. Button,
  6. Loading,
  7. Tip,
  8. Toolbar,
  9. // form
  10. Checkbox,
  11. CheckboxGroup,
  12. Radio,
  13. Input,
  14. Textarea,
  15. Select,
  16. Switch,
  17. Rate,
  18. Validator,
  19. Upload,
  20. Form,
  21. // popup
  22. Popup,
  23. Toast,
  24. Picker,
  25. CascadePicker,
  26. DatePicker,
  27. TimePicker,
  28. SegmentPicker,
  29. Dialog,
  30. ActionSheet,
  31. Drawer,
  32. // scroll
  33. Scroll,
  34. Slide,
  35. IndexList,
  36. Swipe
  37. } from 'cube-ui'

也可以引入create-apibetter-scroll模块:

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

示例

  1. <template>
  2. <cube-button @click="showDialog">show dialog</cube-button>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. showDialog() {
  8. this.- createDialog({
  9. type: 'alert',
  10. title: 'Alert',
  11. content: 'dialog content'
  12. }).show()
  13. }
  14. }
  15. }
  16. </script>

原文:

https://didi.github.io/cube-ui/#/zh-CN/docs/quick-start