前端UI组件移动开发【免费下载链接】cube-ui:large_orange_diamond: A fantastic mobile ui lib implement by Vue项目地址https://gitcode.com/gh_mirrors/cu/cube-ui点击查看免费下载cube-ui 是由滴滴出行开源的移动端 UI 组件库基于 Vue 2.x 实现目标是提供一套高质量、可定制、体验接近原生 App 的移动端组件解决方案。本文以仓库内的 README_zh-CN.md 为骨架完整覆盖从新项目初始化、全量/按需引入、到本地开发调试的完整链路并深入源码说明其插件安装机制与底层实现帮助你快速在自己的 Vue 移动端项目中落地 cube-ui。项目概览cube-ui 是什么cube-ui 的官方定位是一套A fantastic mobile ui lib implement by Vue即基于 Vue 实现的移动端 UI 库。从 package.json 可以确认当前仓库对应版本为1.12.56包名cube-ui入口配置如下main:lib/index.jsUMD 构建产物供 CommonJS/浏览器直接使用module:src/index.jsES Module 源码入口供支持 tree-shaking 的打包器使用typings:types/index.d.tsTypeScript 类型声明peerDependencies:vue ^2.5.13明确要求 Vue 2.5.13 及以上版本运行时依赖仅两个better-scroll ~1.12.6与vue-create-api ^0.2.3这意味着 cube-ui 组件库在组件维度上覆盖了基础交互Button、Loading、Tip、Toolbar、表单Checkbox、Radio、Input、Select、Switch、Rate、Validator、Upload、Form、弹层Popup、Toast、Picker、Dialog、ActionSheet、Drawer、ImagePreview、滚动交互Scroll、Slide、IndexList、Swipe、Sticky、ScrollNav、RecycleList四大类全部组件清单可以在 src/module.js 中查看到。新项目使用官方模板快速初始化如果你是从零开始的新项目README 推荐使用基于 vue-cli 的官方模板 cube-template 来初始化配置与代码一条命令即可$ vue init cube-ui/cube-template projectname该模板会帮你完成 Vue 项目脚手架搭建并预置 cube-ui 相关的构建配置例如按需加载所需的 babel 插件配置。如果你的项目不是新项目而是已有工程则直接跳到下一步安装即可。安装 cube-ui在任意 Vue 2.x 项目中通过 npm 安装并保存为运行依赖npm install cube-ui --save安装完成后你的package.json的dependencies中会出现cube-ui条目。由于 cube-ui 依赖 Vue 2.x请确保项目中的 Vue 版本不低于2.5.13见 package.json 的peerDependencies。全量引入一行代码注册全部组件最直接的用法是整体引入并注册在项目的入口文件通常是main.js中import Vue from vue import Cube from cube-ui Vue.use(Cube)执行Vue.use(Cube)后所有组件与样式都会被全局注册。从源码 src/index.js 可以看到这一过程的实现细节src/index.js从./module聚合导入全部组件组装成一个components数组定义install(Vue)函数遍历数组调用每个组件的install方法完成全局注册Radio组件除外因为它以RadioGroup.Radio的子组件形式提供见 src/module.js最终导出的Cube对象上除了install还挂载了BScroll即 better-scroll 的直接引用和createAPI两个工具并且每个组件也以首字母大写的属性形式暴露在Cube上例如Cube.Button、Cube.Toast如果页面环境存在全局window.Vue还会自动执行window.Vue.use(install)实现免 import 的自动注册。组件注册的底层依赖install方法例如 src/modules/button/index.jsimport Button from ../../components/button/button.vue Button.install function (Vue) { Vue.component(Button.name, Button) } export default Button可以看到每个模块都是标准 Vue 插件形态通过Vue.component以组件自身的name形如cube-button注册为全局组件。按需使用显著减小打包体积全量引入会打包所有组件对于只需要其中部分组件的业务场景README 提供了按需使用的方式。只需按命名导出引入所需组件并逐个注册import Vue from vue import { /* eslint-disable no-unused-vars */ Style, Button, ActionSheet } from cube-ui Vue.use(Button) Vue.use(ActionSheet)这段代码有两个关键细节Style必须引入Style是样式模块对应 src/modules/style/index.js其内部只是import ../../common/stylus/index.styl导入全局样式并在install()中空实现。按需引入时若不导入Style组件虽然注册成功但缺少基础样式与主题变量。引入Style后虽然对其调用Vue.use无实际效果但按需场景下建议与其他组件一并引入或通过构建配置单独注入样式。依赖babel-plugin-transform-modulesREADME 明确说明上述按需命名导入依赖 Babel 插件 babel-plugin-transform-modules需要先在.babelrc中配置例如{ plugins: [ [transform-modules, { cube-ui: { transform: cube-ui/lib/${member}, kebabCase: true } }] ] }配置后import { Button } from cube-ui会被编译为从cube-ui/lib/button引入从而只打包 Button 组件及其依赖未配置该插件时按需写法无法生效。深入源码createAPI 与命令式组件调用cube-ui 的一大特色是支持以命令式 API 调用组件如Toast、Dialog、ActionSheet等弹层类组件这依赖vue-create-api。仓库在 src/common/helpers/create-api.js 中封装了入口import createAPIComponent from vue-create-api export default function createAPI (Vue, Component, events, single) { Vue.use(createAPIComponent, {componentPrefix: cube-}) const api Vue.createAPI(Component, events, single) return api }其工作流程是先以cube-作为组件名前缀安装vue-create-api插件再通过Vue.createAPI(Component, events, single)生成命令式调用方法。以 Toast 为例开发者可以在任意组件中直接this.$createToast({ txt: Hello }).show()无需在模板中声明cube-toast。single参数控制该组件实例是否为单例模式例如提示类组件通常希望全局只有一个实例。createAPI作为独立模块通过 src/modules/create-api/index.js 对外导出并在 src/index.js 中挂载到Cube.createAPI上方便第三方组件作者复用同样的机制为自己的组件生成命令式 API。本地开发克隆仓库并运行如果你想在本地运行 cube-ui 的示例工程或参与源码开发README 给出了完整步骤git clone gitgithub.com:didi/cube-ui.git cd cube-ui npm install npm run dev # or run document development npm run doc-dev对应的 npm scripts 定义在 package.json命令作用npm run dev启动组件示例example开发服务器npm run doc-dev同时启动文档站与示例开发服务器npm run build执行构建产出lib/下的 UMD 产物npm run doc-build/demo-build分别构建文档站与示例站点npm run lint对src与测试目录执行 ESLint 检查npm run unit通过 Karma 运行单元测试见 test/unit/karma.conf.jsnpm run test运行单元测试并上报 codecov 覆盖率npm install会拉取全部依赖包括构建链路的 webpack 3、babel、stylus 等见 package.json 的devDependencies。注意项目要求 Node 4、npm 3见engines字段如使用较新的 Node 版本出现兼容问题建议参考 CI 配置中的 Node 版本运行。npm run dev启动后示例应用与文档应用均基于 webpack-dev-server 提供热更新。文档应用入口在 document/main.js示例应用入口在 example/main.js两者的页面路由分别由 document/router/index.js 与 example/router/index.js 管理。仓库结构导览源码、产物与文档阅读源码时可按以下路径快速定位组件源码所有.vue组件集中在 src/components 下每个组件一个目录如button/button.vue、toast/toast.vue模块包装层src/modules 下的同名目录负责为每个组件补齐install方法并导出是全量引入与按需引入两条路径的公共出口公共能力src/common/helpers 提供create-api.js、dom.js、util.js等工具src/common/mixins 提供popup.js、scroll.js、input.js等复用逻辑构建产物lib 目录存放每个组件独立的*.min.js/*.min.css与总包cube.min.js/cube.min.css按需引入时 babel 插件实际指向这里类型声明types 与 test/test-dts 提供 TypeScript 类型与类型测试vetur 提供 Vetur 的标签与属性补全元数据文档与示例document 是文档站源码含中英文 45 篇组件文档example 是组件示例工程docs 是构建后的静态站点产物。版本说明与适用前提本文所有结论均基于当前仓库的实际内容当前仓库版本为1.12.56仅面向Vue 2.xpeerDependencyvue ^2.5.13不适用于 Vue 3 项目全量引入最简单但体积较大按需引入需要额外配置babel-plugin-transform-modules命令式 API如this.$createToast依赖vue-create-api已在 src/common/helpers/create-api.js 中统一封装。对于希望直接上手体验的读者可以用手机扫描 assets/example-qr.png 中的示例二维码或在本地按上文本地开发一节启动示例工程后访问示例页面直观查看各组件在真实移动端视口下的交互效果。掌握上述安装、引入与开发三条路径后你便可以在自己的 Vue 移动端项目中熟练使用 cube-ui 了。赞分享前端UI组件移动开发【免费下载链接】cube-ui:large_orange_diamond: A fantastic mobile ui lib implement by Vue项目地址https://gitcode.com/gh_mirrors/cu/cube-ui点击查看免费下载相关推荐Naive UI 按需引入Tree Shaking完整实践指南手动引入、自动引入与按需全局安装Naive UI 按需引入Tree Shaking完整实践指南手动引入、自动引入与按需全局安装 本指南以 Naive UI 官方文档「按需引入Tree前端UI组件Cube-UI重新定义移动端Vue组件库开发体验Cube UI重新定义移动端Vue组件库开发体验 你是否曾为移动端开发中的这些痛点而苦恼 样式不统一、组件功能缺失、兼容性问题频发、开发效率低下...这前端UI组件移动开发Naive UI 按需引入完全指南Tree Shaking、自动导入与全局按需安装Naive UI 按需引入完全指南Tree Shaking、自动导入与全局按需安装 Naive UI当前仓库版本 2.45.2是一套基于 Vue 3、使用前端UI组件上一篇XXMI启动器免费开源的多游戏模组管理平台轻松打造个性化游戏体验下一篇OBS多平台直播终极指南obs-multi-rtmp插件三步快速上手创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
