A Vue.js UI Toolkit for Hekr
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
http://10.10.1.3:7777/hekr-components/index.html
- 运行
npm install @hekr/hekr-components --save
- 安装chart.js依赖
- 引入组件
import HekrComponents from '@hekr/hekr-components'
- 安装组件
Vue.use(HekrComponents)
- 引入css文件
import '~@hekr/hekr-components/dist/hekr-components.css'
- 组件库中的自带图标使用方式为
hk-icons-{图标描述字符串}
- 在html中分别引入组件的js和css文件,组件会注册全局变量HekrComponents
- 在代码中使用
Vue.use(HekrComponents)
安装组件 - 如果在代码中没有使用到hk-chart组件,则可以不引入chart.js,如果使用到了,则需要引入chart.js,并且要保证chart.js会注册全局变量Chart供hk-chart使用,否者会报错
- 组件库中的自带图标使用方式为
hk-icons-{图标描述字符串}
多语言支持(具体参考i18n)
- 组件默认语言为中文(en-US)
- 组建中包含中文(zh-CN)和英文(en-US)两种语言
- 扩展支持其他语言:在安装组件时使用传入其他的语言包即可
- 使用示例
- 使用内置语言
import hekrComponents from '@hekr/hekr-components'
// 使用内置的中文
Vue.use(hekrComponents, {
lang: 'zh-CN'
})
- 扩展语言
import hekrComponents, { i18n } from '@hekr/hekr-components'
// 使用自定义语言
i18n.extend = {
'fr': {/** 语言配置 */},
'zh-TW': { },
'zh-CN': {
/** 递归合并的方式进行语言替换 */
dialog: {
comfirmText: '确定',
cancelText: '确定'
}
}
Vue.use(hekrComponents, {
lang: 'fr'
})
- 本组件库是采用rem为单位开发的,所以在项目中也尽量使用rem为单位开发
- 组件库已经默认集成了rem适配的代码,所以在项目中不需要再写rem适配
关于组件规范请阅读vue风格指南
- 所有的js都必须强制使用eslint进行格式的规范,eslint规则使用eslint-config-standard规则,并且书写js时请尽量采用es6+的特性,并适时书写必要的注释
- 所有组件的css预处理语言使用stylus,在项目中不得使用其他css处理器
- template模板统一使用pug,使用pug的目的是规范template的格式,使整个项目更整洁代码风格一致
- 每个组件都必须放在一个文件夹下面,在文件夹下必须编写组件的README.md文件,该README文件也同时会出现在调试界面
- 每个组件文件夹下必须有一个index.js文件,该文件主要是负责导出组件的install函数,可参考src/components/button
- 编写组件必须在examples文件夹下编写对应的demo,开发的时候的入口文件就是examples/index.js
- 所有文件(文件夹)命名必须采用kebab-case (短横线分隔命名)的方式
- 所有的的组件都必须给定一个name,并且name也是采用kebab-case方式命名,并且必须添加前缀hk,如:hk-button
- 所有的css类都必须采用kebab-case命令的方式
- js变量都必须采用camelCase(驼峰命名),不使用也可以,只要你能通过eslint检测
- 组件的props声明时采用camelCase命名方式,在template中使用的时候采用kebab-case的方式,如下:
props: {
greetingText: String
}
<WelcomeMessage greeting-text="hi"/>
- 事件名称统一都采用kebab-case的方式
- 当模板中一个标签有多个属性时,请换行书写,以提高可读性
<MyComponent
foo="a"
bar="b"
baz="c"
/>
- template中属性的最外层引号请使用双引号("")
- template指令都采用缩写的方式,如v-bind => :
- 开发一个组件(component)或者一个包(package)之后,必须手动在components文件夹下index.js中添加导出模块的代码
- 编写的组件必须同时支持鼠标事件和触摸事件,且不能狗冲突或者同时发生
- 项目中所有使用到的单位都必须是rem,HTML根元素的font-szie为20px,所以我们定义一个大小为20px的时候使用1rem,注意:定义html为20xp是由于在chrome PC版上最小字体为12px,所以调试的时候会出现偏差
- 目录结构说明
examples
│ App.vue
│ index.js // 开发环境入口文件
│ Sidebar.vue // 侧边导航
│ Demo.vue // views文件夹下面的对应视图
│ Docs.vue // 读取每一个组件下面的README文件,并生成组件的文档到视图
│
├─router // vue 路由和导航相关
│ index.js // 定义路由
│
└─views // 路由视图
└─button // 路由页面文件夹
index.vue // 编写对应名字组件的demo
src
│ index.js // 导出所有组件
│
├─components // 基础组件
│ │ index.js // 导出所有components
│ │
│ └─button // button组件
│ button.vue
│ index.js // 编写install函数并导出
│ README.md // 组件README文件
│
└─stylus // 样式文件
hekr-components.styl
variables.styl // 样式变量