Intern extern JavaScript: Învață cu exemplu

⚡ Rezumat inteligent

Intern si extern JavaScripturile descriu cele două plasări acceptate pentru codul scriptului în cadrul unui proiect web. Acest articol compară ambele abordări, prezintă exemple funcționale, explică legătura corectă cu async și defer și precizează când fiecare plasare oferă o mentenabilitate și o performanță mai bune.

  • 📄 Plasare internă: Code se află între etichetele de script din documentul HTML și se încarcă cu pagina care îl deține.
  • 🗂️ Plasare externă: Code se află într-un fișier .js separat, la care se face referire prin atributul src, astfel încât multe pagini au o singură sursă în comun.
  • 🔗 Regula de legătură: O etichetă de script externă trebuie să fie întotdeauna închisă, iar calea src este rezolvată relativ la documentul HTML, cu excepția cazului în care este furnizată o cale completă.
  • ⚙️ Controlul încărcării: Atributul defer rulează fișierul după finalizarea analizării HTML, în timp ce atributul async îl rulează imediat ce descărcarea se termină.
  • 🚀 Avantajul memorării în cache: Fișierele externe sunt memorate în cache de browser o singură dată și reutilizate pe fiecare pagină care le face referire.
  • 🧭 Criteriu de selecție: Păstrați logica scurtă specifică paginii interne și mutați logica partajată sau lungă într-un fișier extern pentru o depanare mai ușoară.
  • 🚫 Gestionare în linie: Rulajele bazate pe atribute, cum ar fi onclick, combină markup-ul cu comportamentul și ar trebui înlocuite de addEventListener.

Intern si extern JavaScenariu

Ce sunt Intern și Extern JavaScenariul?

Poți să folosești JavaScript cod în două moduri.

  1. Puteți include fie JavaCod script intern în documentul dvs. HTML însăși.
  2. Puteți păstra JavaCod script în un fișier extern separat și apoi indicați acel fișier din documentul dvs. HTML.

Ambele plasări execută exact același limbaj și produc același rezultat în browser. Diferența constă în locul în care este stocat codul sursă, modul în care browserul îl descarcă și cât de ușor poate fi reutilizat și întreținut codul pe un site web.

Ce este intern JavaScenariul?

Intern JavaScriptul este cod scris direct în interiorul unei perechi de etichete script din fișierul HTML. Browserul citește markup-ul de sus în jos și, când ajunge la eticheta script, execută instrucțiunile imediat, fără solicitări suplimentare de rețea.

Am folosit Internal JS până acum. Iată o mostră -

<html>
<head>
  <title>My First JavaScript code!!!</title>
  <script type="text/javascript">
    // Create a Date Object
    var day = new Date();
    // Use getDay function to obtain todays Day.
    // getDay() method returns the day of the week as a number like 0 for Sunday, 1 for Monday,….., 5
    // This value is stored in today variable
    var today = day.getDay();
    // To get the name of the day as Sunday, Monday or Saturday, we have created an array named weekday and stored the values
    var weekday = new Array(7);
    weekday[0]="Sunday";
    weekday[1]="Monday";
    weekday[2]="Tuesday";
    weekday[3]="Wednesday";
    weekday[4]="Thursday";
    weekday[5]="Friday";
    weekday[6]="Saturday";
    // weekday[today] will return the day of the week as we want
    document.write("Today is " + weekday[today] + ".");
  </script>
</head>
<body>
</body>
</html>

ieșire:

Today is Wednesday.

Ziua afișată se schimbă odată cu ceasul de sistem al vizitatorului, deoarece getDay returnează un număr de la 0 pentru duminică până la 6 pentru sâmbătă, iar acel număr este folosit ca index în matricea zilei săptămânii.

Ce este Extern JavaScenariul?

Intenționați să afișați data și ora curente în toate paginile web. Să presupunem că ați scris codul și l-ați copiat în toate paginile web (să zicem 100). Dar mai târziu, doriți să schimbați formatul în care este afișată data sau ora. În acest caz, va trebui să faceți modificări în toate cele 100 de pagini web. Aceasta va fi o sarcină foarte dificilă și consumatoare de timp.

Deci, salvați JavaScenariu cod într-un fișier nou cu extensia .js. Apoi, adăugați o linie de cod în toate paginile dvs. web pentru a indica fișierul dvs. .js astfel:

<script type="text/javascript" src="currentdetails.js"></script>

notițeSe presupune că fișierul .js și toate paginile web se află în același folder. Dacă fișierul external.js se află într-un folder diferit, trebuie să specificați calea completă către fișier în atributul src. Închiderea </script> este obligatorie chiar dacă elementul nu are conținut, deoarece o etichetă de script care se închide automat nu este HTML valid, iar restul paginii ar fi înghițit de elementul neterminat.

Acesta este codul pe care îl plasezi în currentdetails.js:

var currentDate = new Date();
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var monthName;

var hours = currentDate.getHours();
var mins = currentDate.getMinutes();
var secs = currentDate.getSeconds();
var strToAppend;
if (hours >12 )
{
	hours1 = "0" + (hours - 12);
strToAppend = "PM";
}
else if (hours <12)
{
	hours1 = "0" + hours;
	strToAppend = "AM";
}
else
{
	hours1 = hours;
	strToAppend = "PM";
}

if(mins<10)
mins = "0" + mins;
if (secs<10)
	secs = "0" + secs;

switch (month)
{
	case 1:
		monthName = "January";
		break;
	case 2:
		monthName = "February";
		break;
	case 3:
		monthName = "March";
		break;
	case 4:
		monthName = "April";
		break;
	case 5:
		monthName = "May";
		break;
	case 6:
		monthName = "June";
		break;
	case 7:
		monthName = "July";
		break;
	case 8:
		monthName = "August";
		break;
	case 9:
		monthName = "September";
		break;
	case 10:
		monthName = "October";
		break;
	case 11:
		monthName = "November";
		break;
	case 12:
		monthName = "December";
		break;
}

var year = currentDate.getFullYear();
var myString;
myString = "Today is " + day +  " - " + monthName + " - " + year + ".<br />Current time is " + hours1 + ":" + mins + ":" + secs + " " + strToAppend + ".";
document.write(myString);

Acesta este fișierul tău currentdetails.js. Nu-ți face griji că vezi linii lungi de cod. Vei învăța să programezi în curând. Fă modificări la documentul tău HTML astfel:

<html>
	<head>
	   <title>My External JavaScript Code!!!</title>
	   <script type="text/javascript" src="currentdetails.js">
	   </script>
	</head>
	<body>
	</body>
</html>

⚠️ Atenție: Scriptul vechi de mai sus adaugă un zero la fiecare oră ca prefix, astfel încât ora 11 dimineața este afișată ca 011. De asemenea, atribuie hours1 fără a o declara, ceea ce creează o variabilă globală implicită și generează o eroare în modul strict. Versiunea corectată de mai jos corectează ambele defecte.

O rescriere modernă a aceluiași fișier este mai scurtă, declară fiecare variabilă și completează valorile corect:

// currentdetails.js - corrected modern version
const now = new Date();

const months = ["January", "February", "March", "April", "May", "June",
                "July", "August", "September", "October", "November", "December"];

const hours24 = now.getHours();
const suffix  = hours24 >= 12 ? "PM" : "AM";
const hours12 = String(hours24 % 12 || 12).padStart(2, "0");
const mins    = String(now.getMinutes()).padStart(2, "0");
const secs    = String(now.getSeconds()).padStart(2, "0");

const message = "Today is " + now.getDate() + " - " + months[now.getMonth()] +
                " - " + now.getFullYear() + ". Current time is " +
                hours12 + ":" + mins + ":" + secs + " " + suffix + ".";

document.getElementById("stamp").textContent = message;

Eșantion de ieșire:

Today is 29 - July - 2026. Current time is 09:05:07 AM.

Cum să legați un link extern JavaFișierul script corect

Trei detalii decid dacă un fișier extern se încarcă: calea scrisă în atributul src, poziția etichetei script în document și atributul loading aplicat acestuia.

Căile sunt rezolvate în raport cu documentul HTML, cu excepția cazului în care se furnizează o bară oblică inițială sau o adresă completă.

Valoare sursă Sens Se hotărăște să
currentdetails.js Același folder ca și pagina HTML /pages/currentdetails.js
js/detalii_actuale.js Subfolderul folderului curent /pages/js/currentdetails.js
../detalii_actuale.js Un folder deasupra celui curent /detalii_actuale.js
/assets/js/currentdetails.js Calea absolută de la rădăcina site-ului /assets/js/currentdetails.js

Atributul loading controlează momentul în care browserul oprește analizarea codului HTML pentru a rula fișierul. Tabelul de mai jos prezintă pe scurt cele trei comportamente disponibile.

Atribut Descărcare Momentul execuției Comandă păstrată
Nici unul Blochează analizarea HTML Imediat după descărcare Da
amâna În paralel cu analiza După ce documentul este analizat Da
async În paralel cu analiza Imediat ce descărcarea se termină Nu
<!-- Recommended for scripts that read the DOM -->
<script src="js/currentdetails.js" defer></script>

<!-- Recommended for independent third party scripts -->
<script src="js/analytics.js" async></script>

<!-- Modern module syntax, deferred by default -->
<script type="module" src="js/app.js"></script>

💡 Sfat: type="text/javascript" Atributul este opțional în HTML5 și poate fi omis. Păstrați-l doar atunci când sunteți compatibil cu browsere foarte vechi sau înlocuiți-l cu type="module" atunci când se utilizează instrucțiuni de import și export.

Intern vs. Extern JavaScenariul: Diferențe cheie

Comparația de mai jos prezintă ambele plasări una lângă alta, în funcție de factorii care decid de obicei alegerea.

Factor Intern JavaScenariu Extern JavaScenariu
Locație de depozitare În interiorul fișierului HTML Fișier separat cu extensia .js
Reutilizare pe mai multe pagini Necesită copierea pe fiecare pagină Un fișier la care se face referire pentru fiecare pagină
Memorizarea în cache a browserului Redescărcat cu fiecare pagină Stocat în cache o singură dată și reutilizat
Efort de întreținere Ridicat când codul este partajat Scăzut, un fișier de editat
Cerere HTTP suplimentară Nu Da, câte unul per fișier
Depanarea Mai dificil într-un fișier HTML lung Mai ușor cu nume de fișiere și numere de linie clare
Cel mai potrivit pentru Logică scurtă specifică paginii Biblioteci partajate și scripturi lungi

Când să utilizați intern și extern JavaScenariu Code?

Dacă aveți doar câteva linii de cod care sunt specifice unei anumite pagini web, atunci este mai bine să vă păstrați JavaCod de script intern în documentul dvs. HTML.

Pe de altă parte, dacă JavaCodul script este utilizat în multe pagini web, atunci ar trebui să luați în considerare keeping codul dvs. într-un fișier separat. În acest caz, dacă doriți să faceți modificări la codul dvs., trebuie doar să modificați un singur fișier, ceea ce facilitează întreținerea codului. Dacă codul dvs. este prea lung, este, de asemenea, mai bine să îl păstrați într-un fișier separat. Acest lucru ajută la depanare ușoară.

O regulă practică pentru începători este un prag de aproximativ zece rânduri. Orice element mai scurt și specific paginii poate rămâne intern, în timp ce orice element mai lung sau partajat aparține unui fișier extern.

In linie JavaScenariul și de ce ar trebui evitat

O a treia plasare există în paginile mai vechi, unde codul este scris direct în interiorul unui atribut HTML. Deși rulează în continuare, combină structura cu comportamentul și nu poate fi memorat în cache, reutilizat sau acoperit de o politică strictă de securitate a conținutului.

<!-- Inline handler: works, but avoid it -->
<button onclick="alert('Clicked')">Click me</button>

<!-- Preferred: behaviour attached from a script -->
<button id="greet">Click me</button>

<script>
  document.getElementById("greet").addEventListener("click", () => {
      alert("Clicked");
  });
</script>

După ce te simți confortabil plasând scripturi, continuă cu JavaMetode de tip matrice de script, studiu bucle în JavaScenariuși lucrați prin practic JavaExemple de cod de scriptFișierele externe facilitează, de asemenea, gestionarea logicii de stocare a browserului, cum ar fi fursecuri în JavaScenariu.

Întrebări frecvente

Plasați-l chiar înainte de eticheta de închidere body sau în head cu atributul defer. Ambele opțiuni permit redarea mai întâi a codului HTML, astfel încât elementele să existe în momentul rulării codului.

Da. Adăugați o etichetă de script per fișier. Fără async, browserul le execută în ordinea în care apar, așadar plasați fișierele care definesc funcții partajate înaintea fișierelor care le apelează.

Cauzele obișnuite sunt o cale src greșită, o etichetă de script de închidere lipsă sau un nume de fișier cu majuscule diferite. Deschideți panoul de rețea al browserului și căutați un răspuns 404.

Numai la prima vizită, când se face o solicitare suplimentară. După aceea, fișierul este servit din memoria cache a browserului, ceea ce este de obicei mai rapid decât repetarea aceluiași cod în fiecare pagină.

Majoritatea asistenților returnează un singur fișier HTML cu etichete de script interne, deoarece acesta rulează fără configurare. Solicitați explicit un fișier .js separat atunci când aveți nevoie de o structură pregătită pentru producție.

Fișierele externe cu atributul async sunt potrivite pentru widget-uri AI terțe, cum ar fi chatbot-urile, deoarece se încarcă independent și nu blochează niciodată redarea paginii înconjurătoare.

Rezumați această postare cu: