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