នៅ​ក្នុង​​ឯកសារ Astro មួយ បើ​សិន​​ជា​មាន​ធាតុ <script> នៅ​ក្នុង​នោះ កម្មវិធី Astro នឹង​ប្រមូល​កូដ​នៅ​ក្នុង​​នោះ​​ព្រម​ទាំង​កូដ​ដែល​នាំ​ចូល​​មក​ផង មក​ចង​ក្រង​ជា​កូដ JavaScript មួយបញ្ចូល​ទៅ​ក្នុងផ្នែក​ក្បាលនៃ​គេហទំព័រ នៅ​ត្រង់​កន្លែង​ែដល​មាន​តាក់ <head> នៅ​ក្នុង​នោះ។ កូដ​នោះ​​​នឹង​មាន​ទំរង់​​ដូច​ខាង​ក្រោម ហើយ​នឹង​ត្រូវ​បញ្ជូន​ទៅ​កាន់​ browser ។

 

<script type="module" src="..."></script>

 

បើ​យើង​មិន​ចង់​អោយ​មាន​ការប្រមូល​ចងក្រង​កូដ​ដូច​ខាង​លើ​នេះ​ទេ យើង​ត្រូវ​ប្រើ is:inline។

 

<script is:inline>
  // Will be rendered into the HTML exactly as written!
  // Local imports are not resolved and will not work.
  // If in a component, repeats each time the component is used.
</script>

 

កូដ​នៃ​ភាសា JavaScript អាច​ត្រូវ​សរសេរ​នៅ​ក្នុង​ឯកសារ​ផ្សេងៗ នៅ​ក្នុង​ថត​ណា​មួយ​នៅ​ក្នុង​ថត src ។ កូដ​នោះ​អាច​ត្រូវ​យក​មក​ប្រើតាមរយៈ​តាក់ <script> ។

 

<!-- relative path to script at `src/scripts/local.js` -->
<script src="../scripts/local.js"></script>

<!-- also works for local TypeScript files -->
<script src="./script-with-types.ts"></script>

 

កម្មវិធី Astro នឹង​ប្រមូលចងក្រង​កូដ​ខាង​លើ​នេះ បញ្ចូល​ទៅ​ក្នុង​តាក់ <head> នៅ​ផ្នែក​ក្បាល​នៃ​គេហទំព័រ​។ ក៏ប៉ុន្តែ បើ​សិន​ជា​កូដ​នៃ​ភាសា JavaScript ស្ថិត​នៅ​ក្នុង​ឯកសារ​មិន​ស្ថិត​នៅ​ក្នុង​ថត src ការយក​កូដ​ទាំងនោះ​មក​ប្រើ​ ត្រូវ​ធ្វើឡើង​តាម​រយៈធាតុ <script> ដោយ​មាន​ is:inline នៅ​ក្នុង​នោះ​។

 

<!-- absolute path to a script at `public/my-script.js` -->
<script is:inline src="/my-script.js"></script>

<!-- full URL to a script on a remote server -->
<script is:inline src="https://my-analytics.com/script.js"></script>

 

តាម​ធម្មតា កូដ​ជា​ភាសា JavaScript នៅ​ក្នុង frontmatter នៅ​ក្នុង​​ឯសារ Astro ដំណើរការ​តែ​នៅ​លើ server តែ​ប៉ុណ្ណោះ​។ ដូចនេះ​នៅ​ក្នុង browser អថេរ​ទាំងឡាយ​ដែល​ត្រូវ​បាន​បង្កើត​នៅ​ក្នុង​ frontmatter នឹង​លែង​មាន​តទៅ​ទៀត​ហើយ​។ ក៏​​ប៉ុន្តែ យើង​មាន​មធ្យោបាយ​មួយ ដើម្បី​បញ្ជូន​អថេរ​ទាំងនោះ​ទៅ​កាន់ browser ។

 

<!--src/pages/index.astro-->
---
const message = "ស្វាគមន៍​មក​កាន់​ទំព័រដើម"
---

<div data-message={message}>
    <button>Welcome</button>
</div>

<script>
    const message = document.querySelector('div').getAttribute("data-message")
    const button = document.querySelector('button');
    button.addEventListener('click', () => {
        alert(message);
    })
</script>

 

ការ​បញ្ជូន​អថេរ​ពី​ frontmatter ទៅ​កាន់​ browser ត្រូវ​ធ្វើ​ឡើង​ដោយ​ការផ្តល់​អថេរ​ទាំងនោះ​ជា​តំលៃ​សំរាប់​សម្បត្តិ data-* ។ នៅ​ក្នុង browser យើង​អាច​ស្រង់​យក​អថេរ​នោះ​តាម​វិធី getAttribute("data-*") ៕