μ κΈ λκΈ°λ€μ νΌλλ°±μ λ°μμ λΈλ‘κ·Έλ₯Ό μμ νκ³ μ HTML νΈμ§μ ν΄λ³΄μλ€. κΈ°μ‘΄μλ μ¬μ΄λλ° HTML λ°μ€μ μλ github contribution graphλ₯Ό λΈλ‘κ·Έ μλ¨μΌλ‘ μ¬λ¦¬λ κ² λͺ©μ !
μ¬μ΄λλ°μ μμλ₯Ό λ¨μν λΈλ‘κ·Έ μλ¨μ Header Divμ μμΉμν€λ©΄ λκ² κ±°λ κ°λ¨νκ² μκ°νλλ°, μ λλ‘ λμ§ μμλ€.
λ²κ·Έ
μ¬μ΄λλ°μ μλ <script> ... </script>λ₯Ό κ·Έλλ‘ κ°μ Έμμ <head> λ΄ μμΉμμΌ°μΌλ μ€ν¬λ¦½νΈκ° μ λλ‘ μλνμ§ μμλ€. μ μ΄λ―Έμ§μ²λΌ μμμ κΈ°λ³Έ λ¬Έκ΅¬λ‘ λ£μ΄λ 'Loading data...'λ§ νμλμκ³ , scriptκ° μλλμ΄ μμλ₯Ό μλ§μ ννλ‘ μμ ν΄μ€μΌ νλλ° κ·Έλ¬μ§ λͺ» νκ³ μμλ€.
λλ²κ·Έ
μ΄ λ¬Έμ μ μμΈμ μ€ν¬λ¦½νΈ λ‘λ© μμμ λ¬Έμ μλ€.
HTML λ¬Έμλ λΈλΌμ°μ μ μν΄μ νμ±λμ΄ DOMνΈλ¦¬λ‘ λ³νλλ€. HTML λ¬Έμλ μμμ μλλ‘ μμ°¨μ μΌλ‘ νμ± λλ©°, <script>λ₯Ό λ§λκ² λλ©΄ νμ±μ μΌμ μ€μ§νκ³ , ν΄λΉ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ€. μ΄ μμλ₯Ό λͺ°λμ΄μ 무μ§μ±(?)μΌλ‘ Head λ΄ μμΉμμΌ°μλ€.
<script>
GitHubCalendar(".calendar", "seungineer", { responsive: true, tooltips: false, global_stats: false}).then(function() {
});
</script>
μ λ ₯νκ³ μ νλ μ€ν¬λ¦½νΈλ 'calendar' classλ₯Ό κ°λ μμλ₯Ό μ‘°μνλ κ²μ΄λ€. μ¦, Head λ΄ μ€ν¬λ¦½νΈκ° μμΉλμμ λλ νμ±μ΄ λμ§ μμ μνμμ μ€ν¬λ¦½νΈκ° μ€νλμ΄ μ΄λ€ λ³νλ μμ΄ λμ΄κ°μΌλ©° νμ±μ΄ μλ£λ νμλ μ€ν¬λ¦½νΈ νκ·Έκ° μ€νλμ§ μμμ κΈ°λ³Έ λ¬Έκ΅¬λ‘ λ£μ΄λ λ¬Έμλ§ νμλ κ²μ΄λ€.
μ€μ λ‘ μ μ΄λ―Έμ§μ²λΌ </body> νκ·Έ λ°λ‘ μμ <script> νκ·Έλ₯Ό μμΉμν€μ μ μμ μΌλ‘ calendar classλ₯Ό μμ νλ κ²μ νμΈν μ μμλ€.
Script νκ·Έ λ‘λ© μμ κ΄λ ¨ κ°λ
μ€ν¬λ¦½νΈ νκ·Έμ λν΄ μ°Ύμλ³Έ κΉμ μ€ν¬λ¦½νΈ λ‘λ© μμκ° μ€μν μ΄μ μ λν΄ μ’ λ μ°Ύμ보μλ€.
- μμ‘΄μ± λ¬Έμ : B μ€ν¬λ¦½νΈμμ A μ€ν¬λ¦½νΈμ μν΄ μ μλ λ³μλ ν¨μλ₯Ό νμλ‘ ν μ μλ€. μ΄λ, A μ€ν¬λ¦½νΈκ° λ‘λλμ§ μμ μνμμ μ€νλλ€λ©΄, μλ¬κ° λ°μνκ±°λ μ€μλν μ μλ€.
- DOM μμ : μ€λ κ²ͺμλ λ¬Έμ λ‘, HTML λ¬Έμμ νΉμ μμμ μ‘°μμ μλνκ±°λ, μ€ν¬λ¦½νΈκ° λ¬Έμ μλ¨μ μμΉν΄ μμ λ μμ£Ό λ°μν μ μλ λ¬Έμ μ΄λ€.
- λκΈ°μ(Synchronous), λΉλκΈ°μ(Asynchronous)λ‘λ© : λκΈ°μ λ‘λ©μ μ μ¬λ‘μ²λΌ μ€ν¬λ¦½νΈκ° μμλλ‘ νλμ© μ€νλλ©°, μ€ν¬λ¦½νΈ λ‘λ© μ€μλ HTML λ¬Έμμ λλ¨Έμ§ λΆλΆμ΄ λ‘λ©λμ§ μλλ€. λΉλκΈ°μ λ‘λ©μ μ€ν¬λ¦½νΈκ° backgroundμμ λ‘λλλ©°, νμ΄μ§μ λ€λ₯Έ λΆλΆμ΄ λ‘λ©λλ κ²μ λ°©ν΄νμ§ μλλ€. κ·Έλ λ€κ³ μμ‘΄μ± λ¬Έμ κ° μλ²½ν μ²λ¦¬λμ§λ μλλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μ
- μ€ν¬λ¦½νΈ νκ·Έ μμΉ μ‘°μ : </body> νκ·Έ λ°λ‘ μμ λμ΄μ HTML λ¬Έμκ° νμ±μ΄ λͺ¨λ μλ£λ νμ μ€ν¬λ¦½νΈκ° μ€νλλλ‘ νμ¬ DOM μμκ° λͺ¨λ λ‘λλ νμ μ€νμν¨λ€.
- async, defer μμ± μ¬μ© : μ€ν¬λ¦½νΈκ° λΉλκΈ°μ μΌλ‘ λ‘λλλλ‘ νλ€.
- async μμ±: HTML λ¬Έμμ νμ± κ³Όμ κ³Ό λμμ μ€ν¬λ¦½νΈκ° λ‘λλμ§λ§ νμ± μλ£ ν μ€ν¬λ¦½νΈκ° μ€νλλ€. λ€λ§ μ€ν¬λ¦½νΈ μ€ν μμλ 보μ₯λμ§ μλλ€. μ£Όλ‘ λΆμ ν΄κ³Ό κ°μ΄ λ¬Έμ νμ±κ³Ό μμμ ν¬κ² μν₯μ λ°μ§ μλ νκ·Έμ μ¬μ©νλ€.
- defer μμ±: HTML λ¬Έμμ νμ± μλ£ νμ μ€ν¬λ¦½νΈ νκ·Έκ° μ€νλ μμλλ‘ μ€νλλ€. κ·Έλμ μ€ν μμκ° μ€μν μ€ν¬λ¦½νΈμ μ ν©νλ€.
- λͺ¨λ λ‘λ λλ λ²λ€λ¬ μ¬μ©νκΈ° : μΉν©(webpack)μ΄λ RequireJS κ°μ λͺ¨λμ μ¬μ©νμ¬ μ€ν¬λ¦½νΈμ μμ‘΄μ±μ κ΄λ¦¬(μλλ μμλλ‘ λ‘λ)ν μ μλ€.
async, defer μ¬μ© μμ
<script async src="analytics.js"></script>
<script defer src="script1.js"></script>
<script defer src="script2.js"></script>