AngularJS Single Page Application

1 minute read

Single page application (SPA), tek bir sayfada sunulan uygulamaların genel adıdır. SPA ile sayfa içinde gezinebilmemiz onu ayrı sayfalara bölmez.

Angularjs ile bir single page application nasıl oluşturuluyor. Angular bunun için nasıl bir route mekanizması kullanıyor ona bakalım.

var app = angular.module('myApp', ['ngRoute']);

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider.
    when("/home", {
      templateUrl: 'home.html'
    }).
    when("/services", {
      templateUrl: 'services.html'
    }).
    when("/clients", {
      templateUrl: 'clients.html'
    }).
    otherwise({
      redirectTo: '/home'
    });
}]);

Uygulamamızın modul’une ngRoute modul’unu dependency olarak belirtiyoruz. Yani modulun bağımlılıklarını belirtiyoruz. Bu sayede ngRoute içindeki her fonksiyonu/servisi kendi uygulamamızda da kullanabiliyoruz.

Config sadece Provider’lar için kullanılır. Provider’lar Angularjs’de en gelişmiş servis oluşturma kompanentidir. Buradaki $routeProvider servisi uygulama başlamadan Routing konfigürasyonunu sağlar.

$routeProvider sayesinde eğer url isteği /home olursa template olarak home.html kullanılmasını, eğer istek /services olursa template olarak services.html kullanılmasını sağlıyoruz. .otherwise ise olmayan herhangi farklı bir istekte bulunulursa /home url’e yönlendirmek için kullanılmaktadır.

<h1>Services Page</h1>
<p>Nobody can give you freedom. If you're a man, you take it.</p>

Angular route yapısı için daha çok ui-router kullanılması tavsiye edilir.

<html ng-app="myApp">

  <head>
    <link rel="stylesheet" href="style.css">
    <script src="https://code.angularjs.org/1.3.9/angular.js"></script>
    <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
    <script src="script.js"></script>
  </head>

  <body>
    <ul>
      <li><a href="#/home">Home</a></li>
      <li><a href="#/services">Services</a></li>
      <li><a href="#/clients">Clients</a></li><br>
    </ul>
      <div ng-view></div>
  </body>

</html>

Angularjs route yapısında # karakteri kullanılır. O yüzden linklerdeki url’lerde # karakteri kullanılmıştır. ng-view aslında Rails’de ki yield ile aynı işlevi görür. Angularda eğer bunu eklemezsek sayfada görüntü oluşmayacaktır.

Angular Single Page Application örneğinin plunker adresi.

Ecmel Albayrak

Ecmel Albayrak

Subscribe

* indicates required

Intuit Mailchimp