cube-ui


主要组件和模块

cube-ui 的组件

style

构建项目后添加了reset.cssbase.css ;就是从项目搭建之初处理一些常见问题以及规范;其中的 base.css对1px显示问题的处理,该UI的的极致体验可见一斑。

create api

其作用是把把声明式的组件改为API方式的调用,可是Vue推荐的不就是声明式调用组件吗,声明式调用只需要在调用该组件的地方简单声明即可,如下:

<template>
    XXXX
</template>

 

  是不是非常简单,那create API是干啥用的呢?其实他主要的应用场景是全屏类的弹框组件:

如果在一个层级嵌套很深的子组件中使用,仍然通过声明式的方式,很可能它的样式会受到父元素某些 CSS 的影响导致渲染不符合预期。这类组件最好的使用方式就是挂载到 body 下,但是我们如果是声明式地把这些组件挂载到最外层,对它们的控制也非常不灵活。其实最理想的方式是动态把这类组件挂载到 body 下,createAPI 就是干这个事情的。

eg:

1:开发一个自定义的弹框组件

<template>
  <div class="my-dialog-view">
    <cube-popup ref="popup" @mask-click="hide">
      <div class="subscribe-dialog-wrapper">
        <span class="close" @click="hide"><i class="cubeic-close"></i></span>
        <div class="title">啊哈哈哈哈</div>
        some Word for test

        <cube-button class="button">OK</cube-button>
      </div>
    </cube-popup>
  </div>
</template>

<script>
export default {
  name: 'my-dialog',
  methods: {
    show () {
      this.$refs.popup.show()
      this.$emit('show')
    },
    hide () {
      this.$refs.popup.hide()
      this.$emit('hide')
    }
    // ...
  }
}
</script>

  2:接着使用 createAPI 模块把它变成一个 API 式的组件:

import MyDialog from './components/subscribe-dialog/my-dialog'
createAPI(Vue, mybeDialog, [], true)

  3:然后你就可以调用这个组件了

 this.$createSubscribeDialog({
}).show()

create API 也是可以将已有的cube 中的组件变成API方式的调用,实现方法和上面基本一致,只是不需要你自己在开发vue文件了。 

 

better-scroll

处理三方插件

后编译

后编译是 cube-ui 的一个重要的生态,借助于后编译,整个的 web 应用的开发都可以直接基于 ES2015+ 进行开发,而项目依赖的一些 NPM 包也是可以直接使用 ES2015+ 进行开发,并且无需编译可直接发布到 NPM 平台上。这样,这些组件库或者工具就可以有更多的想象空间、可以做更多有意思的事情。

eg:

1:cube-UI利用后编译实现自定义主题

    • 在src目录下创建 them.style 文件
    • 修改webpack中关于stylus-loader的配置项目

项目演示

我创建了一个vue的项目,启动项目如下图所示

我们想要把其中按钮的背景颜色换掉我们要怎么实现呢

这时候我们来想一下如果我们用的是element-UI 我们要怎么实现这个效果呢?我们要重写这个按钮的样式,但是这样有两个问题:1、容易造成代码污染,有可能导致其他的按钮样式发生变化;2、造成代码冗余。当然还有其他的框架是支持重写重新定义主题的,但是这样也会造成代码冗余。

如果我们用的是cube-ui只需要在them.style 文件中进行修改即可

例如

// button
//$btn-bgc := $color-regular-blue
//$btn-active-bgc := $color-blue
$btn-bgc := #409eff
$btn-active-bgc := #66b1ff

是不是非常简单。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM