in English

JavaScript

jQuery ပေါ်တွင်တည်ဆောက်ထားသောကျွန်ုပ်တို့၏ရွေးချယ်နိုင်သော JavaScript ပလပ်အင်များဖြင့် Bootstrap ကိုအသက်ဝင်စေပါ။ ပလပ်အင်တစ်ခုစီ၊ ကျွန်ုပ်တို့၏ဒေတာနှင့် ပရိုဂရမ်မာ API ရွေးချယ်စရာများနှင့် အခြားအရာများအကြောင်း လေ့လာပါ။

တစ်ဦးချင်း သို့မဟုတ် ပြုစုခြင်း။

ပလပ်အင်များကို တစ်ဦးချင်းစီ (Bootstrap ၏တစ်ဦးချင်းစီ ကို အသုံးပြု၍) သို့မဟုတ် js/dist/*.jsတစ်ကြိမ်တည်းအသုံးပြုခြင်း bootstrap.jsသို့မဟုတ် အသေးစိပ်ပြုလုပ်ခြင်း bootstrap.min.js(နှစ်ခုလုံးမပါဝင်ပါ)။

အကယ်၍ သင်သည် အစုအစည်းတစ်ခု (Webpack၊ Rollup…) ကိုအသုံးပြု /js/dist/*.jsပါက UMD အဆင်သင့်ဖြစ်သည့်ဖိုင်များကို သင်အသုံးပြုနိုင်ပါသည်။

မှီခိုမှု

အချို့သော ပလပ်အင်များနှင့် CSS အစိတ်အပိုင်းများသည် အခြားပလပ်အင်များပေါ်တွင် မူတည်သည်။ အကယ်၍ သင်သည် ပလပ်အင်များကို တစ်ဦးချင်းစီ ထည့်သွင်းပါက၊ စာရွက်စာတမ်းများတွင် ဤမှီခိုမှုများ ရှိမရှိ စစ်ဆေးပါ။ ပလပ်အင်အားလုံးသည် jQuery ပေါ်တွင်မူတည် ကြောင်းကိုလည်း သတိပြုပါ (၎င်းသည် plugin ဖိုင်များ ရှေ့တွင် jQuery ကို ထည့်သွင်းရမည်ဖြစ်သည် )။ jQuery ၏ မည်သည့်ဗားရှင်းများကို ပံ့ပိုးထားသည်ကို သိရှိရန် ကျွန်ုပ်တို့နှင့် တိုင်ပင် ပါ။package.json

ကျွန်ုပ်တို့၏ dropdowns၊ popovers နှင့် tooltips များသည် Popper.js ပေါ်တွင်မူတည်ပါသည် ။

ဒေတာဂုဏ်တော်

Bootstrap ပလပ်အင်အားလုံးနီးပါးကို ဒေတာ attribute များဖြင့် HTML တစ်ခုတည်းဖြင့် ဖွင့်နိုင်ပြီး (ကျွန်ုပ်တို့နှစ်သက်သော JavaScript လုပ်ဆောင်ချက်ကို အသုံးပြုသည့်နည်းလမ်း)။ ဒြပ်စင်တစ်ခုတည်းတွင် ဒေတာ attributes အစုံကို တစ်ခုတည်း ကိုသာ အသုံးပြုရန် သေချာ ပါစေ။ (ဥပမာ၊ တူညီသောခလုတ်မှ tooltip နှင့် modal ကို သင်စတင်၍မရပါ။)

သို့သော်လည်း အချို့သောအခြေအနေများတွင် ၎င်းသည် ဤလုပ်ဆောင်နိုင်စွမ်းကို ပိတ်ရန် နှစ်လိုဖွယ်ဖြစ်နိုင်သည်။ ဒေတာ attribute API ကို ပိတ်ရန်၊ ဤကဲ့သို့ ခေါင်းစဉ်တပ်ထားသော စာရွက်စာတမ်းပေါ်ရှိ အဖြစ်အပျက်အားလုံးကို တွဲဖြုတ် data-apiပါ-

$(document).off('.data-api')

တနည်းအားဖြင့်၊ သီးခြားပလပ်အင်တစ်ခုအား ပစ်မှတ်ထားရန်၊ ဤကဲ့သို့သော data-api namespace နှင့်အတူ ပလပ်အင်၏အမည်ကို namespace အဖြစ် ထည့်သွင်းပါ-

$(document).off('.alert.data-api')

ရွေးချယ်မှုများ

လောလောဆယ် DOM ဒြပ်စင်များကို စုံစမ်းရန် ကျွန်ုပ်တို့သည် မူလနည်းလမ်းများ querySelectorနှင့် querySelectorAllစွမ်းဆောင်ရည် အကြောင်းပြချက်များအတွက် အသုံးပြုသည်၊ ထို့ကြောင့် သင်သည် မှန်ကန်သော ရွေးချယ်မှု များကို အသုံးပြုရန် လိုအပ်ပါသည် ။ အကယ်၍ သင်သည် အထူးရွေးချယ်ကိရိယာများကို အသုံးပြုပါက၊ ဥပမာ- collapse:Example၎င်းတို့ကို ရှောင်ရန် သေချာပါစေ။

အဲ့ဒါနဲ့

Bootstrap သည် ပလပ်အင်အများစု၏ ထူးခြားသောလုပ်ဆောင်ချက်များအတွက် စိတ်ကြိုက်ဖြစ်ရပ်များကို ပံ့ပိုးပေးပါသည်။ ယေဘူယျအားဖြင့်၊ ၎င်းတို့သည် အဆုံးမရှိနှင့် အတိတ်ပါဝင်မှုပုံစံဖြင့် လာပါသည် - အဆုံးမရှိ (ဥပမာ show) သည် ဖြစ်ရပ်တစ်ခု၏အစတွင် အစပျိုးပြီး ၎င်း၏အတိတ်ပါဝင်မှုပုံစံ (ဥပမာ shown) သည် လုပ်ဆောင်ချက်တစ်ခုပြီးဆုံးချိန်တွင် အစပျိုးသည်။

အဆုံးမရှိ အဖြစ်အပျက်များအားလုံးသည် preventDefault()လုပ်ဆောင်နိုင်စွမ်းကို ပေးစွမ်းသည်။ ၎င်းသည် လုပ်ဆောင်ချက်တစ်ခုမစတင်မီ လုပ်ဆောင်မှုကို ရပ်တန့်ရန် စွမ်းရည်ကို ပံ့ပိုးပေးသည်။ ဖြစ်ရပ်ကို ကိုင်တွယ်သူထံမှ အမှားကို ပြန်ပို့ခြင်းသည်လည်း အလိုအလျောက်ခေါ်ဆို preventDefault()မည်ဖြစ်သည်။

$('#myModal').on('show.bs.modal', function (event) {
  if (!data) {
    return event.preventDefault() // stops modal from being shown
  }
})

ပရိုဂရမ်မာတစ် API

JavaScript API မှတဆင့် Bootstrap ပလပ်အင်များအားလုံးကို သင်အသုံးပြုနိုင်မည်ဟုလည်း ကျွန်ုပ်တို့ယုံကြည်ပါသည်။ အများသူငှာ API များအားလုံးသည် တစ်ခုတည်း၊ ချိတ်ဆက်နိုင်သော နည်းလမ်းများဖြစ်ပြီး စုစည်းမှုအပေါ် ပြန်လည်လုပ်ဆောင်ခဲ့သည်။

$('.btn.danger').button('toggle').addClass('fat')

နည်းလမ်းအားလုံးသည် ရွေးချယ်ခွင့်ရှိသော ရွေးချယ်စရာအရာဝတ္ထု၊ သီးခြားနည်းလမ်းတစ်ခုအား ပစ်မှတ်ထားသည့် စာကြောင်းတစ်ခု သို့မဟုတ် မည်သည့်အရာကိုမျှ လက်ခံသင့်သည် (မူရင်းအပြုအမူဖြင့် ပလပ်အင်ကို အစပြုသည့်အရာဖြစ်သည်)။

$('#myModal').modal() // initialized with defaults
$('#myModal').modal({ keyboard: false }) // initialized with no keyboard
$('#myModal').modal('show') // initializes and invokes show immediately

Constructorပလပ်အင်တစ်ခုစီသည် ၎င်း၏အကြမ်းထည်တည်ဆောက်သူကို ပိုင်ဆိုင်မှု တစ်ခုပေါ်တွင်လည်း ဖော်ပြသည် - $.fn.popover.Constructor. အထူးပလပ်အင်ဥပမာတစ်ခုကို သင်ရယူလိုပါက၊ ၎င်းကို အစိတ်အပိုင်းတစ်ခုမှ တိုက်ရိုက်ရယူပါ- $('[rel="popover"]').data('popover').

Asynchronous လုပ်ဆောင်ချက်များနှင့် အသွင်ကူးပြောင်းမှုများ

ပရိုဂရမ်မာတစ် API နည်းလမ်းအားလုံးသည် အ ညီအမျှဖြစ်ပြီး အသွင်ကူးပြောင်းမှုကို စတင်သည် နှင့် မပြီးဆုံးမီ တွင် ခေါ်ဆိုသူထံ ပြန်သွားရန် ။

အကူးအပြောင်းပြီးသည်နှင့် လုပ်ဆောင်ချက်တစ်ခုအား လုပ်ဆောင်ရန်အတွက် သက်ဆိုင်ရာဖြစ်ရပ်ကို သင်နားထောင်နိုင်ပါသည်။

$('#myCollapse').on('shown.bs.collapse', function (event) {
  // Action to execute once the collapsible area is expanded
})

ထို့အပြင် transitioning component တစ်ခုပေါ်တွင် method call ကို လျစ်လျူရှု ပါမည်။

$('#myCarousel').on('slid.bs.carousel', function (event) {
  $('#myCarousel').carousel('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
})

$('#myCarousel').carousel('1') // Will start sliding to the slide 1 and returns to the caller
$('#myCarousel').carousel('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
$.fn.modal.Constructor.Default.keyboard = false

ပဋိပက္ခမရှိပါ။

တစ်ခါတစ်ရံတွင် အခြား 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 ၏ jQuery ပလပ်အင်တစ်ခုစီ၏ဗားရှင်းကို VERSIONplugin ၏တည်ဆောက်သူ၏ပိုင်ဆိုင်မှုမှတဆင့်ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ဥပမာ၊ tooltip plugin အတွက်၊

$.fn.tooltip.Constructor.VERSION // => "4.6.2"

JavaScript ကို ပိတ်ထားသည့်အခါ အထူးအတားအဆီးများ မရှိပါ။

JavaScript ကိုပိတ်ထားသောအခါတွင် Bootstrap ၏ပလပ်အင်များသည် အထူးကောင်းမွန်စွာ နောက်ပြန်ဆုတ်သွားခြင်းမရှိပါ။ ဤကိစ္စတွင် အသုံးပြုသူအတွေ့အကြုံကို <noscript>သင်စိတ်ဝင်စားပါက၊ သင့်အသုံးပြုသူများထံ အခြေအနေ (နှင့် JavaScript ပြန်လည်ဖွင့်နည်း) ကို ရှင်းပြရန်နှင့်/သို့မဟုတ် သင့်စိတ်ကြိုက် တုံ့ပြန်မှုများကို ထည့်သွင်းပါ။

ပြင်ပစာကြည့်တိုက်များ

Bootstrap သည် Prototype သို့မဟုတ် jQuery UI ကဲ့သို့သော ပြင်ပမှ JavaScript စာကြည့်တိုက်များကို တရားဝင် ပံ့ပိုးမထားပါ ။ ဖြစ်ရပ်များနှင့် အမည်ခွဲ ထားသော်လည်း .noConflict၊ သင်ကိုယ်တိုင် ပြင်ဆင်ရန် လိုအပ်သည့် လိုက်ဖက်ညီမှု ပြဿနာများရှိနိုင်သည်။

အသုံးချပါ။

Bootstrap ၏ JavaScript ဖိုင်များအားလုံးပေါ်တွင်မူတည်ပြီး util.js၎င်းကို အခြားသော JavaScript ဖိုင်များနှင့်အတူ ထည့်သွင်းရမည်ဖြစ်သည်။ စုစည်းထားသော (သို့မဟုတ် အသေးစိပ်) ကို သင်အသုံးပြုနေပါက bootstrap.js၊ ၎င်းကို ထည့်သွင်းရန် မလိုအပ်ပါ။

util.jsအသုံးဝင်သောလုပ်ဆောင်ချက်များနှင့် ဖြစ်ရပ်များအတွက် အခြေခံအကူအညီ transitionEndအပြင် CSS အကူးအပြောင်း emulator ပါ၀င်သည်။ CSS အကူးအပြောင်း ပံ့ပိုးမှု ရှိမရှိ စစ်ဆေးရန်နှင့် hanging transitions များကို ဖမ်းစားရန် အခြား ပလပ်အင်များက ၎င်းကို အသုံးပြုပါသည်။

သန့်စင်ဆေး

Tooltips နှင့် Popovers သည် HTML ကိုလက်ခံသည့်ရွေးချယ်မှုများကို သန့်စင်ရန်အတွက် ကျွန်ုပ်တို့၏ built-in sanitizer ကိုအသုံးပြုပါသည်။

မူရင်း whiteListတန်ဖိုးမှာ အောက်ပါအတိုင်းဖြစ်သည်-

var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = {
  // 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: []
}

ဤပုံသေတွင် တန်ဖိုးအသစ်များကို ထည့်လိုပါက whiteListအောက်ပါတို့ကို ပြုလုပ်နိုင်ပါသည်။

var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList

// To allow table elements
myDefaultWhiteList.table = []

// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-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-]+/
myDefaultWhiteList['*'].push(myCustomRegex)

အကယ်၍ သင်သည် သီးခြားစာကြည့်တိုက်တစ်ခုကို အသုံးပြုလိုသောကြောင့် ကျွန်ုပ်တို့၏လက်ဆေးရည်ကို ကျော်ဖြတ်လိုပါက၊ ဥပမာ DOMPurify ၊ အောက်ပါတို့ကို လုပ်ဆောင်သင့်သည်-

$('#yourTooltip').tooltip({
  sanitizeFn: function (content) {
    return DOMPurify.sanitize(content)
  }
})