# Primeton-UI-基于VUE2.0 + Element-UI的UI框架
Primeton-UI ,一套诞生于实际开发业务的组件库,致力于降低开发人员学习成本,减轻编码负担,提升工作效率。从日常产品的开发业务中总结组件的常见用法,整合封装成一个更便捷更实用的UI组件库
表单 | |
---|---|
选择器select | 选择器扩展select-ext |
富文本selectrich | 单选框radio |
下拉树treeselect | 上传upload |
复选框checkbox | 下拉菜单dropmenu |
联级选择cascader | url批量校验multiurl |
日期范围datetimerange | 动态绑定属性field |
步骤表单stepform | 工具条toolbar |
高级搜索search | ... |
数据 | |
---|---|
表格table | 分页器pagination |
相对时间time | 动态列表list |
弹框dialog | 表单弹窗formdialog |
树形tree | 多列排序sort |
弹出菜单contextmenu | ... |
导航 | |
---|---|
面包屑navigation | 文档大纲outline |
布局 | |
---|---|
图钉affix | 次级菜单secondary-menu |
折叠面板fold | 展开卡片expand-card |
面板分割split | 展开面板floating-pane |
其他 | |
---|---|
翻转flip | 骨架屏skeleton |
下载download-pane | 收缩侧边栏hamburger |
空状态empty | 滑动验证slide-verify |
点击复制clip-button | SQLsql |
详细组件使用说明请访问Primeton-UI官网
# 安装
# 切换npm registry
公司内网用户可切换公司npm私服, 外网用户直接使用 npm 中心库 或者 淘宝镜像即可
npm config set registry http://npmjs.primeton.com/repository/npm-group/
# npm 安装
推荐使用 npm 的方式安装,它能更好地和 webpack (opens new window) 打包工具配合使用。
npm i primeton-ui -S
# 快速上手
本节将介绍如何在项目中使用 Primeton-ui。
# 引入 Primeton-ui
你可以引入整个 Primeton-ui,或是根据需要仅引入部分组件。我们先介绍如何引入完整的 Primeton-ui。
# 完整引入
在 main.js 中写入以下内容:
import Vue from "vue";
import "primeton-ui/lib/style/main.css";
import PrimetonUI from "primeton-ui";
import App from "./App.vue";
Vue.use(PrimetonUI);
new Vue({
el: "#app",
render: (h) => h(App),
});
# 按需引入
import Vue from "vue";
import { PmRadio } from "primeton-ui";
import App from "./App.vue";
Vue.component("PmRadio", PmRadio);
/* 或写为
* Vue.use(PmRadio)
*/
new Vue({
el: "#app",
render: (h) => h(App),
});
import Vue from 'vue';
import {
"PmBind",
"PmCascader",
"PmChange",
"PmCheckbox",
"PmContextMenu",
"PmDialog",
"PmDropMenu",
"PmDropMenuItem",
"PmField",
"PmFold",
"PmFoldGroup",
"PmFormDialog",
"PmList",
"PmMain",
"PmPagination",
"PmRadio",
"PmSelect",
"PmSelectRich",
"PmStepForm",
"PmUpload"
} from 'primeton-ui';
Vue.use(PmBind);
Vue.use(PmCascader);
Vue.use(PmChange);
Vue.use(PmCheckbox);
Vue.use(PmContextMenu);
Vue.use(PmDialog);
Vue.use(PmDropMenu);
Vue.use(PmDropMenuItem);
Vue.use(PmFold);
Vue.use(PmFoldGroup);
Vue.use(PmFormDialog);
Vue.use(PmList);
Vue.use(PmMain);
Vue.use(PmRadio);
Vue.use(PmSelect);
Vue.use(PmSelectRich);
Vue.use(PmStepForm);
Vue.use(PmUpload);
# coframe-ui 微应用版 gitlab地址 (opens new window)
# 概述
本文档提供基于新版coframe-ui的微应用开发指南, 新版coframe-ui , 基于webpack5 (opens new window)构建, 利用webpack5的模块联邦特性实现微应用之间的模块共享.
采用coframe的基座项目动态挂载微应用页面的方式, 实现多个应用依赖共享和页面融合的效果.
# coframe-ui 目录结构
├── base 基座项目,包含 coframe 和公共模块,方法,api 等
│ ├── build 构建配置(webpack5)
│ │ ├── mfp.config.js 微应用模块注册
│ │ ├── webpack.config.js webpack基础配置
│ │ ├── webpack.dev.js webpack dev 配置
│ │ ├── webpack.dll.js webpack 抽取三方库配置
│ │ └── webpack.prod.js webpack 构建配置
│ ├── config
│ │ └── app-config.json 应用配置, 可以定义在运行期修改的标量
│ ├── public
│ │ └── base.html 首页模板文件, 可以引用一些外部资源
│ ├── scripts 用于生成后端 api 的脚本
│ ├── src 项目源码目录
│ │ ├── actions 后端Api申明
│ │ ├── components 公共组件目录
│ │ ├── assets 资源目录,这里的资源会被wabpack构建
│ │ ├── libs 工具类
│ │ ├── router 前端路由
│ │ ├── store 应用级数据(state)
│ │ ├── views 页面目录
│ │ ├── main.js 入口js文件
│ │ └── app.vue
│ └── static 纯静态资源,不会被wabpack构建。
├── app-process 流程客户端微应用
├── demo1 微应用示例
├── dist 打包产物
├── plop-templates plop 项目模板文件
├── package.json
└── plopfile.js plop 命令, plop是一个用于快速生成项目的库
...
# base: 基座项目,包含 coframe 和公共模块,方法,api 等, 默认端口 8000
# 使用 plop 生成vue2微应用项目
// 在根目录下输入 plop
plop
// 输入 应用名: 端口:
application: demo1
port: 9000
输入的项目名称最好是小驼峰命名
# 项目启动
先cd进入每一个子项目,需先安装依赖执行 npm install
,若已安装可跳过该步骤,npm run dev
启动起来,有使用到的都需要启动。
也可以选择在根目录的 package.json 中配置批量启动, 运行 npm run run:all
即可全部启动。
"run:all": "npm-run-all --parallel dev:*",
"init:all": "npm-run-all --parallel install:*",
"dev:base":"cd base && npm run dev",
"install:base":"cd base && npm i",
"dev:demo1":"cd demo1 && npm run dev",
"install:demo1":"cd demo1 && npm i",
"dev:app-process":"cd base && npm run dev",
"install:app-process":"cd base && npm i"
# 微应用调用 base 模块
# 1. base 中暴露出模块给微应用共享:
./build/mfp.config.js
module.exports = {
name: 'base',
filename: 'remoteEntry.js',
exposes: {
'./controller': './src/actions/controller',
'./lib': './src/libs/index.js',
// ElementUI和 PrimetonUI等全局注册的组件无需暴露,子应用可以直接使用
},
}
# 2. 在微应用中引用 mfp.config.js中添加 base 配置
{
...
remotes: {
base: 'base@/remoteEntry.js'
},
}
# 3. 在微应用中引用 base 的模块
import { List } from 'base/lib'
import { DictManager } from 'base/controller'
# 如何扩展微应用的图标?
# 1. 在 https://www.iconfont.cn/ (opens new window) 网站上制作好字体文件, 将其copy 到微应用的 static 目录下
└── static
└── font_3201028_ggmgh148pbh
├── iconfont.css
├── iconfont.js
├── iconfont.json
├── iconfont.ttf
├── iconfont.woff
└── iconfont.woff2
# 2. 在store/index.js 文件中编写加载字体文件的代码
import {HtmlUtil} from 'base/lib'
HtmlUtil.dynamicLoadCss('./demo/static/font_3201028_ggmgh148pbh/iconfont.css')
# 3. 在微应用中就可以调用图标样式了
<span class="iconfont icon-wode"></span>
# 如何访问微应用页面?
http://localhost:8000/app/{appCode}/module/{moduleCode}