开发指南
搭建项目
安装项目依赖
- Vue-cli搭建一个空项目,安装项目所需依赖包。
编写自定义组件
- 组件名称开头大写。组件样式文件(.scss)和源码文件(.vue)放在同级。
- 编写自定义组件,将组件源码放入总src文件夹下。
- 每个组件创建一个自己的文件夹。
- 总src文件夹下面assets文件夹,包含公用样式的文件夹(styles)和公用方法的文件夹(utils)。
注意:(1)公用样式和方法放在公用模块,组件内部的样式写在各自组件的.scss文件和.js文件。
(2)字体和图标放在公用样式的同级目录下。
- 上传组件源码目录结构:
组件添加
添加文件夹
- 在总的src文件夹下,添加组件,组件目录如下:
- 组件内部包含两部分内容:
(1)组件本身代码src文件夹(.scss和.vue)
(2)注册功能组件。每个组件有一个入口文件index.js,里面包含install注册函数。index.js放在组件src根目录下。
import PortLog from './src/PortLog.vue'
PortLog.install = function (Vue) {
Vue.component(PortLog.name, PortLog)
}
export default PortLog
1
2
3
4
5
2
3
4
5
- 组件命名方式
(1)有意义的名词、简短、具有可读性
(3)组件文件夹的名字使用组件去掉公司前缀的组件名(例:portLog)
(4)文件夹命名主要以功能模块代表命名
组件中.vue文件内name属性使用Qs开头,后面添加描述组件的命名。
例name: 'QsTableCommon'
export default{
name: 'QsTableCommon',
props: {
}
......
}
1
2
3
4
5
6
2
3
4
5
6
注意:组件内.vue文件内必须含有name属性,开头使用Qs...命名方式。
- 总的index.js文件的注册所有的组件,写入当前组件的版本号
version: '1.0.1'
,和上传时配置的package.json
的文件版本号保持一致。
import PortLog from './components/portLog/index.js'
import TableCommon from './components/theTableCommon/index.js'
const components = [
PortLog,
TableCommon
]
const install = function (Vue) {
components.forEach(component => {
Vue.component(component.name, component)
})
}
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue)
}
export default {
version: '1.0.1', // 当前组件的版本号
install,
PortLog,
TableCommon
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
webpack配置
添加component.json文件
- 添加component.json,放在项目package.json文件同级目录下。
- 文件引入总的入口文件和各个组件的入口文件。
{
"port-log": "./src/components/portLog/index.js",
......
"index": "./src/index.js"
}
1
2
3
4
5
2
3
4
5
注意:打包生成的命名方式使用中横线连接,每一个逻辑断点使用一个中横线,不能使用驼峰形式。
修改webpack中打包配置
- 修改项目config文件夹下index.js文件,可以修改打包完成后的文件名。
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths 修改打包完成文件名
assetsRoot: path.resolve(__dirname, '../lib'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
......
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 修改build问价夹下webpack.prod.conf.js文件,整理各个组件入口。
该文件取消引入HtmlWebpackPlugin
const env = require('../config/prod.env')
// 整理各个组件入口
const components = require('../components.json')
const entrys = {}
Object.keys(components).forEach(item => {
entrys[item] = components[item]
})
1
2
3
4
5
6
7
2
3
4
5
6
7
- 在build文件夹下添加webpack.prodAll.conf.js文件,然后在文件中添加组件的总入口。
该文件取消引入HtmlWebpackPlugin
const webpackConfig = merge(baseWebpackConfig, {
entry: {
// 设置打包组件的总入口文件
'index': './src/index.js'
},
......
})
1
2
3
4
5
6
7
2
3
4
5
6
7
组件测试
- 修改webpack.dev.conf.js配置文件,修改入口文件为main.js
const devWebpackConfig = merge(baseWebpackConfig, {
entry: {
// 设置测试项目的入口文件
app: './src/main.js'
},
......
})
1
2
3
4
5
6
7
2
3
4
5
6
7
- 在components同级文件夹devPage文件夹放测试页面
- router文件夹存放测试页面路径
- 使用npm run dev 命令运行测试项目
组件打包
- 使用 npm run build 打包组件。
- 使用 npm run build_all 打包加入组件总入口。
- 修改打包上传的配置文件(package.json)
name: 组件库名称(不能与npm公网上名称重复,名称使用中横线连接,使用小写字母)
version: 版本号。每更新一次版本,版本号不能重复。
private: 修改为false。
main: 打包后生成的入口文件。 - 组件上传。
申请npm账号;
npm login 登录账号;
如果下载依赖包源地址是淘宝镜像地址,修改为npm源地址(npm config set registry http://registry.npmjs.org
);
上传组件包(npm publish --registry=http://registry.npmjs.org
);
组件库删除
- npm login登录账号;
- 删除组件库(
npm unpublish 包名 --force
)
组件使用
安装组件 npm install quick-share-ui
;
- 全部引入
在引入组件库的项目中的main.js中导入全部组件,引入组件样式。
import QuickShareUI from 'quick-share-ui'
import 'quick-share-ui/lib/theme/index.css'
Vue.use(QuickShareUI)
1
2
3
4
2
3
4
- 按需引入
在引入组件库的项目中的main.js中引入部分组件,引入组件样式。
import {port-log} from 'quick-share-ui'
import 'quick-share-ui/lib/theme/index.css'
Vue.use(port-log)
1
2
3
2
3
按需引入组件,需要下载安装babel-plugin-componentnpm install babel-plugin-component -D
修改.babelrc文件
"plugins": ["transform-vue-jsx", "transform-runtime", ["component", {
"libraryName": "quick-share-ui",
"styleLibrary": {
"name": "theme",
"base": false
}
}]],
1
2
3
4
5
6
7
2
3
4
5
6
7
- 使用组件,传入组件对应参数。
<qs-port-log
...
...
></qs-port-log>
1
2
3
4
2
3
4
组件版本控制
- 组件库名称: quick-share-ui
- 内部组件命名:...-...
- 版本号:当前版本:1.0.1
修改组件整体风格和框架结构 修改版本号2.0.1 依次类推
新增组件 修改版本号1.1.1 依次类推
修改组件bug和优化代码 修改版本号1.1.2 依次类推
← 更新日志 接口日志--portLog →