我司OA系統公文管理模塊Office在線編輯使用的是金格IWebOffice中間件【PPAPI插件,經過<object>標籤加載】,IWebOffice在chrome中設置div盒子的css樣式display:none會形成控件的奔潰,出現空白等異常狀況。用過ElementUI的都知道Tabs標籤頁,標籤之間切換用的正是display屬性,筆者要改的是使用width:0px;height:0px;opacity:0;visibility:hidden;作標籤的切換。css
GitHub倉庫地址:github.com/ElemeFE/ele…html
首先Fork一份源碼到本身的github賬號。vue
接着使用git命令行工具將源碼clone到本地。git
git clone https://github.com/itwmike/element.git複製代碼
筆者項目中使用的是 element 2.5.4 版本,因此從 2.5.4 這個tag簽出一個本身的分支進行開發。github
git checkout -b v2.5.4 lk-element-ui #從 v2.5.4 tag 建立分支
複製代碼
npm install #安裝相應的依賴包npm run dev #運行調試,若是有報錯看看是否爲 ESlint 語法檢測提示的錯誤。複製代碼
修改 tabs 源碼chrome
爲了避免污染源碼,筆者複製 tab-pane.vue 新建了一個本身的組件並命名爲 LoElTabPane,修改其內的源碼以下:npm
接着修改 tabs.vue 中代碼使其支持 新加的組件:element-ui
組件修改好後須要導出並進行全局註冊。json
在 packages 文件夾下增長 lo-tab-pane 文件夾並添加 index.js 文件,該文件主要用於導出 LoTabPane 。bash
1
2
3
4
5
6
7
8
|
import LoTabPane from
'../tabs/src/lo-tab-pane.vue'
;
/* istanbul ignore next */
LoTabPane.install =
function
(Vue) {
Vue.component(LoTabPane.name, LoTabPane);
};
export
default
LoTabPane;
|
接着修改根目錄下的 components.json 文件,在文件中加入 lo-tab-pane 。該文件的主要做用是在構建時生成 src/index.js,在 index.js 中進行了組件的全局註冊和導出。
1
|
"lo-tab-pane"
:
"./packages/lo-tab-pane/index.js"
,
|
在 types 目錄下新建 lo-tab-pane.d.ts 文件,除了類名外其餘內容和 tab-pane.d.ts 相同。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import { ElementUIComponent } from
'./component'
/** Tab Pane Component */
export declare class LoElTabPane extends ElementUIComponent {
/** Title of the tab */
label: string
/** Whether Tab is disabled */
disabled: boolean
/** Identifier corresponding to the activeName of Tabs, representing the alias of the tab-pane */
name: string
/** Whether Tab is closable */
closable: boolean
/** Whether Tab is lazily rendered */
lazy: boolean
}
|
同時在 types/element-ui.d.ts 文件中導入新增的類。
1
2
3
|
import { LoElTabPane } from
'./lo-tab-pane'
// 導入
export class LoTabPane extends LoElTabPane {}
// 導出
|
組件開發完成後添加到 examples 中進行測試。
拷貝 examples\docs\zh-CN\tabs.md 到同級目錄並命名爲 lo-tabs.md,將其內的 el-tab-pane 組件換成 lo-el-tab-pane。
在 examples\nav.config.json 中增長 lo-tabs 菜單。
網上博友說修改包名和版本號能夠將本身DIY出的 element 發佈到 npm,使用 npm install 安裝使用。其實這種作法是錯誤的誤導,筆者親驗純屬瞎扯蛋。
使用 npm run dist 打包後的文件在 lib 文件夾下,其中 element-ui.common.js 爲包入口,打開這個文件能夠看到存在不少相似
module.exports = require("element-ui/lib/mixins/emitter");複製代碼
這樣的代碼,使用的都是 element-ui 開頭的相對路徑。若是你的包名換成其餘,我敢保證在項目中打包的時候會報 xxx not find 錯誤。
正確的作法應該是將包發佈到 git倉庫,如github這樣的平臺,使用 npm install git倉庫 這樣的方式安裝。
1
|
npm install git+https:
//github.com/itwmike/element.git
|