typescript封裝消息提示框插件ew-message使用實戰(zhàn)
ew-message 安裝與使用
一個基于 typescript 而封裝的消息提示框插件,可用于不使用ui組件庫的中小型網(wǎng)站中。
安裝
npm install ew-message --save-dev//或者 yarn add ew-message
引入
<script src="./dist/ew-message.min.js"></script>
消息提示框插件如下:
const msg1 = ewMessage('默認消息提示框');
const msg1 = ewMessage({
content: '默認消息提示框'
});option 配置對象有如下參數(shù):
interface ewMessageOption {
content: string; //消息提示框內(nèi)容,必傳參數(shù)
center?: boolean; //消息提示框內(nèi)容是否居中
type?: string; //消息提示框類型,有四種: info,success,warning,error
duration?: number; //消息提示框消失時間
showClose?: boolean; //是否顯示關閉按鈕
stylePrefix?: string; //消息提示框樣式前綴,注意插件有檢測如果導入了樣式文件,則這個配置無效
showTypeIcon?: boolean; // 是否顯示類型圖標,默認為true
typeIcon?: string; // 自定義類型圖標
closeIcon?: string; // 自定義關閉按鈕圖標
container?: string | HTMLElement; // 掛載元素
immediate?: boolean; // 是否立即渲染消息提示框
removeClassName?: string; // 移除消息提示框動畫類名,目前內(nèi)置動畫類名值: fadeOut與scaleDown
removeClassNameSymbol?: string; // 指定多個移除動畫類名并且分隔符不是空白時傳入
}ps: 推薦使用導入樣式文件的方式。
cdn 引入
//樣式引入 // CDN:https://www.unpkg.com/ew-message/dist/ew-message.min.css // CDN:https://www.unpkg.com/ew-message/dist/ew-message.min.js
在組件中使用
import ewMessage from 'ewMessage'; // 導入樣式 import 'ew-message/dist/ew-message.min.css'; const msg = ewMessage(option); //option為配置對象,詳情見前述
當然也可以不引入樣式,插件檢測了如果不導入樣式文件,則會自動添加樣式,并且也可以給樣式添加類名前綴自定義樣式。
參數(shù)接口
這里主要介紹函數(shù)的參數(shù)類型。
字符串參數(shù)
默認參數(shù)可以是一個字符串,用作消息提示框的內(nèi)容,如:
const msg = ewMessage('這是一個默認的消息提示框');配置對象
配置對象主要有 6 個屬性,分別如下:
content
content 是一個字符串,用作消息提示框的內(nèi)容,默認為空,如果在開發(fā)環(huán)境下(即導入的是非生產(chǎn)模式的文件 ewMessage.js),則會在控制臺給出警告,如:
const msg = ewMessage({ content: '這是一個默認的消息提示框' });center
center 屬性是一個布爾值,表示是否讓消息提示框的內(nèi)容劇中,默認是 false。如:
// 消息提示框內(nèi)容居中
const msg = ewMessage({ content: '這是一個默認的消息提示框', center: true });type
type 的值雖然是一個字符串,但只支持"info" | "success" | "warning" | "error",表示消息提示框的類型,默認是值是"info"。如:
const msg = ewMessage({
content: '這是一個成功的消息提示框',
center: true,
type: 'success' // 成功消息提示框
});duration
該字段的值是一個數(shù)值,表示消息提示框關閉的時間,默認值是 6s,可以自定義修改。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
center: true,
type: 'success',
duration: 2000 // 消息提示框將在2s后關閉
});需要注意的是,插件內(nèi)部做了一個小小的規(guī)范化,如果傳入的時間即 duration 的值小于 1000,則會自動乘以 10。
ps: 0.0.7 版本做了一個優(yōu)化,如果 duration 不是一個數(shù)值,則會在開發(fā)環(huán)境下提示警告,如果小于等于 0,則會取 1000 作為默認值,默認值也由 6s 變成了 1s。
ps: 不建議將該值設置的過大。
maxDuration (0.0.7 版本新增)
該字段的值也是一個數(shù)值,表示消息提示框的最大關閉時間,插件內(nèi)部會將該值與傳入的 duration 值做比較,取兩者之間的最小值,默認值是 10s。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
center: true,
type: 'success',
duration: 120000,
maxDuration: 10000 // 最大關閉時間設置的是10s,因此消息提示框將在10s后關閉,而不是12s后關閉
});ps: 如果傳入的值不是一個數(shù)值,也會在開發(fā)環(huán)境下提示警告,如果小于等于 duration,則會取 duration 作為默認值。
ps: 不建議設置該值。
showClose
該字段的值是一個布爾值,表示是否顯示消息提示框的關閉按鈕,默認值是 true,可以將值設置為 false。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
showClose: false
});ps: 需要注意的是如果將 duration 的值設置為 0,showClose 設置為 false,則在開發(fā)環(huán)境下會提供警告,然后自動開啟消息提示框的關閉按鈕。
stylePrefix
該屬性是一個字符串,表示樣式類名的前綴,默認是'ew-',可以自定義類名,方便自己修改樣式。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
stylePrefix: 'el-'
});以上代碼將會給消息提示框的樣式類名前綴變成 el-,比如原本是 ew-message 類名將變成 el-message。
通常來講這個屬性應該是用不到的,只有在確實需要自定義樣式的時候可以用到。
showTypeIcon (0.0.8)新增
該屬性是一個布爾值,表示是否顯示圖標,會根據(jù)相關的類型來匹配相應的圖標,比如 info 類型就是 info 類型的圖標,默認值是 true。如下所示:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
showTypeIcon: true
});typeIcon(0.0.8 新增)
該屬性用于自定義圖標,需要將 showTypeIcon 設置為 true 才行,如果默認的圖標不符合需求,可以自己傳入一個 img 標簽或者 svg 標簽自定義一個圖標,或者是任意元素,不過需要自己調整圖標樣式,可以定義${prefix}-message-${type}-icon相關的類名來使用默認的樣式,其中 prefix 的值為前綴名默認是 ew,type 為消息提示框類型,如 info。如下所示:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
showTypeIcon: true,
typeIcon:
'<svg t="1695191942528" class="ew-message-icon ew-message-info-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7731" id="mx_n_1695191942529"><path d="M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024zM448 448v384h128V448H448z m0-256v128h128V192H448z" fill="#1677ff" p-id="7732"></path></svg>'
});closeIcon(0.0.8 新增)
該屬性用于自定義關閉按鈕的圖標,需要將 showClose 設置為 true 才行,如果默認的關閉按鈕圖標不符合需求,可以自己傳入一個 img 標簽或者 svg 標簽自定義一個圖標,或者是任意元素,不過需要自己調整圖標樣式,可以定義${prefix}-message-close-icon相關的類名來使用默認的樣式,其中 prefix 的值為前綴名,默認是 ew。
如:
// 不推薦替換默認的圖標
const msg = ewMessage({
content: '這是一個默認的消息提示框',
showTypeIcon: true,
closeIcon:
'<svg t="1695191942528" class="ew-message-close-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7731" id="mx_n_1695191942529"><path d="M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024zM448 448v384h128V448H448z m0-256v128h128V192H448z" fill="#1677ff" p-id="7732"></path></svg>'
});container(0.0.9 新增)
該屬性用于設置消息提示框掛載的元素,可以傳入一個 dom 元素字符串或者是 dom 元素,不滿足則會在開發(fā)環(huán)境下給出警告提示,默認值是 body 元素。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
container: '#test'
});
// 將消息提示框掛載到頁面當中id為test的元素中immediate(0.0.9 新增)
該屬性用于是否立即渲染消息提示框,如果設置為 false,則需要手動調用 render,render 方法可以傳也可以不傳參數(shù),方法來渲染消息提示框,默認值是 true。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
immediate: false
});
msg.render(); // 內(nèi)部會自動獲取配置對象并渲染removeClassName(0.0.9 新增)
該屬性用于卸載消息提示框時添加的動畫類名,目前內(nèi)置有 fadeOut 和 scaleDown 動畫效果,如指定了正確的動畫類名值,當點擊關閉或者是自動關閉消息提示框的時候,會有相應的動畫效果,默認值是空字符串,即沒有動畫效果。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
removeClassName: 'fadeOut' // 或者也可以傳入ew-message-fadeOut
});也可以傳入多個類名,多個類名之間可以使用任意值或者空白來隔開,如果不是使用空白隔開,則需要指定 removeClassNameSymbol 的值,例如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
removeClassName: 'fadeOut scaleDown' // 或者也可以傳入ew-message-fadeOut ew-message-scaleDown
// 這里是使用空白隔開,因此不需要指定 removeClassNameSymbol
});const msg = ewMessage({
content: '這是一個默認的消息提示框',
removeClassName: 'fadeOut,scaleDown' // 或者也可以傳入ew-message-fadeOut ew-message-scaleDown
removeClassNameSymbol: ','
// 這里是使用逗號隔開
});我們可以結合animate.css來為移除消息提示框添加對應的動畫效果,如果頁面當中引入了該樣式文件,則可以傳入相應的類名,如:
// 假設頁面引入了animate.css文件
const msg = ewMessage({
content: '這是一個默認的消息提示框',
removeClassName: 'animate__animated animate__bounce'
});removeClassNameSymbol(0.0.9 新增)
用于指定多個 removeClassName 的分隔符,如果 removeClassName 指定的是單個類名或者是多個以空白隔開的類名,則不需要傳入該值。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
removeClassName: 'fadeOut+scaleDown' // 或者也可以傳入ew-message-fadeOut ew-message-scaleDown
removeClassNameSymbol: '+'
// 這里是使用+隔開
});messageZIndex(0.1.0 新增)
用于自定義消息提示框的顯示層級,是一個 number 值,用于覆蓋默認得到 z-index:1000,無默認值。如:
const msg = ewMessage({
content: '這是一個默認的消息提示框',
messageZIndex: 2000
});
// 設置消息提示框的顯示層級為2000實例方法接口
除了屬性接口之外,我們也可以使用插件的一些實例方法,總結如下。
實例屬性
options
消息提示框的配置對象。如:
const msg = ewMessage('這是一個默認的消息提示框');
console.log(msg.options); // { content:"這是一個默認的消息提示框",... }el
消息提示框的根元素。
closeBtnEl
消息提示框的關閉元素。
實例方法
destroy (0.0.6 版本新增)
該方法將會立即銷毀消息提示框實例。如:
const msg = ewMessage('這是一個默認的消息提示框');
msg.destroy(); // 頁面將不再看到消息提示框validateHasStyle
該方法驗證消息提示框是否含有樣式,如果通過 link 標簽導入樣式,則該方法返回 true,否則返回 false。如:
const msg = ewMessage('這是一個默認的消息提示框');
msg.validateHasStyle(); // 假設頁面引入了消息提示框的樣式,則返回truenormalizeOptions
該方法規(guī)范化傳入的參數(shù),并和默認配置對象合并,最終返回一個消息提示框的配置對象。
getMessageType
該方法返回消息提示框支持的類型值。
getDefaultOption
該方法用于獲取消息提示框的默認配置對象。
addMessageStyle
該方法用于添加消息提示框的樣式,如果傳入了第二個參數(shù),將會將第二個參數(shù)的樣式作為最終樣式添加到頁面中,兩個參數(shù)都是一個字符串。不同的是,第一個參數(shù)代表樣式前綴名,第二個參數(shù)代表一個樣式字符串。如:
const msg = ewMessage('這是一個默認的消息提示框');
msg.addMessageStyle('ew-', `body { background: #2396ef; }`); // 第一個參數(shù)實際上就沒有什么作用了,頁面body元素的背景是藍色
msg.addMessageStyle('el-'); // 會添加消息提示框的默認樣式,但類名前綴是el-render
這個方法就是渲染消息提示框的核心方法,不需要使用,感興趣可參看源碼。
create
該方法表示創(chuàng)建一個消息提示框的元素,返回消息提示框的根元素,不需要使用,感興趣可參看源碼。
setTop
該方法用于設置消息提示框的 top 偏移量,不需要使用,感興趣可參看源碼。
close
該方法用于銷毀一個 dom 元素,傳入 2 個參數(shù),第一個參數(shù)是一個 dom 元素或者是 dom 元素集合,第二個參數(shù)是銷毀的時間,是一個數(shù)值。如:
const msg = ewMessage('這是一個默認的消息提示框');
msg.close(msg.el, 1000); // 將在1s后移除元素內(nèi)置工具函數(shù)接口
插件內(nèi)部提供了一些工具函數(shù)可供調用,該工具函數(shù)定義在 ewMessage 的靜態(tài)屬性 util 上,我們可以通過如下代碼來獲取:
const util = ewMessage.util; // 以下的util均指這里
isFunction
該工具函數(shù)表示判斷是否是一個函數(shù),傳入一個需要判斷的參數(shù)。如:
const testFn = function () {
console.log('這是一個函數(shù)');
};
util.isFunction(testFn); // true
util.isFunction(null); // falseisDom
該工具函數(shù)表示判斷是否是一個 dom 元素,傳入一個需要判斷參數(shù)。如:
const div = document.querySelector('#app');
util.isDom(div); // true;
util.isDom(1); // false;isObject
該工具函數(shù)表示判斷是否是一個對象,傳入一個需要判斷的參數(shù)。如:
util.isObject({}); // true;
util.isObject([]); // true;
util.isObject(function () {
console.log(1);
}); // false;
util.isObject(111); // false;isString
該工具函數(shù)表示判斷是否是一個字符串,傳入一個需要判斷的參數(shù)。如:
util.isString('111'); // true;
util.isString(111); // falseisNumber(0.0.7 版本新增)
該工具函數(shù)表示判斷是否是一個數(shù)值,傳入一個需要判斷的參數(shù)。如:
util.isNumber(123); // true;
util.isNumber(NaN); // false;
util.isNumber('1111'); // falsewarn
該函數(shù)表示在控制臺打印一些警告信息,傳入一個需要打印的信息字符串。如:
util.warn('warning: this is not a function');hasOwn
該工具函數(shù)表示某個屬性是否在某個對象上,傳入 2 個參數(shù),第一個參數(shù)是一個對象,第二個參數(shù)是一個屬性名。如:
const obj = { name: 'eveningwater' };
util.hasOwn(obj, 'name'); // true;
util.hasOwn(obj, 'age'); // false;toArray
該工具函數(shù)用于將偽數(shù)組轉換成真正的數(shù)組,傳入一個需要轉換的值。如:
// 假設頁面有多個<div class="list-item"></div>的元素
const listItems = document.querySelectorAll('.list-item');
util.toArray(listItems); // 一個包含多個div元素的數(shù)組$
該工具函數(shù)用于獲取 dom 元素,有兩個參數(shù),第一個參數(shù)是一個字符串,第二個參數(shù)是一個 dom 元素。如:
const app = util.$('#app');
util.$('.child', app);$$
該工具函數(shù)用于獲取 dom 元素集合即 NodeList,參數(shù)同$方法。如:
const app = util.$('#app');
util.$$('.child', app);
util.$$('.child');createElement(0.0.8 新增)
該工具函數(shù)用于根據(jù)模板字符串創(chuàng)建一個 dom 元素,模板字符串可以帶入子元素,如:
const html = util.createElement(`<div><span></span></div>`); console.log(html); // 返回div節(jié)點
addClass(0.0.9 新增)
該工具函數(shù)用于給 dom 元素添加類名,需要傳入 2 個參數(shù),如:
const html = util.addClass(`app`, util.$('#app'));
// 給id為app的元素添加app類名off(0.0.9 新增)
該方法用于給移除一個事件監(jiān)聽器,傳入四個參數(shù),第一個為 DOM 元素,第二個為事件名,第三個參數(shù)為事件監(jiān)聽器,第四個參數(shù)為一個布爾值。如:
const test = document.getElementById('test');
const handler = e => console.log(e.target.tagName);
util.off(test, 'click', handler);on(0.0.9 新增)
該方法用于添加一個事件監(jiān)聽器,參數(shù)等同 off 方法。如:
const test = document.getElementById('test');
const handler = e => console.log(e.target.tagName);
util.on(test, 'click', handler);更多詳情參閱文檔官網(wǎng)介紹 ew-message;
更新日志
- 0.0.1 \~ 0.0.4: 添加了消息提示框的基本功能。
- 0.0.5: 修改了 ts 類型導入。
- 0.0.6: 消息提示框添加了銷毀 destroy 方法。
- 0.0.7: 完善了 ts 類型,新增了最大關閉時間屬性 maxDuration,修改了默認關閉時間。
- 0.0.8: 新增了 showTypeIcon 和 typeIcon 屬性以及 closeIcon,用于配置圖標,新增了工具方法 createElement。
- 0.0.9: 新增了 container、immediate、removeClassName、removeClassNameSymbol 配置屬性,新增了 on,off,addClass 工具方法。
以上就是typescript封裝消息提示框插件ew-message使用實戰(zhàn)的詳細內(nèi)容,更多關于typescript ew-message封裝的資料請關注腳本之家其它相關文章!
相關文章
數(shù)據(jù)結構TypeScript之鄰接表實現(xiàn)示例詳解
這篇文章主要為大家介紹了數(shù)據(jù)結構TypeScript之鄰接表實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
數(shù)據(jù)結構TypeScript之棧和隊列詳解
這篇文章主要介紹了數(shù)據(jù)結構TypeScript之棧和隊列詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
TypeScript 高級數(shù)據(jù)類型實例詳解
這篇文章主要為大家介紹了TypeScript 高級數(shù)據(jù)類型實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
TypeScript?5.0?正式發(fā)布及使用指南詳解
這篇文章主要為大家介紹了TypeScript?5.0?正式發(fā)布及使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03

