JavaScript
ကျွန်ုပ်တို့၏ရွေးချယ်နိုင်သော JavaScript ပလပ်အင်များဖြင့် Bootstrap ကို အသက်ဝင်စေပါသည်။ ပလပ်အင်တစ်ခုစီ၊ ကျွန်ုပ်တို့၏ဒေတာနှင့် ပရိုဂရမ်မာ API ရွေးချယ်စရာများနှင့် အခြားအရာများအကြောင်း လေ့လာပါ။
တစ်ဦးချင်း သို့မဟုတ် ပြုစုခြင်း။
ပလပ်အင်များကို တစ်ဦးချင်းထည့်သွင်းနိုင်သည် (Bootstrap ၏တစ်ဦးချင်းစီ ကို အသုံးပြု၍) သို့မဟုတ် js/dist/*.js
တစ်ကြိမ်တည်းအသုံးပြုခြင်း bootstrap.js
သို့မဟုတ် အသေးအမွှား bootstrap.min.js
(နှစ်ခုလုံးမပါဝင်ပါ)။
အကယ်၍ သင်သည် အစုအစည်းတစ်ခု (Webpack၊ Rollup…) ကိုအသုံးပြု /js/dist/*.js
ပါက UMD အဆင်သင့်ဖြစ်သည့်ဖိုင်များကို သင်အသုံးပြုနိုင်ပါသည်။
Bootstrap ကို module တစ်ခုအနေဖြင့်အသုံးပြုခြင်း။
ကျွန်ုပ်တို့သည် သင့်အား ပစ်မှတ်ထားသောဘရောက်ဆာများက ၎င်းကိုပံ့ပိုးပေးမည် ဆိုပါက သင့်အား သင့်ဘရောက်ဆာရှိ Bootstrap မော်ဂျူးတစ်ခုအဖြစ် အသုံးပြုရန်ခွင့်ပြုသည့် ESM
( bootstrap.esm.js
နှင့် ) အဖြစ်တည်ဆောက်ထားသော Bootstrap ဗားရှင်းကို ကျွန်ုပ်တို့ ပံ့ပိုးပေးပါသည် ။bootstrap.esm.min.js
<script type="module">
import { Toast } from 'bootstrap.esm.min.js'
Array.from(document.querySelectorAll('.toast'))
.forEach(toastNode => new Toast(toastNode))
</script>
သဟဇာတမဖြစ်သော ပလပ်အင်များ
ဘရောက်ဆာ ကန့်သတ်ချက်များကြောင့်၊ အချို့သော ကျွန်ုပ်တို့၏ ပလပ်အင်များဖြစ်သည့် Dropdown၊ Tooltip နှင့် Popover ပလပ်အင် များသည် Popper ပေါ်တွင် မူတည်သောကြောင့် ၎င်းတို့ကို အမျိုးအစား <script>
နှင့် တဂ် တွင် အသုံးမပြုနိုင်ပါ ။ module
ပြဿနာနှင့်ပတ်သက်သော နောက်ထပ်အချက်အလက်များအတွက် ဤနေရာတွင် ကြည့်ပါ ။
မှီခိုမှု
အချို့သော ပလပ်အင်များနှင့် CSS အစိတ်အပိုင်းများသည် အခြားပလပ်အင်များပေါ်တွင် မူတည်သည်။ အကယ်၍ သင်သည် ပလပ်အင်များကို တစ်ဦးချင်းစီ ထည့်သွင်းပါက၊ စာရွက်စာတမ်းများတွင် ဤမှီခိုမှုများ ရှိမရှိ စစ်ဆေးပါ။
ကျွန်ုပ်တို့၏ dropdowns၊ popovers နှင့် tooltips များသည် Popper ပေါ်တွင်မူတည် ပါသည်။
jQuery ���ို သုံးချင်သေးလား။ ဖြစ်နိုင်တယ်။
Bootstrap 5 ကို jQuery မပါဘဲ အသုံးပြုရန် ဒီဇိုင်းထုတ်ထားသော်လည်း jQuery ဖြင့် ကျွန်ုပ်တို့၏ အစိတ်အပိုင်းများကို အသုံးပြုရန် မဖြစ်နိုင်သေးပါ။ အကယ်၍ Bootstrap သည် အ ရာဝတ္တု jQuery
တွင်window
တွေ့ရှိပါက jQuery ၏ ပလပ်အင်စနစ်တွင် ကျွန်ုပ်တို့၏ အစိတ်အပိုင်းအားလုံးကို ပေါင်းထည့်မည်ဖြစ်သည်။ ဆိုလိုသည်မှာ $('[data-bs-toggle="tooltip"]').tooltip()
tooltips ကိုဖွင့်ရန် သင်လုပ်ဆောင်နိုင်မည်ဟု ဆိုလိုသည်။ ကျွန်ုပ်တို့၏ အခြားအစိတ်အပိုင်းများအတွက်လည်း အလားတူပင်ဖြစ်သည်။
ဒေတာဂုဏ်တော်များ
Bootstrap ပလပ်အင်အားလုံးနီးပါးကို ဒေတာ attribute များဖြင့် HTML တစ်ခုတည်းဖြင့် ဖွင့်နိုင်ပြီး (ကျွန်ုပ်တို့နှစ်သက်သော JavaScript လုပ်ဆောင်ချက်ကို အသုံးပြုသည့်နည်းလမ်း)။ ဒြပ်စင်တစ်ခုတည်းတွင် ဒေတာ attributes အစုံကို တစ်ခုတည်း ကိုသာ အသုံးပြုရန် သေချာ ပါစေ။ (ဥပမာ၊ တူညီသောခလုတ်မှ tooltip နှင့် modal ကို သင်စတင်၍မရပါ။)
ရွေးချယ်မှုများ
လောလောဆယ် DOM ဒြပ်စင်များကို စုံစမ်းရန် ကျွန်ုပ်တို့သည် မူလနည်းလမ်းများ querySelector
နှင့် querySelectorAll
စွမ်းဆောင်ရည် အကြောင်းပြချက်များအတွက် အသုံးပြုသည်၊ ထို့ကြောင့် သင်သည် မှန်ကန်သော ရွေးချယ်မှု များကို အသုံးပြုရန် လိုအပ်ပါသည် ။ အကယ်၍ သင်သည် အထူးရွေးချယ်ကိရိယာများကို အသုံးပြုပါက၊ ဥပမာ- collapse:Example
၎င်းတို့ကို ရှောင်ရန် သေချာပါစေ။
အဲ့ဒါနဲ့
Bootstrap သည် ပလပ်အင်အများစု၏ ထူးခြားသောလုပ်ဆောင်ချက်များအတွက် စိတ်ကြိုက်ဖြစ်ရပ်များကို ပံ့ပိုးပေးပါသည်။ ယေဘူယျအားဖြင့်၊ ၎င်းတို့သည် အဆုံးမရှိနှင့် အတိတ်ပါဝင်မှုပုံစံဖြင့် လာပါသည် - အဆုံးမရှိ (ဥပမာ show
) သည် ဖြစ်ရပ်တစ်ခု၏အစတွင် အစပျိုးပြီး ၎င်း၏အတိတ်ပါဝင်မှုပုံစံ (ဥပမာ shown
) သည် လုပ်ဆောင်ချက်တစ်ခုပြီးဆုံးချိန်တွင် အစပျိုးသည်။
အဆုံးမရှိ အဖြစ်အပျက်များအားလုံးသည် preventDefault()
လုပ်ဆောင်နိုင်စွမ်းကို ပေးစွမ်းသည်။ ၎င်းသည် လုပ်ဆောင်ချက်တစ်ခုမစတင်မီ လုပ်ဆောင်မှုကို ရပ်တန့်ရန် စွမ်းရည်ကို ပံ့ပိုးပေးသည်။ ဖြစ်ရပ်ကို ကိုင်တွယ်သူထံမှ အမှားကို ပြန်လည်ပေးပို့ခြင်းသည်လည်း အလိုအလျောက်ခေါ်ဆို preventDefault()
မည်ဖြစ်သည်။
var myModal = document.getElementById('myModal')
myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
jQuery ဖြစ်ရပ်များ
အရာဝတ္တု jQuery
တွင် ရှိနေပါက Bootstrap သည် jQuery ကိုတွေ့ရှိ ပြီး attribute တွင်သတ်မှတ်ခြင်း မရှိပါ ။ jQuery ကိုတွေ့ရှိပါက၊ Bootstrap သည် jQuery ၏ဖြစ်ရပ်စနစ်ကြောင့် အဖြစ်အပျက်များကို ထုတ်လွှတ်မည်ဖြစ်သည်။ ထို့ကြောင့် Bootstrap ၏အဖြစ်အပျက်များကိုနားဆင်လိုပါက jQuery နည်းလမ်းများအစား ( , ) ကိုအသုံးပြုရမည်ဖြစ်ပါသည် ။window
data-bs-no-jquery
<body>
.on
.one
addEventListener
$('#myTab a').on('shown.bs.tab', function () {
// do something...
})
ပရိုဂရမ်မာတစ် API
တည်ဆောက်သူအားလုံးသည် ရွေးချယ်ခွင့်ရှိသော ရွေးချယ်စရာအရာဝတ္ထု သို့မဟုတ် မည်သည့်အရာကိုမျှ လက်ခံသည် (၎င်း၏မူလအပြုအမူဖြင့် ပလပ်အင်ကို စတင်လုပ်ဆောင်သည်)။
var myModalEl = document.getElementById('myModal')
var modal = new bootstrap.Modal(myModalEl) // initialized with defaults
var modal = new bootstrap.Modal(myModalEl, { keyboard: false }) // initialized with no keyboard
သီးသန့် plugin instance တစ်ခုကို ရယူလိုပါက၊ plugin တစ်ခုစီသည် getInstance
method တစ်ခုကို ဖော်ထုတ်ပါသည်။ ၎င်းကို ဒြပ်စင်တစ်ခုမှ တိုက်ရိုက်ရယူရန်အတွက်၊ ဤအရာကို လုပ်ဆောင်ပါ bootstrap.Popover.getInstance(myPopoverEl)
။
တည်ဆောက်သူများရှိ CSS ရွေးချယ်မှုများ
ပလပ်အင်ကို စတင်ရန်အတွက် DOM ဒြပ်စင်အစား CSS ရွေးချယ်မှုအား ပထမအငြင်းအခုံအဖြစ်လည်း အသုံးပြုနိုင်သည်။ querySelector
ကျွန်ုပ်တို့၏ ပလပ်အင် များသည် ဒြပ်စင်တစ်ခုတည်းကိုသာ ပံ့ပိုးပေးသောကြောင့် လောလောဆယ်တွင် ပလပ်အင်အတွက် ဒြပ်စင်ကို နည်းလမ်းဖြင့် တွေ့ ရှိပါသည်။
var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
Asynchronous လုပ်ဆောင်ချက်များနှင့် အသွင်ကူးပြောင်းမှုများ
ပရိုဂရမ်မာတစ် API နည်းလမ်းအားလုံးသည် အ ညီအမျှဖြစ်ပြီး အသွင်ကူးပြောင်းမှုကို စတင်သည် နှင့် မပြီးဆုံးမီ တွင် ခေါ်ဆိုသူထံ ပြန်သွားရန် ။
အကူးအပြောင်းပြီးသည်နှင့် လုပ်ဆောင်ချက်တစ်ခုအား လုပ်ဆောင်ရန်အတွက် သက်ဆိုင်ရာဖြစ်ရပ်ကို သင်နားထောင်နိုင်ပါသည်။
var myCollapseEl = document.getElementById('myCollapse')
myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
// Action to execute once the collapsible area is expanded
})
ထို့အပြင် transitioning component တစ်ခုပေါ်တွင် method call ကို လျစ်လျူရှု ပါမည်။
var myCarouselEl = document.getElementById('myCarousel')
var carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance
myCarouselEl.addEventListener('slid.bs.carousel', function (event) {
carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
})
carousel.to('1') // Will start sliding to the slide 1 and returns to the caller
carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!
မူရင်းဆက်တင်များ
ပလပ်အင်၏အရာဝတ္တုကို မွမ်းမံခြင်းဖြင့် ပလပ်အင်တစ်ခုအတွက် မူရင်းဆက်တင်များကို သင်ပြောင်းလဲနိုင်သည် Constructor.Default
-
// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false
ပဋိပက္ခမရှိပါ (jQuery ကိုအသုံးပြုမှသာ)
တစ်ခါတစ်ရံတွင် အခြား UI မူဘောင်များနှင့်အတူ Bootstrap ပလပ်အင်များကို အသုံးပြုရန် လိုအပ်သည်။ ဤအခြေအနေများတွင်၊ namespace သည် ရံဖန်ရံခါ ဖြစ်ပေါ်နိုင်သည်။ ဒီလိုဖြစ်သွားရင်၊ သင့် .noConflict
တန်ဖိုးကို ပြန်ပြောင်းလိုတဲ့ plugin ကို ခေါ်နိုင်ပါတယ်။
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
ဗားရှင်းနံပါတ်များ
Bootstrap ၏ပလပ်အင်တစ်ခုစီ၏ဗားရှင်းကို VERSION
plugin ၏တည်ဆောက်သူ၏ပိုင်ဆိုင်မှုမှတဆင့်ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ဥပမာ၊ tooltip plugin အတွက်၊
bootstrap.Tooltip.VERSION // => "5.1.3"
JavaScript ကို ပိတ်ထားသည့်အခါ အထူးအတားအဆီးများ မရှိပါ။
JavaScript ကိုပိတ်ထားသောအခါတွင် Bootstrap ၏ပလပ်အင်များသည် အထူးကောင်းမွန်စွာ နောက်ပြန်ဆုတ်ခြင်းမရှိပါ။ ဤကိစ္စရပ်တွင် အသုံးပြုသူအတွေ့အကြုံကို <noscript>
သင်စိတ်ဝင်စားပါက၊ သင့်အသုံးပြုသူများထံ အခြေအနေ (နှင့် JavaScript ပြန်လည်ဖွင့်နည်း) ကို ရှင်းပြရန်နှင့်/သို့မဟုတ် သင့်စိတ်ကြိုက် တုံ့ပြန်မှုများကို ထည့်သွင်းပါ။
ပြင်ပစာကြည့်တိုက်များ
Bootstrap သည် Prototype သို့မဟုတ် jQuery UI ကဲ့သို့သော ပြင်ပမှ JavaScript စာကြည့်တိုက်များကို တရားဝင် ပံ့ပိုးမထားပါ ။ ဖြစ်ရပ်များနှင့် နာမည် .noConflict
သတ်မှတ်ထားသော်လည်း၊ သင်ကိုယ်တိုင် ပြင်ဆင်ရန် လိုအပ်သည့် လိုက်ဖက်ညီမှု ပြဿနာများရှိနိုင်ပါသည်။
သန့်စင်ဆေး
Tooltips နှင့် Popovers သည် HTML ကိုလက်ခံသည့်ရွေးချယ်မှုများကို သန့်စင်ရန်အတွက် ကျွန်ုပ်တို့၏ built-in sanitizer ကိုအသုံးပြုပါသည်။
မူရင်း allowList
တန်ဖိုးမှာ အောက်ပါအတိုင်းဖြစ်သည်-
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultAllowlist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
ဤပုံသေတွင် တန်ဖိုးအသစ်များကို ထည့်လိုပါက allowList
အောက်ပါတို့ကို ပြုလုပ်နိုင်ပါသည်။
var myDefaultAllowList = bootstrap.Tooltip.Default.allowList
// To allow table elements
myDefaultAllowList.table = []
// To allow td elements and data-bs-option attributes on td elements
myDefaultAllowList.td = ['data-bs-option']
// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/
myDefaultAllowList['*'].push(myCustomRegex)
အကယ်၍ သင်သည် သီးခြားစာကြည့်တိုက်တစ်ခုကို အသုံးပြုလိုသောကြောင့် ကျွန်ုပ်တို့၏လက်ဆေးရည်ကို ကျော်ဖြတ်လိုပါက၊ ဥပမာ DOMPurify ၊ အောက်ပါတို့ကို လုပ်ဆောင်သင့်သည်-
var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})