Ember.js uygulaması nasıl tasarlanır


105

Versiyon 1.0.0'a yaklaşırken (ve ulaşırken!) Ember JS'nin gelişimine ayak uydurmak zordu. En iyi uygulamalar ve orijinal geliştiricilerin niyeti hakkında birçok kafa karışıklığına yol açan öğreticiler ve belgeler gelip gitti.

Sorum tam olarak şu: Ember JS için en iyi uygulamalar nelerdir? Ember JS'nin nasıl kullanılmasının amaçlandığını gösteren güncellenmiş eğitimler veya çalışma örnekleri var mı? Kod örnekleri harika olurdu!

Herkese teşekkürler, özellikle Ember JS geliştiricileri!


7
Bu soru, "EmberJS öğreticisi" için bir Google araması için en üst sırada yer alıyor, ancak bu soruyu gerçekten cevaplamıyor. Bu gerçekten internetteki 2 bağlantıyla ilgili bir sorudur. Bu soruyu başlığa uyacak şekilde değiştirmeyi düşünür müsünüz? Bence en iyi cevap, EmberJS ile bir uygulama oluşturma sürecinden birini gerçekten götüren cevap olacaktır.
George Stocker

Yanıtlar:


17

Hem yeni hem de deneyimli Ember.js geliştiricilerinin yararlanması gereken önemli bir proje var:

Ember-CLI

Komut satırında biraz rahatlık gerektirse de, birkaç saniye içinde topluluk tarafından önerilen en iyi uygulamalarla modern bir Ember projesi oluşturabilirsiniz.

Mike Grassotti'nin cevabında olduğu gibi bir Ember.js projesi kurmak faydalı olsa da, bunu üretim kodu için yapmamalısınız. Özellikle de böylesine güçlü ve kullanımı kolay bir projeye sahip Ember-CLIolduğumuzda, bize Yehuda onaylı mutlu yolu göstermek gibi .


1
Teşekkürler Matt! Bunu Ember-CLI'ye doğrudan trafik için kabul edilen cevap yaptım.
Craig Labenz

Ember'ı birkaç gün önce ilk kez kullanmaya başladık ve Ember-CLI'yi kullanmaya başlamak ve kullanmak oldukça kolay. Tek dezavantajı, istemeyebileceğiniz / ihtiyaç duymayabileceğiniz çok fazla karmaşıklık getirmesidir (ancak, güvenen bir bireyseniz, göz ardı edilebilecek karmaşıklık). Bower ve JSHint ve Ember-CLI ve Travis CI ve EditorConfig ve Git yapılandırma dosyalarının yanı sıra varlıklar için Broccoli ve test için PhantomJS gibi diğer şeyler ...
JKillian

Adil nokta @ JKillian. Bu nedenlerden dolayı Ember'in öğrenme eğrisiyle ilgili bir endişe olduğunu biliyorum. Ember-cli bir miktar karmaşıklık (Ember-data & Broccoli) ortaya koysa da, satıcı gereksinimleri ve projenizi yapılandırmayla ilgili önemli kafa karışıklığını ortadan kaldırır. Yani bir parça tuz var.
Matt Jensen

1
Ember CLI mutlu yoluna tamamen katılıyorum! Mike Grassotti'nin aşağıdaki hızlı başlangıç ​​kılavuzu, modası geçmiş olmasaydı mükemmel bir "sonraki adım" olurdu. Ember 2.0 uygulamaları oluşturmak isteyenler için en iyi şey, en iyi uygulamalara göre, temel kavramları anladığınızdan emin olmaktır: modeller, rotalar, hizmetler, bileşenler vb. Ember dokümanları harika bir kaynaktır, ancak ben tüm kavramları birbirine bağlayan tek bir güncellenmiş kılavuzla karşılaşmadım (örnek bir uygulamayla çok daha az) Bunu yazmaya karar verdim: emberigniter.com/5-essential-ember-2.0-concepts
Frank Treacy

110

Mike Grassotti'nin Minimum Viable Ember.js Hızlı Başlangıç ​​Kılavuzu

Bu hızlı başlangıç ​​kılavuzu sizi birkaç dakika içinde sıfırdan biraz fazla sıfıra götürmelidir . İşiniz bittiğinde, ember.js'nin gerçekten işe yaradığından emin olmalısınız ve umarım daha fazlasını öğrenmek için yeterince ilgilenirsiniz.

UYARI: Sadece bu kılavuzu denemeyin, sonra ember-berbat olduğunu düşünmeyin çünkü "Bu hızlı başlangıç ​​kılavuzunu jQuery veya Fortran'da daha iyi yazabilirim" veya her neyse. Seni köz falan satmaya çalışmıyorum, bu rehber bir merhaba dünyasından biraz daha fazlası.

Adım 0 - jsFiddle'a göz atın

Bu jsFiddle , bu yanıttaki tüm kodlara sahip

Adım 1 - ember.js ve diğer gerekli kitaplıkları ekleyin

Ember.js hem jQuery hem de Gidon gerektirir. Bu kitaplıkların ember.js'den önce yüklendiğinden emin olun:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.1/ember.js"></script>

Adım 2 - Bir veya daha fazla gidon şablonu kullanarak uygulamanızın kullanıcı arayüzünü tanımlayın

Kor varsayılan olarak html sayfanızın gövdesini bir veya daha fazla handlbars şablonunun içeriğini kullanarak değiştirir. Bir gün bu şablonlar, zincir dişlileri veya belki de grunt.js tarafından bir araya getirilen ayrı .hbs dosyalarında olacaktır. Şimdilik her şeyi tek bir dosyada tutacağız ve betik etiketleri kullanacağız.

Öncelikle tek bir applicationşablon ekleyelim :

<script type="text/x-handlebars" data-template-name="application">
  <div class="container">
    <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
    <p>{{message}}</p>
  </div>
</script>

Adım 3 - ember uygulamanızı başlatın

App = Ember.Application.create({});Ember.js dosyasını yüklemek ve uygulamanızı başlatmak için başka bir komut dosyası bloğu ekleyin .

<script type='text/javascript'>
  App = Ember.Application.create({});
</script>

Temel bir kor uygulaması oluşturmak için ihtiyacınız olan tek şey bu, ancak çok da ilginç değil.

4. Adım: Denetleyici ekleyin

Ember, her gidon şablonunu bir denetleyici bağlamında değerlendirir. Yani applicationşablonda bir eşleşme var ApplicationController. Bir tane tanımlamazsanız Ember otomatik olarak oluşturur, ancak burada bir mesaj özelliği eklemek için özelleştirelim.

<script type='text/javascript'>
App.ApplicationController = Ember.Controller.extend({
    message: 'This is the application template' 
});
</script>

Adım 5: Rotaları + daha fazla denetleyici ve şablonu tanımlayın

Ember yönlendirici, şablonları / denetleyicileri bir uygulamada birleştirmeyi kolaylaştırır.

<script type='text/javascript'>
  App.Router.map(function() {
    this.route("index", { path: "/" });
    this.route("list", { path: "/list" });
  });

  App.IndexController = Ember.Controller.extend({
    message: 'Hello! See how index.hbs is evaluated in the context of IndexController' 
  });

  App.ListRoute = Ember.Route.extend({
    setupController: function(controller) {
      controller.set('content', ['angular.js', 'backbone.js', 'ember.js']);
    }
  });

</script>

Bunun çalışması için, bir {{outlet}}yardımcı ekleyerek uygulama şablonumuzu değiştiriyoruz . Ember yönlendirici, kullanıcının yoluna bağlı olarak çıkışa uygun şablonu oluşturacaktır. {{linkTo}}Yardımcıyı gezinme bağlantıları eklemek için de kullanacağız .

    <script type="text/x-handlebars" data-template-name="application">
      <div class="container">
          <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
        <p>{{message}}</p>
        <div class="row">
          {{#linkTo index class="span3 btn btn-large btn-block"}}Home{{/linkTo}}
          {{#linkTo list class="span3 btn btn-large btn-block"}}List{{/linkTo}}
        </div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="list">
      <h3 class="demo-panel-title">This is the list template</h3>
      <ul>
      {{#each item in content}}
          <li>{{item}}</li>
      {{/each}}
       </ul>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <h3 class="demo-panel-title">This is the index template</h3>
      <p>{{message}}</p>
    </script>

Bitti!

Bu uygulamanın çalışan bir örneğini burada bulabilirsiniz .

Bu jsFiddle'ı kendi ember uygulamalarınız için başlangıç ​​noktası olarak kullanabilirsiniz.

Sonraki adımlar...

Referans için orijinal cevabım:


Sorum herhangi bir Ember.js uzmanı ve kesinlikle ilgili eğitim yazarları için: Bir öğreticideki tasarım modellerini ne zaman ve diğerinden ne zaman kullanmalıyım?

Bu iki eğitim, yazıldıkları andaki en iyi uygulamaları temsil etmektedir. Elbette her birinden öğrenilebilecek bir şey var, her ikisi de ne yazık ki güncelliğini yitirmeye mahkum çünkü ember.js çok hızlı hareket ediyor. İkisinden Trek çok daha güncel.

Her birinin hangi bileşenleri kişisel tercihlerdir ve uygulamam olgunlaştıkça hangi bileşenler önemli olacaktır? Yeni bir köz uygulaması geliştiriyorsanız, Code Lab yaklaşımını izlemenizi önermem. Faydalı olamayacak kadar güncel değil.

Code Lab'in tasarımında Ember, uygulama içinde var olmaya daha yakın görünüyor (özel JS'sinin% 100'ü olmasına rağmen), Trek'in uygulaması ise Ember'da daha çok yaşıyor gibi görünüyor.

Yorumunuz mükemmel. CodeLab, çekirdek ember bileşenlerinden yararlanıyor ve bunlara küresel kapsamdan erişiyor. Yazıldığında (9 ay önce) bu oldukça yaygındı ancak günümüzde kor uygulamaları yazmak için en iyi uygulama, Trek'in yaptığına çok daha yakındır.

Bununla birlikte, Trek'in öğreticisi bile güncelliğini yitiriyor. Gerekli olan ApplicationViewve ApplicationControllerartık çerçevenin kendisi tarafından üretilen bileşenler .

Açık farkla en güncel kaynak, http://emberjs.com/guides/ adresinde yayınlanan kılavuzlar setidir - son birkaç hafta içinde sıfırdan yazılmıştır ve ember'ın en son (yayın öncesi) sürümünü yansıtmaktadır.

Ayrıca trek'in wip projesine buradan göz atabilirim: https://github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-conveniences

DÜZENLE :

@ sly7_7: Ember-data https://github.com/dgeb/ember_data_example kullanarak başka bir örnek de vereceğim


1
Başlangıçta Code Lab'i, insanları Ember ve MVC çerçevelerine yükseltmenin bir yolu olarak yazdım, ancak ne yazık ki, o zamandan beri bunu devam ettirmek için zamanım olmadı ve diğer insanların daha iyi kaynaklar yaratması yeterince değişmiş gibi görünüyor. Şahsen, projelerimin çoğu için Angular'ı kullanmaya başladığımdan beri, daha az JavaScript gerektirdiğini ve kafamı toplamanın biraz daha kolay olduğunu görüyorum. MVC seçiminiz tamamen kişisel, bu yüzden sizi etkilememe izin vermeyin.
PeteLe

1
Emberjs.com/guides adresine gittim ve açıklamalar son derece iyi yapılmış olsa da, örnekler olduğu gibi çalıştırılacak kadar eksiksiz değildi ve tamamen yeni gelen biri için zahmetli olan bilişsel ileri referanslardan muzdaripti. Hala güncelleniyorlar mı yoksa ücretsiz bir kaynak var mı?
Walt Stoneburner

1
Elbette hala güncelleniyorlar. Bugün itibariyle, hızlı bir şekilde başlamanın en iyi yolu muhtemelen şu adresteki gözetleme kodu ekran video kaydına bakmaktır
Mike Grassotti

2
@MikeGrassotti EmberJS ile çalışmaya başlamak için kaynak kodunu göstermek için cevabınızı düzenlemenin herhangi bir yolu var mı? EmberJS ile bir "Hello World" uygulaması oluşturmaya yönelik adım adım talimatlar olabilir mi?
George Stocker

2
@MikeGrassotti ember.js etiketi wiki, bu soru ve yanıtı içerecek şekilde güncellenmelidir
MilkyWayJoe


4

Yeoman ve beraberindeki kor jeneratörünü kullanmanızı şiddetle tavsiye ederim . Bir uygulamayı üretim için geliştirmek, test etmek ve hazırlamak için ihtiyacınız olan tüm araçları kutudan çıkarırsınız. Ek bir avantaj olarak, görünüm şablonlarınızı birden çok dosyaya bölebilecek ve sürdürülebilir bir kod tabanı oluşturmanıza yardımcı olacak akıllı bir dizin yapısıyla başlayabileceksiniz.

Yaklaşık 5 dakika içinde kurup çalıştırmayla ilgili bir eğitim yazdım. Sadece node.js yükleyin ve burada takip edin



1

Ayrıca Tuts + Premium'dan Let's Learn Ember adlı bu ücretsiz öğreticiyi inceleyin . free coursesSerilerinden olduğu için ücretsizdir . Bu kurs, Tutsların dediği gibi, takip etmesi kolay on dört bölüme ayrılmıştır.

Umarım bu yardımcı olur.

Saygılarımızla,


0

Kömür yeoman yaklaşımını tercih ederim. Aşağıdakiler dahil olmak üzere size kutudan çıkan bir sürü şey verir:

  • 'modül' yaklaşımı kullanan güzel bir klasör mimarisi.
  • nötr
  • canlı yeniden yükle
  • küçültmek
  • çirkinleştirmek
  • jshint

ve dahası.

ve kurulumu süper kolaydır, sadece yo charcoalbir uygulama oluşturmak için çalıştırın ve ardından yo charcoal:module myModuleyeni bir modül ekleyin.

daha fazla bilgi burada: https://github.com/thomasboyt/charcoal


0

En son EmberJS'yi Ember-Data ile, Amblem şablon motoruyla kullanmak istiyorsanız, bir Başlangıç ​​Kiti oluşturdum. Hepsi Middleman ile paketlenmiştir, böylece CoffeeScript ile geliştirebilirsiniz. GitHub'ımdaki her şey: http://goo.gl/a7kz6y



0

Ember'dan önce başlayan ve Ember'ı gerçek dünyadaki şeyler için ciddi kullanım durumlarında öfkeyle kullanmaya yönelik bir dizi video oluşturmaya başladım.

Bunun gün ışığına çıktığını görmekle ilgileniyorsanız (ilginizi çekerse sonunda bunu kamuoyuna duyurmaktan çok mutluyum) kesinlikle yaptığım gönderiye gidip "beğen" (veya sadece burada yorum yapın, Sanırım):

http://discuss.emberjs.com/t/making-ember-easier-to-approach-aka-crazy-screencasts-videos-that-will-stick-in-your-mind-for-learning-ember/5284

Topluluğun gelişmesine yardımcı olmak için çok hevesliyim, aynı zamanda insanların kolay bir şekilde standart web sitelerini nasıl oluşturacaklarını öğrenmelerine yardımcı olmak için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.