Unutarnje vanjsko JavaSkripta: Učite s primjerom

⚡ Pametni sažetak

Unutarnji i vanjski JavaSkripta opisuje dva podržana položaja za kod skripte unutar web projekta. Ovaj članak uspoređuje oba pristupa, prikazuje radne primjere, objašnjava ispravno povezivanje s async i defer te navodi kada svaki položaj pruža bolju održivost i performanse.

  • 📄 Interni smještaj: Code nalazi se između oznaka skripte unutar HTML dokumenta i učitava se sa stranicom koja ga posjeduje.
  • 🗂️ Vanjski smještaj: Code nalazi se u zasebnoj .js datoteci na koju se upućuje putem atributa src, tako da mnoge stranice dijele jedan izvorni kod.
  • 🔗 Pravilo povezivanja: Vanjska oznaka skripte mora uvijek biti zatvorena, a src putanja se rješava relativno u odnosu na HTML dokument, osim ako nije navedena puna putanja.
  • ️ Kontrola učitavanja: Atribut defer pokreće datoteku nakon što se završi parsiranje HTML-a, dok ga async pokreće čim se preuzimanje završi.
  • 🚀 Prednost keširanja: Vanjske datoteke preglednik jednom pohranjuje u predmemoriju i ponovno ih koristi na svakoj stranici koja ih referencira.
  • 🧭 Kriterij odabira: Kratku logiku specifičnu za stranicu zadržite interno, a dijeljenu ili dugu logiku premjestite u vanjsku datoteku radi lakšeg otklanjanja pogrešaka.
  • ???? Ugrađeni rukovatelji: Rukovatelji temeljeni na atributima poput onclick miješaju oznake s ponašanjem i trebali bi ih zamijeniti s addEventListener.

Unutarnji i vanjski JavaScript

Što su unutarnji i vanjski JavaSkripta?

Možete koristiti JavaSkriptni kod na dva načina.

  1. Možete uključiti i JavaKod skripte interno unutar vašeg HTML dokumenta sebe.
  2. Možete zadržati JavaUlazni kod skripte zasebnu vanjsku datoteku a zatim pokažite na tu datoteku iz vašeg HTML dokumenta.

Oba položaja izvršavaju potpuno isti jezik i daju isti rezultat u pregledniku. Razlika leži u tome gdje se pohranjuje izvorni kod, kako ga preglednik preuzima i koliko se lako kod može ponovno koristiti i održavati na web stranici.

Što je Interno JavaSkripta?

interni JavaSkripta je kod napisan izravno unutar para oznaka skripte u HTML datoteci. Preglednik čita oznake od vrha prema dnu i kada dođe do oznake skripte, odmah izvršava naredbe, bez dodatnog mrežnog zahtjeva.

Do sada smo koristili Interni JS. Evo uzorka –

<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>

Izlaz:

Today is Wednesday.

Ispisani dan mijenja se s posjetiteljevim sistemskim satom, jer getDay vraća broj od 0 za nedjelju do 6 za subotu, a taj se broj koristi kao indeks u nizu dana u tjednu.

Što je Vanjski JavaSkripta?

Planirate prikazivati ​​trenutni datum i vrijeme na svim svojim web stranicama. Pretpostavimo da ste napisali kod i kopirali ga na sve svoje web stranice (recimo 100). Ali kasnije želite promijeniti format u kojem se datum ili vrijeme prikazuju. U tom slučaju morat ćete napraviti promjene na svih 100 web stranica. To će biti vrlo dugotrajan i težak zadatak.

Dakle, spremite JavaScript kod u novoj datoteci s nastavkom .js. Zatim dodajte redak koda na sve svoje web-stranice da ukazuje na vašu .js datoteku ovako:

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

bilješkePretpostavlja se da se .js datoteka i sve vaše web stranice nalaze u istoj mapi. Ako se external.js datoteka nalazi u drugoj mapi, morate navesti punu putanju do datoteke u atributu src. Završni natpis </script> Oznaka je obavezna iako element nema sadržaj, jer oznaka skripte koja se sama zatvara nije valjani HTML i ostatak stranice bi bio progutan od strane nezavršenog elementa.

Ovo je kod koji postavljate unutar 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);

Ovo je vaša datoteka currentdetails.js. Ne brinite ako vidite duge retke koda. Uskoro ćete naučiti programirati. Napravite promjene u svom HTML dokumentu ovako:

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

⚠️ Upozorenje: Gornja naslijeđena skripta stavlja nulu ispred svakog sata, pa se 11 ujutro prikazuje kao 011. Također dodjeljuje hours1 bez deklariranja, što stvara implicitnu globalnu varijablu i izbacuje grešku u strogom načinu rada. Ispravljena verzija u nastavku ispravlja oba nedostatka.

Moderno prepisivanje iste datoteke je kraće, deklarira svaku varijablu i ispravno dopunjuje vrijednosti:

// 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;

Uzorak izlaza:

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

Kako povezati vanjski JavaIspravno skriptna datoteka

Tri detalja odlučuju hoće li se vanjska datoteka uopće učitati: putanja zapisana u atributu src, položaj oznake skripte u dokumentu i atribut učitavanja koji se na nju primjenjuje.

Putovi se rješavaju relativno u odnosu na HTML dokument, osim ako nije navedena početna kosa crta ili puna adresa.

izvorna vrijednost Značenje Odlučuje se
currentdetails.js Ista mapa kao i HTML stranica /stranice/currentdetails.js
js/currentdetails.js Podmapa trenutne mape /stranice/js/currentdetails.js
../currentdetails.js Jedna mapa iznad trenutne /currentdetails.js
/resursi/js/currentdetails.js Apsolutni put od korijena web-mjesta /resursi/js/currentdetails.js

Atribut učitavanja kontrolira kada preglednik prestaje s parsiranjem HTML-a za pokretanje datoteke. Tablica u nastavku sažima tri dostupna ponašanja.

Atribut Preuzimanje Trenutak izvršenja Redoslijed sačuvan
nijedan Blokira HTML parsiranje Odmah nakon preuzimanja Da
odgoditi Paralelno s parsiranjem Nakon što je dokument analiziran Da
async Paralelno s parsiranjem Čim preuzimanje završi Ne
<!-- 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>

💡 Savjet: The type="text/javascript" Atribut je opcionalan u HTML5 i može se izostaviti. Zadržite ga samo kada podržava vrlo stare preglednike ili ga zamijenite s type="module" pri korištenju naredbi za uvoz i izvoz.

Interno naspram eksternog JavaSkripta: Ključne razlike

U donjoj usporedbi oba plasmana uspoređuju se s obzirom na čimbenike koji obično određuju izbor.

Faktor interni JavaScript Vanjski JavaScript
Mjesto pohrane Unutar HTML datoteke Odvojena datoteka s ekstenzijom .js
Ponovna upotreba na više stranica Zahtijeva kopiranje na svaku stranicu Jedna datoteka na koju se poziva svaka stranica
Keširanje preglednika Ponovno preuzimanje sa svakom stranicom Jednom predmemorirano i ponovno upotrijebljeno
Napori održavanja Visoko kada se kod dijeli Nisko, jedna datoteka za uređivanje
Dodatni HTTP zahtjev Ne Da, jedan po datoteci
Otklanjanje grešaka Teže u dugoj HTML datoteci Lakše s jasnim nazivima datoteka i brojevima redaka
Najprikladniji za Kratka logika specifična za stranicu Dijeljene biblioteke i dugi skripti

Kada koristiti unutarnje i vanjske JavaScript Code?

Ako imate samo nekoliko redaka koda koji je specifičan za određenu web stranicu, bolje je zadržati svoj JavaSkriptni kod interno unutar vašeg HTML dokumenta.

S druge strane, ako vaš JavaAko se skriptni kod koristi na mnogim web stranicama, trebali biste razmotriti njegovo zadržavanjeping svoj kod u zasebnoj datoteci. U tom slučaju, ako želite napraviti neke promjene u svom kodu, dovoljno je promijeniti samo jednu datoteku, što olakšava održavanje koda. Ako je vaš kod predug, bolje ga je držati u zasebnoj datoteci. To pomaže u jednostavnom otklanjanju pogrešaka.

Praktično pravilo za početnike je prag od otprilike deset redaka. Sve kraće i specifično za stranicu može ostati interno, dok sve dulje ili dijeljeno pripada vanjskoj datoteci.

U redu JavaSkripta i zašto je treba izbjegavati

Treći položaj postoji na starijim stranicama, gdje je kôd napisan izravno unutar HTML atributa. Iako se i dalje izvršava, miješa strukturu s ponašanjem i ne može se predmemorirati, ponovno koristiti ili pokriti strogom politikom sigurnosti sadržaja.

<!-- 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>

Nakon što se osjećate ugodno postavljajući skripte, nastavite s JavaMetode niza skripti, studija petlje u JavaScripti proradite kroz praktičan JavaPrimjeri skriptnog kodaVanjske datoteke također znatno olakšavaju upravljanje logikom pohrane preglednika, kao što su kolačići u JavaScript.

Pitanja i odgovori

Postavite ga neposredno prije zatvarajuće oznake tijela ili u zaglavlje s atributom defer. Obje opcije omogućuju HTML-u da se prvo prikaže, tako da elementi postoje do trenutka izvršavanja koda.

Da. Dodajte jednu oznaku skripte po datoteci. Bez asinkronosti, preglednik ih izvršava redoslijedom kojim se pojavljuju, stoga datoteke koje definiraju dijeljene funkcije postavite prije datoteka koje ih pozivaju.

Uobičajeni uzroci su pogrešna putanja izvora, nedostajuća oznaka završnog skripta ili naziv datoteke s različitim velikim slovima. Otvorite mrežnu ploču preglednika i potražite odgovor 404.

Samo pri prvom posjetu, kada se napravi još jedan zahtjev. Nakon toga se datoteka poslužuje iz predmemorije preglednika, što je obično brže od ponavljanja istog koda unutar svake stranice.

Većina asistenata vraća jednu HTML datoteku s internim oznakama skripte jer se ona pokreće bez postavljanja. Izričito zatražite zasebnu .js datoteku kada vam je potrebna struktura spremna za produkciju.

Vanjske datoteke s atributom async odgovaraju AI widgetima trećih strana kao što su chatbotovi, jer se učitavaju neovisno i nikada ne blokiraju renderiranje okolne stranice.

Sažmite ovu objavu uz: