Angular 1'den 2'ye geçiş denemesi

Murat Çorlu
JSTurk
Published in
2 min readOct 25, 2016

--

3 yıldan beri neredeyse her web projemi AngularJS ile kodladım. 2 sene önce Angular2'nin duyurulduğu zamanlardan beri Angular2'yi de takip ediyorum. Sırf “yeni teknoloji” diye versiyon yükseltmeyi makul bulmadığım için da Angular 1.x’in üzerine bana ne katacağı konusunda değerlendirmeler yapıyordum.

Açıkçası yakın zamana kadar beni Angular 1 yerine 2 ile proje geliştirmeye motive edecek pek bir argüman göremiyordum. JavaScript dünyasında gelişen ES6 rüzgarından da çok heyecan duymadığım için yazım tarzındaki değişiklikler beni pek cezbetmiyordu. Ancak yakın zamanda bir müşteri için Progresif Web Uygulaması tarzında bir uygulama yazma ihtiyacı olunca, bazı avantajlar dikkatimi çekti.

Bunlardan ilki Ahead of time compilation(AoT) denen imkan oldu. Angular 1'de yazdığımız template’ler tarayıcı tarafında Angular çalıştığı anda(Just in time) compile ediliyor. Angular2'de bu compile etme işini build anında yapma imkanı geliyor. Bu da projenizin ilk çalışma süresini hatırı sayılır biçimde(template miktarına bağlı olarak) kısaltıyor.

İkinci imkansa App Shell modülü oldu. App Shell, PWA mimarisinde uygulama açılırkenki bekleme anında kullanıcıya beyaz ekran göstermek yerine -bir çok mobil uygulamanın da yaptığı gibi- uygulamanın iskelet ekranını statik olarak hızlıca göstermek ve bu sayede daha yüksek bir hız algısı sağlamak için kullanılıyor. Tabi böyle bir yöntemi bir çok şekilde uygulamak mümkün ancak Angular2'deki AppShell modülü bu konuda yaşayacağınız bir çok amelelikten sizi kurtarıyor ve sizin yine ayrı bir component olarak yazdığınız bir layout’u build anında statik bir html’e çevirerek ilk arayüz gösterme algısını iyileştirebiliyor.

Açıkçası bu 2 imkan dışındaki Angular2'ye has görünen bir çok farklılık, Angular 1'de de bir şekilde ulaşabildiğimiz veya farklı şekilde yaptığımız şeyler gibi geliyor bana. Ancak bu 2 imkan da yabana atılacak şeyler değil. Bu yüzden Angular2'nin nihayet stabil versiyonunu duyurmasının da itici gücüyle Angular2'yi gerçek bir projede denemeye karar verdim.

Projede Firebase kullanacaktık. Webpack, Pugjs ve Stylus da benim diğer yan teknoloji tercihlerimdi. Ancak gördüm ki, Angular2 stabil versiyonunu duyurmasına rağmen onun çevre eklentileri(AngularFire, Ionic vs) henüz beta versiyonundan kurtulamamışlar. Bununla birlikte Angular ile paketten çıkan RxJS ve -teoride onsuz da olabilen ama onsuz yazmaya niyet etmek cesaret isteyen- Typescript’in de default olarak beta paketlerinin kullanıldığını farkettim. Bu beta paketler çok hızlı versiyon yükseltiyorlar ve her versiyon yükseldiğinde peer-dependency konusunda ciddi problemlerle karşılaşılabiliyor. Öyle ki, 2 haftalık deneme sürecimde çalışır hale getirdiğim bazı alanlar gelen yeni versiyonlarla tekrar tekrar bozulabildi.

Hal böyle olunca ben de daha fazla dayanamadım.

Angular2'yi hiçbir yan eklenti ihtiyacı olmadan kullanmak isteyenler bence sıkıntı yaşamayabilirler. Ancak Angular2 ile web uygulaması geliştirme ortamı için birkaç ay daha süreye ihtiyaç var gibi görünüyor.

--

--

Murat Çorlu
JSTurk

Tech lead at Trendyol, loves to use web technologies