Çok sayıda HTML şablon dosyasıyla büyük bir Meteor uygulamasını yapılandırmak için en iyi uygulamalar nelerdir? [kapalı]


165

Tüm örneklerde (büyük şerit, kelime oyunu vb.) Tek bir HTML şablon dosyası vardır. En iyi uygulama örneği olarak kullanabileceğimiz birçok HTML şablonu dosyası içeren büyük bir açık kaynak kodlu Meteor projesi var mı? Büyük bir uygulamanın ihtiyaç duyduğu her şeyi tek bir şablon dosyasına koymak pratik görünmüyor.


meteor yeni ürünleri bu .Ben de bu konuda bazı guildline bekliyoruz hakkında hiçbir şeyin ilgili en iyi uygulamaları bulmak havenot olduğunu
newlife

10
Kılavuzda Uygulamanızı yapılandırma hakkındaki bölümü okudunuz mu? HTML dosyalarının taranması ve birleştirilmesi hakkında bazı açıklamalar vardır.
zwippie

1
Meteor resmi rehberi çok güzel bir dosya yapısı önerir. Buraya bakın: guide.meteor.com/sttruc.html#javascript-styapı
Waqas

Yanıtlar:


16

Hepsini bir araya getirin! Dokümanlardan:

> HTML files in a Meteor application are treated quite a bit differently
> from a server-side framework. Meteor scans all the HTML files in your
> directory for three top-level elements: <head>, <body>, and
> <template>. The head and body sections are seperately concatenated
> into a single head and body, which are transmitted to the client on
> initial page load.
> 
> Template sections, on the other hand, are converted into JavaScript
> functions, available under the Template namespace. It's a really
> convenient way to ship HTML templates to the client. See the templates
> section for more.

29
Bu posterin endişesi. Topaklanma tamam, ancak Asana ile ne olduğunu görebilirsiniz -> 1MB istemci kodunu indirirken bir yükleme ekranı gerektirir. Birçok site için bu kabul edilemez. Ana ekran yüklendikten sonra yükleme parçalarından bazılarını yapamayacağımızı göreceğiz, ancak şu anda şüpheliyim. Bence işleri biraz parçalamak için bir özellik olması gerekecek.
Dave Sanders

36
Bu cevap, Google'daki 1 numaralı sonuçtur ancak güvenilirliğini yitirmiştir. Benim gibi diğer gelecek ziyaretçiler; aşağı bak!
Kloar

1.1.0.2 itibariyle, demoyu basit todo uygulaması, tarayıcı önbelleği kaldırıldığında zorla yeniden yüklediğinizde 1.7MB dosya aktarır. Bu, birçok kullanım durumu için kabul edilemez. : / Varlıklar önbelleğe alındıktan sonra işler çok gelişti, ancak ilk yükte oldukça acımasız.
Jason Kim

Fikir: web paketini kullanın, şeyler için paketler yapın, gerektiğinde tembel yükleyin.
trusktr

evet Asana'nın yüklenmesi biraz zaman alıyor. Asana, kullanıcıların 2014 yılında 175 milyon görev oluşturduğu inanılmaz derecede iyi yapılmış, reaktif bir uygulamadır. Daha hızlı yüklenen uygulamalar her zaman daha iyi değildir. Uygulamaların telefonunuzda da başlatılması biraz zaman alır. İnsanlar buna alışacaklar.
Max Hodges

274

Gayri resmi meteor SSS'de olduğu gibi, büyük bir uygulamanın nasıl yapılandırılacağını hemen hemen açıklıyor:

Dosyalarımı nereye koymalıyım?

Meteordaki örnek uygulamalar çok basittir ve fazla bilgi vermez. İşte bunu yapmanın en iyi yolu hakkındaki mevcut düşüncem: (herhangi bir öneri / iyileştirme çok açıktır!)

lib/                       # <- any common code for client/server.
lib/environment.js         # <- general configuration
lib/methods.js             # <- Meteor.method definitions
lib/external               # <- common code from someone else
## Note that js files in lib folders are loaded before other js files.

collections/               # <- definitions of collections and methods on them (could be models/)

client/lib                 # <- client specific libraries (also loaded first)
client/lib/environment.js  # <- configuration of any client side packages
client/lib/helpers         # <- any helpers (handlebars or otherwise) that are used often in view files

client/application.js      # <- subscriptions, basic Meteor.startup code.
client/index.html          # <- toplevel html
client/index.js            # <- and its JS
client/views/<page>.html   # <- the templates specific to a single page
client/views/<page>.js     # <- and the JS to hook it up
client/views/<type>/       # <- if you find you have a lot of views of the same object type
client/stylesheets/        # <- css / styl / less files

server/publications.js     # <- Meteor.publish definitions
server/lib/environment.js  # <- configuration of server side packages

public/                    # <- static files, such as images, that are served directly.

tests/                     # <- unit test files (won't be loaded on client or server)

Daha büyük uygulamalar için, ayrı işlevsellik, aynı desen kullanılarak düzenlenmiş alt dizinlere bölünebilir. Buradaki fikir, sonunda işlevsellik modülünün ayrı bir akıllı pakete dahil edilebileceği ve ideal olarak etrafta paylaşılabileceğidir.

feature-foo/               # <- all functionality related to feature 'foo'
feature-foo/lib/           # <- common code
feature-foo/models/        # <- model definitions
feature-foo/client/        # <- files only sent to the client
feature-foo/server/        # <- files only available on the server

Daha fazlasını öğrenin: Resmi Olmayan Meteor SSS


12
IMHO bu cevap kabul edilenden daha iyi. Şimdi deneyeceğim.
hakan

17
0.6.0'dan beri, bu karmaşadan kaçınmak ve uygulamanızı tamamen akıllı paketlerden çalıştırmaktan çok daha iyi durumdasınız. Bu blog yazısında biraz daha ayrıntıya giriyorum
matb33

1
Herkes nereye koymak için bir ipucu var mobile-config.js?
Dostum

1
Yanıt ve gayri resmi SSS (meteor dünyasında yeniyim) bağlantısı için teşekkürler, "başka birinden ortak kod" ile ne anlama geliyor?
Cohars

3
Meteor 1.3'e gelince, bunun ES6 modülü ithalatı nedeniyle eski olduğunu söyleyebilirim. Uygulama yapısı ile ilgili meteor kılavuzu makalesine bakın: guide.meteor.com/sttruc.html
Samuel

36

Yagooar ile aynı fikirdeyim ama bunun yerine:

istemci / application.js

kullanın:

istemci / main.js

main. * dosyaları en son yüklenen. Bu, herhangi bir yükleme sırası sorununuz olmadığından emin olmanıza yardımcı olacaktır. Daha fazla ayrıntı için Meteor belgelerine bakın, http://docs.meteor.com/#structuringyourapp .


26

Meteor, uygulamanızı hemen hemen istediğiniz şekilde yapılandırmanız için tasarlanmıştır. Yapınızı beğenmezseniz, bir dosyayı yeni bir dizine taşıyabilir, hatta bir dosyayı birçok parçaya ve Meteor'a hemen hemen aynı şekilde ayırabilirsiniz. İstemci, sunucu ve genel dizinlere özel muameleyi ana belge sayfasında belirtildiği gibi not etmeniz yeterlidir : http://docs.meteor.com/ .

Her şeyi tek bir HTML dolgusunda bir araya getirmek kesinlikle en iyi uygulama olarak ortaya çıkmayacaktır.

İşte olası tek bir yapı örneği: Uygulamalarımdan birinde, bir tartışma forumunda, modül veya "sayfa türü" (ana sayfa, forum, konu, yorum), her biri için .css, .html ve .js dosyası koyarak organize ediyorum sayfa türü tek bir dizinde birlikte. Ayrıca ortak .css ve .js kodunu içeren bir "temel" modülüm ve yönlendiriciye bağlı olarak diğer modüllerden birini oluşturmak için {{renderPage}} kullanan ana şablon var.

my_app/
    lib/
        router.js
    client/
        base/
            base.html
            base.js
            base.css
        home/
            home.html
            home.js
            home.css
        forum/
            forum.html
            forum.js
            forum.css
        topic/
            topic.html
            topic.js
            topic.css
        comment/
            comment.html
            comment.js
            comment.css

Ayrıca işleve göre düzenleyebilirsiniz

my_app/
    lib/
        router.js
    templates/
        base.html
        home.html
        forum.html
        topic.html
        comment.html
    js/
        base.js
        home.js
        forum.js
        topic.js
        comment.js
    css/
        base.css
        home.css
        forum.css
        topic.css
        comment.css

Umarım bazı daha iyi uygulama yapıları ve adlandırma kuralları ortaya çıkar.


2
Bu benim en sevdiğim cevap. Meteor ile ilgili en sevdiğim şeylerden biri, dosyalarınızı sizin için uygun bir şekilde yapılandırabilmenizdir.
CaptSaltyJack

Bu cevabı beğendim. Bunu ilk yoldan yapıyorum.
Sung Cho

ilgili şeyler birbirine yakın olmalıdır. Cevabım seninki gibi ama geri.
Max Hodges


i "konu" gibi bir özellik adı ile birden fazla dosya adlandırma değeri görmüyorum. Şimdi özellik adını "kategori" olarak değiştirmek istiyorsanız, birden fazla dosya adını değiştirmeniz gerekir. Bunları "topic" adlı tek bir klasör altında düzenleyin ve genel olarak adlandırın: events.js, views.html, styles, css, route.js, vb. Daha fazlası için cevabımı görün.
Max Hodges

14

Bu konuda Google çalışan herkes için:

emYeni bir meteor App arma zaman (EventedMind tarafından, Demir Router arkasına adamlar) komut satırı aracı çok yararlıdır. Güzel bir dosya / klasör yapısı oluşturur. Zaten bir uygulama üzerinde çalışıyorsanız ve uygulamayı yeniden düzenlemek istiyorsanız, yeni bir proje oluşturun emve ilham almak için kullanabilirsiniz.

Bkz. Https://github.com/EventedMind/em

Ve burada: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js


4
Not: Bunun yerine demir klips (aynı yazar) kullanılmıştır. Bakınız: github.com/iron-meteor/iron-cli
j0e

Evet, 'em', aynı araç olarak iron-cli olarak değiştirildi.
Mikael Lirbank

11

Bence Meteor Kitabını Keşfedin dosya yapısı gerçekten iyi ve sağlam bir başlangıç.

/app: 
 /client
   main.html
   main.js
 /server 
 /public
 /lib
 /collections
  • / Server dizinindeki kod yalnızca sunucuda çalışır.
  • / Client dizinindeki kod yalnızca istemcide çalışır.
  • Diğer her şey hem istemci hem de sunucuda çalışır.
  • / Lib içindeki dosyalar her şeyden önce yüklenir.
  • Herhangi bir ana. * Dosyası her şeyden sonra yüklenir.
  • Statik varlıklarınız (yazı tipleri, resimler vb.) / Public dizinine gider.

10

Paketler oluşturun

Tabii ki her şey bu yaklaşıma uymuyor, ancak büyük uygulamalarda izole edilebilecek birçok işleve sahip olacaksınız. Ayrılabilir ve tekrar kullanılabilir her şey paketlere uyar, geri kalanı diğer cevaplarda belirtildiği gibi normal dizin yapısına gider. Ek yükü önlemek için paketler yapmasanız bile, kodu modüler bir şekilde yapılandırmak iyi bir fikirdir ( bu önerilere bakın )

Meteor, dosyalarınızı nasıl yüklediğinize (yükleme sırası, burada: istemci / sunucu / her ikisi) ve paketin neyi dışa aktardığına dair ayrıntılı bir kontrol sağlar.

Özellikle ilgili dosyalar arasında mantığı paylaşmanın kolay yolunu çok kullanışlı buluyorum. Diyelim ki, bazı util işlevlerini yapmak ve farklı dosyalarda kullanmak istiyorsunuz. Sadece "global" (ve olmadan var) yaparsınız ve Meteor paketin ad alanına sarar, böylece global ad alanını kirletmez

İşte resmi doktor


6

Meteorjs kodlama bir süre sonra, oldukça karmaşık bir online oyun inşa etmek için ayırmak için biraz boş zaman için mutluyum. Uygulama yapısı benim ilk endişelerimden biri ve görünüşe göre çok iyi programcılar, bir uygulamayı yapılandırmak için sadece paketin yöntemini savundu, bu da işlevsel olarak farklı paketleri gevşek bir şekilde birleştirmenizi sağlar. Yaklaşımın başka avantajları da vardır ve yaklaşımı açıklayan 2 çok iyi makale burada bulunabilir:

http://www.matb33.me/2013/09/05/meteor-project-sttruc.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-sttruc-with-mediator -Desen


6

Büyük bir projemiz var (muhtemelen 1.5 yıldır tam zamanlı olarak geliştirildiği için bugüne kadar herkesin inşa ettiği en büyük Meteor projesinden biri). Her görünümde aynı dosya adı kümesini kullanıyoruz. Çok tutarlı ve tam olarak aradığımız şeye hızla gitmemize yardımcı oluyor:

  • events.js
  • helpers.js
  • templates.html
  • routes.js
  • styles.less
  • vb.

Bir projede şöyle görünüyor:

       ├── konsolidasyon
       .Js ├── events.js
       Ers ├── helpers.js
       Uters ├── routers.js
       │ └── templates.html
       ├── müşteri
       Uters └── routers.js
       ├── gösterge tablosu
       .Js ├── events.js
       Ers ├── helpers.js
       D ├── onDestroyed.js
       R ├── onRendered.js
       Uters ├── routers.js
       │ └── templates.html
       ├── emailDoğrulama
       .Js ├── events.js
       Ers ├── helpers.js
       Uters ├── routers.js
       │ └── templates.html
       ├── yükleniyor
       . ├── Instagram Hesabındaki Resim ve Videoları styles.css
       │ └── templates.html
       ├── posta kutusu
       Form │ autoform.js
       Dation ├── konsolidasyonRequestConfirmation
       .Js │ ├── events.js
       Ers │ ├── helpers.js
       C │ onCreated.js
       R │ onRendered.js
       . │ └── templates.html
       .Js ├── events.js
       Ers ├── helpers.js

İlgili şablonlar aynı dosyada birlikte depolanır. view/order/checkout/templates.htmlGösterilenlerin içeriği burada daraltılmıştır:

<template name="orderCheckout"></template>

<template name="paymentPanel"></template>

<template name="orderCheckoutSummary"></template>

<template name="paypalReturnOrderCheckout"></template>

Görünümler çok sayıda bölümle karmaşıklaştığında alt klasörler kullanırız:

       ├── araba
       I ├── addItem
       Form │ ├── autoform.js
       .Js │ ├── events.js
       Ers │ ├── helpers.js
       R │ onRendered.js
       Uters │ ├── routers.js
       │ │ ├── Instagram Hesabındaki Resim ve Videoları styles.less
       . │ └── templates.html
       Out ├── ödeme
       Form │ ├── autoform.js
       .Js │ ├── events.js
       Ers │ ├── helpers.js
       R │ onRendered.js
       Uters │ ├── routers.js
       . │ └── templates.html
       └── └── görünüm
       Form │ autoform.js
       I ├── deleteItem
       .Js │ ├── events.js
       Ers │ ├── helpers.js
       . │ └── templates.html
       I ├── editItem
       Form │ ├── autoform.js
       .Js │ ├── events.js
       Ers │ ├── helpers.js
       . │ └── templates.html
       .Js ├── events.js
       Ers ├── helpers.js
       D ├── onDestroyed.js
       R ├── onRendered.js
       Uters ├── routers.js
       │ ├── Instagram Hesabındaki Resim ve Videoları styles.less
       │ └── templates.html

Ayrıca Meteor gelişimi için son derece güçlü ve esnek bir editör olan WebStorm ile geliştiriyoruz. Kodumuzu ararken ve düzenlerken ve verimli çalışırken bunu son derece yararlı buluyoruz. Web fırtınası görünümü

İstek üzerine ayrıntıları paylaşmaktan mutluluk duyarız.


3
Bu cevabın iyileştirilebileceğini düşünüyorsanız lütfen bir yorum eklemeyi düşünün.
Max Hodges

Harika gönderi. Soru: Meteor ile bunca zaman sonra, hala bir e-ticaret gibi büyük projeler için tavsiye ediyor musunuz? Ya da LoopBack ve hatta Happi olarak size daha fazla “özerklik” sağlayabilecek bir çerçeve kullanmayı düşünün.
Liko

Meteor'u seviyoruz ve içindeki tüm yeni gelişmeleri yapıyoruz. Ne yazık ki LoopBack veya Happi hakkında bir fikre sahip olmak için yeterince tanıdık değilim.
Max Hodges

1
LoopBacks uçtan uca dinlenme API'larına odaklanırken, geleneksel bir web geliştirme çerçevesi (RoR gibi) gibi görünmesini sağlar. RoR, REST API'yi doğru buldu, ancak Meteor'un gerçek zamanlı olduğunu doğru hissediyorum.
Max Hodges

Geri dönüşünüz için teşekkür ederiz. Sunucu tarafını da özellikler için mi düzenlediniz?
Liko

5

Demir klipsli iskele CLI kullanın. İşleri çok kolaylaştırır.

https://github.com/iron-meteor/iron-cli

yüklendikten sonra. iron create my-appyeni bir proje oluşturmak için kullanın . Sizin için aşağıdaki yapıyı yaratacaktır. Bunu mevcut projelerde de kullanabilirsiniz. iron migrateproje dizininde kullanın .

my-app/    
 .iron/    
   config.json    
 bin/    
 build/    
 config/    
   development/    
     env.sh    
     settings.json    
 app/    
   client/    
     collections/    
     lib/    
     stylesheets/    
     templates/    
     head.html    
   lib/    
     collections/    
     controllers/    
     methods.js    
     routes.js    
   packages/    
   private/    
   public/    
   server/    
     collections/    
     controllers/    
     lib/    
     methods.js    
     publish.js    
     bootstrap.js

Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir.
user2314737

@ user2314737 Yanıtlayıcının gönderisini düzenlediğini söyleme. Artık eldeki sorun için gerekli olan verileri içermektedir.
Kyll

4

Zaten demir yönlendirici ve Model (Collection2) içeren mattdeom boilerplate formatını takip ediyorum. Aşağıya bakınız :

client/                 # Client folder
    compatibility/      # Libraries which create a global variable
    config/             # Configuration files (on the client)
    lib/                # Library files that get executed first
    startup/            # Javascript files on Meteor.startup()
    stylesheets         # LESS files
    modules/            # Meant for components, such as form and more(*)
    views/              # Contains all views(*)
        common/         # General purpose html templates
model/                  # Model files, for each Meteor.Collection(*)
private/                # Private files
public/                 # Public files
routes/                 # All routes(*)
server/                 # Server folder
    fixtures/           # Meteor.Collection fixtures defined
    lib/                # Server side library folder
    publications/       # Collection publications(*)
    startup/            # On server startup
meteor-boilerplate      # Command line tool

3

Uygulamanızı yapılandırmaya yönelik birçok farklı yaklaşım vardır. Örneğin, bir yönlendiriciniz ve farklı sayfa şablonlarınız varsa ve her sayfa şablonunuzun içinde birçok sayfa bölümünüz varsa vb.

Örneğin:

client
  views
    common
      header
        header.html
        header.js
        header.css
      footer
        footer.html
        footer.js
        footer.css
    pages
      mainPage
        mainPage.html
        mainPage.js
        mainPage.css
        articles
          articles.html
          articles.js
          articles.css
        news
          news.html
          news.js
          news.css
     ...

Elbette, haber şablonunuzu farklı sayfalarda kullanabileceğiniz için haber şablonlarınızı ortak klasöre koyabilirsiniz.

Uygulamanızı rahat bir şekilde yapılandırmanızın en iyisi olduğunu düşünüyorum.

Burada küçük bir uygulama yazdım: http://gold.meteor.com Ve çok küçük, sadece bir html dosyası ve sadece bir template.js dosyası kullanıyorum .. :)

Umarım biraz yardımcı olur


i "makaleler" gibi bir özellik adı ile birden çok dosya adlandırma değeri görmüyorum. Şimdi özellik adını "gönderiler" olarak değiştirmek istiyorsanız dosya adlarını değiştirmeniz gerekir. Bunları "makaleler" adlı tek bir klasör altında düzenleyin ve "events.js", views.html, styles, css, vb. Olarak adlandırın.
Max Hodges

3

Evented Mind üzerinde Meteor Projelerini Ayarlama adında yeni bir sınıf var ve bu da proje yapılandırması ve geliştirme ortamınızı kurma hakkında konuşuyor.

Gönderen Uygulama Yapısı sınıfında videoda: Meteor başvurunuz yapılandırılmış ama burada bazı kurallar nasıl olması gerektiği konusunda çok güçlü bir fikri yok:

1) Yükleme sırası - Meteor önce dosya dizinindeki en derin konuma gider ve dosyaları alfabetik sırada işler

2) istemci ve sunucu Meteor'un tanıdığı özel klasörlerdir

Yapımız şöyle:

both/
    collections/
        todos.js
    controllers/
        todos_controller.js
    views/
        todos.css
        todos.html
        todos.js
    app.js - includes routes
client/
    collections/
    views/
        app.js
server/
    collections/
    views/
        app.js
packages/
public/

Todos_controller, Iron Router ile birlikte gelen RouteController'ı genişletir.

emYukarıda belirtilen aracı da şu anda büyük bir güncelleme elde ettiğini ve çok daha iyi ve kullanılabilir olmalıdır: https://github.com/EventedMind/em


/ server / views / içindeki görünümler nelerdir?
stefcud

i "todos" gibi bir özellik adı ile birden fazla dosya adlandırma değeri görmüyorum. Şimdi özellik adını "görevler" olarak değiştirmek istiyorsanız, 5 dosya adını değiştirmeniz gerekir. Bunları "todos" adlı tek bir klasör altında düzenleyin ve "events.js", views.html, styles, css vb. Olarak adlandırın.
Max Hodges

1

Ayrıca, uygulamalarımı iyi tasarlanmış bir mimari aracılığıyla geliştirmek ve ölçeklemek için en iyi uygulamaları arıyorum. Yukarıda belirtilen uygulamaların tümü küçük ve orta boy uygulamalar için çalışır, ancak daha büyük bir ekipte çalıştığınızda başarısız olur. Denediğim birkaç yol var:

1) Bu stratejiyi izledim: şablonları ölçeklemek ve yeniden kullanmak için https://github.com/aldeed/meteor-autoform . Yazarın bileşen ve saha tasarımı konusunda çok iyi bir fikri vardır. Şu anda uyguluyorum çünkü topluluk neredeyse her vakayı kapsayan 36 paket geliştirdi ve geliştirme aşamasında TypeScript'i güvenli bir şekilde kullanmak için kullanabilirim .

<template name="autoForm">
  {{#unless afDestroyUpdateForm this.id}}
  {{! afDestroyUpdateForm is a workaround for sticky input attributes}}
  {{! See https://github.com/meteor/meteor/issues/2431 }}
  <form {{atts}}>
    {{> Template.contentBlock ..}}
  </form>
  {{/unless}}
</template>

İşte nasıl yapılacağı hakkında iyi bir blog yazısı: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ ve ayrıca burada: http: // meteorpedia .com / okuma / Blaze_Notes

2) Bu çok umut verici görünüyor, ancak son zamanlarda güncellenmedi. Kahve komut dosyasında yazılmış bir pakettir. Meteor için Blaze Bileşenleri ( https://github.com/peerlibrary/meteor-blaze-components ), Meteor uygulamanızın etrafında yeniden kullanılması gereken karmaşık UI öğelerini kolayca geliştirmek için bir sistemdir. Bunları CoffeeScript, vanilya JavaScript ve ES6'da kullanabilirsiniz. En iyi şey, bileşenler OOP. İşte örneklerinden biri:

class ExampleComponent extends BlazeComponent {
  onCreated() {
    this.counter = new ReactiveVar(0);
  }

  events() {
    return [{
      'click .increment': this.onClick
    }];
  }

  onClick(event) {
    this.counter.set(this.counter.get() + 1);
  }

  customHelper() {
    if (this.counter.get() > 10) {
      return "Too many times";
    }
    else if (this.counter.get() === 10) {
      return "Just enough";
    }
    else {
      return "Click more";
    }
  }
}

ExampleComponent.register('ExampleComponent');

{{> ExampleComponent }}

3) Bir şeyin nerede ve ne zaman yanlış gideceğini söyleyen türleri ve transpiler'i seviyorum. Meteor ile çalışmak için TypeScript kullanıyorum ve aşağıdaki havuzu buldum: https://github.com/dataflows/meteor-typescript-utils , yaratıcısı bir MVC yaklaşımı gerçekleştirmeye çalışmış gibi görünüyor.

class MainTemplateContext extends MainTemplateData {
    @MeteorTemplate.event("click #heybutton")
    buttonClick(event: Meteor.Event, template: Blaze.Template): void {
        // ...
    }

    @MeteorTemplate.helper
    clicksCount(): number {
        // ...
    }
}

class MainTemplate extends MeteorTemplate.Base<MainTemplateData> {
    constructor() {
        super("MainTemplate", new MainTemplateContext());
    }

    rendered(): void {
        // ...
    }
}

MeteorTemplate.register(new MainTemplate());

<template name="MainTemplate">
    <p>
        <input type="text" placeholder="Say your name..." id="name">
        <input type="button" value="Hey!" id="heybutton">
    </p>
    <p>
        Clicks count: {{ clicksCount }}
    </p>

    <p>
        <ul>
            {{#each clicks }}
                <li> {{ name }} at <a href="{{pathFor 'SingleClick' clickId=_id}}">{{ time }}</a></li>
            {{/each}}
        </ul>
    </p>
</template>

Ne yazık ki, bu proje sürdürülmüyor veya aktif olarak geliştirilmiyor.

4) ve bence bu zaten belirtilmiş, paketleri kullanarak ölçeklendirebilirsiniz. Bunun için iyi bir soyut düşünme şekli gerekir. Teleskop için çalışıyor gibi görünüyor: https://github.com/TelescopeJS/Telescope

5) meteor-şablon-uzantısı - şablon yardımcıları, olay işleyicileri ve kancalar şablonlar arasında kopyalamanın çeşitli yollarını sağlar, kodun yeniden kullanılmasına izin verir; bir dezavantajı, tüm kopyalamanın bir geliştirici tarafından, tekrar tekrar, kod tabanı büyüdükçe sorunlu hale gelmesi gerektiğidir; ayrıca, açıkça tanımlanmış bir API topluluğu olmadan bileşenler oluşturamaz ve paylaşamaz

6) Akış Bileşenleri - Akış Bileşenleri API tasarımında React'e daha yakınken, Blaze Bileşenleri veri bağlamları ve şablon yardımcıları gibi tanıdık kavramları korur; Öte yandan Akış Bileşenleri yine de şablon tabanlı olay işleyicilerini kullanırken Blaze Bileşenleri bunları sınıf yöntemleri haline getirir, böylece miras yoluyla bunları genişletmeyi veya geçersiz kılmayı kolaylaştırır; genel olarak Blaze Components daha OOP odaklı görünmektedir; Akış Bileşenleri henüz resmi olarak piyasaya sürülmedi ( # 5 ve # 6 için metin kredileri https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )

2 ve 3 numaralı numaraların da biraz kullanılması gerekiyor, ancak zamanla geliştirme hızı kazanacaksınız. Dört numara, kodunuzu daha kararlı hale getirmek için bileşenler oluşturmanıza ve test etmenize olanak tanır. Üçüncüsü, kötü belgelere sahip bir ekipte geliştiğinizde büyük bir artı olan, tam metin güvenliği olan TypeScript'in avantajı ile birlikte gelir. Bununla birlikte, şu anda TypeScript'e ikinci numarayı taşıyorum çünkü onunla çalışmak çok rahatım ve Gulp kullanmadığımda Meteor ile çalışmasını sağlamak için derleyici paketini tweeklemek zorunda değilim.

Meteor ile çalışmanın doğru yolunu bulmak hala zor. Bunu kendiniz anlamanız gerekir, aksi takdirde güzelce düzenlenmiş bir klasör yapısı elde edersiniz, ancak her şeyin nerede olduğu hakkında hiçbir fikriniz yoktur. Mutlu kodlama.

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.