亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

typescript封裝消息提示框插件ew-message使用實戰(zhàn)

 更新時間:2023年11月01日 14:26:02   作者:夕水  
這篇文章主要為大家介紹了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(); // 假設頁面引入了消息提示框的樣式,則返回true

normalizeOptions

該方法規(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); // false

isDom

該工具函數(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); // false

isNumber(0.0.7 版本新增)

該工具函數(shù)表示判斷是否是一個數(shù)值,傳入一個需要判斷的參數(shù)。如:

util.isNumber(123); // true;
util.isNumber(NaN); // false;
util.isNumber('1111'); // false

warn

該函數(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ù)組,傳入一個需要轉換的值。如:

// 假設頁面有多個&lt;div class="list-item"&gt;&lt;/div&gt;的元素
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封裝的資料請關注腳本之家其它相關文章!

相關文章

  • less簡單入門(CSS 預處理語言)

    less簡單入門(CSS 預處理語言)

    Less 是一門 CSS 預處理語言,它擴充了 CSS 語言,增加了諸如變量、混合(mixin)、函數(shù)等功能,讓 CSS 更易維護、方便制作主題、擴充
    2017-03-03
  • Underscore.js常用方法總結

    Underscore.js常用方法總結

    這篇文章主要介紹了Underscore.js常用方法總結,本文講解了Underscore.js概述、在node.js下安裝、與集合有關的方法、與對象有關的方法、與函數(shù)相關的方法等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • 數(shù)據(jù)結構TypeScript之鄰接表實現(xiàn)示例詳解

    數(shù)據(jù)結構TypeScript之鄰接表實現(xiàn)示例詳解

    這篇文章主要為大家介紹了數(shù)據(jù)結構TypeScript之鄰接表實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • TypeScript?中?as?const使用介紹

    TypeScript?中?as?const使用介紹

    這篇文章主要為大家介紹了TypeScript?中?as?const使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 數(shù)據(jù)結構TypeScript之棧和隊列詳解

    數(shù)據(jù)結構TypeScript之棧和隊列詳解

    這篇文章主要介紹了數(shù)據(jù)結構TypeScript之棧和隊列詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • TypeScript 高級數(shù)據(jù)類型實例詳解

    TypeScript 高級數(shù)據(jù)類型實例詳解

    這篇文章主要為大家介紹了TypeScript 高級數(shù)據(jù)類型實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • TypeScript中的遞歸類型示例解析

    TypeScript中的遞歸類型示例解析

    這篇文章主要為大家介紹了TypeScript中的遞歸類型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • TypeScript?5.0?正式發(fā)布及使用指南詳解

    TypeScript?5.0?正式發(fā)布及使用指南詳解

    這篇文章主要為大家介紹了TypeScript?5.0?正式發(fā)布及使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 初識SmartJS - AOP三劍客

    初識SmartJS - AOP三劍客

    隔了好久才終于又發(fā)布了一點東西,SmartJS是最近才開始搞的一個開源js庫,目的是做一些比較有特點的事情(smartjs暫時也是依賴于jquery)。
    2014-06-06
  • 淺談Sizzle的“編譯原理”

    淺談Sizzle的“編譯原理”

    正在學習Sizzle源碼或有一定前端基礎的同學們,可以一邊看源碼一邊看這些文章進行驗證,所以雖然我會分析源碼中的正則表達式,有大量的注釋,但不會講正則表達式的基本用法!
    2015-04-04

最新評論