SORU
17 Temmuz 2012, Salı


Tipik Angular.js iş akışı ve proje yapısı (Python Şişesi ile)

İstemci tarafı çerçeve çılgınlığı* tüm bu MV için oldukça yeni duyuyorum. Angular.js ama ya Knockout, Ember veya Omurga daha bana daha doğal geliyor, çünkü bunu ben seçtim olmak zorunda değil. Zaten iş akışı nasıldır? İnsanlar angular.js -istemci tarafı Uygulama Geliştirme ve sonra arka uç o kadar çengel ile başlar? Ya ilk arka uç Django, Flask, Raylar bina ve angular.js bir uygulama ekleme tersi? "Bunu yapmanın bir yolu, ya da sonunda sadece kişisel bir tercih mi? hakkı var

Ayrıca Şişeye göre projemi ya angular.js yapı mı emin değilim? topluluk uygulamaları.

Örneğin, artıkça minitwit uygulaması gibi yapılandırılmıştır:

minitwit
|-- minitwit.py
|-- static
   |-- css, js, images, etc...
`-- templates
   |-- html files and base layout

Angular.js öğretici uygulaması bu gibi yapılandırılmıştır:

angular-phonecat
|-- app
    `-- css
    `-- img
    `-- js
    `-- lib
    `-- partials
    `-- index.html
|-- scripts
 `-- node.js server and test server files

Gözümün önüne getirebiliyorum bir Flask uygulaması tarafından kendisi ve bunu çok kolay görüyor Angular.js app gibi Yapılacaklar Listesi ile kendini ama geldiğinde onu kullanarak hem bu teknolojiler anlamıyorum nasıl çalışıyorlar birlikte. Neredeyse zaten Angular.js web server yeterli olacaktır basit bir Python var, sunucu tarafında web-çerçeve ihtiyacım yok gibi görünüyor. -Örneğin app Açısal olarak MongoLab veritabanı Dinlendirici bir API kullanarak konuşmak için kullanıyorlar. Gerek web çerçevesi arka uç sahip oldu.

Belki kafam çok karıştı Angular.js hiçbir şey daha bir fantezi jQuery Kütüphanesi yani ben kullanmak istiyorum kullanmak jQuery mataram projeleri (sanırım arada değiştirmek Açısal şablon sözdizimi için bir şey değil çatışma ile Jinja2). Benim sorular biraz mantıklı umarım. Ben özellikle arka uç çalışmak ve bu istemci tarafı çerçeve benim için bilinmeyen bir bölge.

CEVAP
28 ŞUBAT 2013, PERŞEMBE


Buradan aşağıdaki gibidir: standart yapısında Flask uygulaması organize ederek başlamak istiyorum

app
|-- app.py
|-- static
    |-- css
    |-- img
    |-- js
|-- templates

Ve btford belirtildiği gibi, Eğer Açısal bir uygulama yapıyorsanız, istemci tarafı Açısal şablonları kullanarak ve uzak sunucu tarafı şablonlardan kalmak odaklanmak istiyorum. Kullanarak render_template ('') Şişeyi senin açısal yorumlamasına neden olur index.html doğru işlemek istemedikleri için jinja şablonlar şablonlar. Bunun yerine, aşağıdakileri yapmak isteyebilirsiniz:

@app.route("/")
def index():
    return send_file('templates/index.html')

Send_file kullanmayı unutmayın() dosyaları make_response kullanmak isteyebilirsiniz böylece önbelleğe anlamına gelir() yerine, en azından gelişim için:

    return make_response(open('templates/index.html').read())

Daha sonra AngularJS inşa uygulamanızın bir parçası, bu gibi bir uygulama yapısının değiştirilmesi:

app
|-- app.py
|-- static
    |-- css
    |-- img
    |-- js
        |-- app.js, controllers.js, etc.
    |-- lib
        |-- angular
            |-- angular.js, etc.
    |-- partials
|-- templates
    |-- index.html

Senin index.html AngularJS, yanı sıra herhangi bir diğer dosyaları içerir emin olun:

<script src="static/lib/angular/angular.js"></script>

Bu noktada, henüz Dinlendirici bir API inşa etmedin, js denetleyicileri önceden tanımlanmış örnek veri (yalnızca geçici bir kur) geri alabilirsin. Hazır olduğunuzda, Dinlendirici bir API uygulamak ve angular-resource.js ile açısal uygulamanızı izle.

EDİT: birleştirdim bir uygulama şablonu, ama biraz daha karmaşık olan ne yaptım yukarıda açıklanan gösterir nasıl bir dünya inşa bir uygulama ile AngularJS Şişesi, tam ile iletişim arasında AngularJS ve basit bir Şişe API. Eğer bunu kontrol etmek istiyorsanız şu şekilde olur: https://github.com/rxl/angular-flask

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • HowcastFoodDrink

    HowcastFoodD

    21 EYLÜL 2010
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006