Saya cukup baru untuk seluruh hiruk-pikuk kerangka klien-sisi MV * ini. Tidak harus AngularJS, tapi saya mengambilnya karena rasanya lebih alami bagi saya daripada Knockout, Ember atau Backbone. Lagi pula seperti apa alur kerjanya? Apakah orang-orang mulai dengan mengembangkan aplikasi sisi klien di AngularJS dan kemudian menghubungkan bagian belakang ke sana?
Atau sebaliknya dengan terlebih dahulu membangun back-end di Django, Flask, Rails dan kemudian melampirkan aplikasi AngularJS ke sana? Apakah ada cara yang "benar" untuk melakukannya, atau pada akhirnya hanya preferensi pribadi?
Saya juga tidak yakin apakah akan menyusun proyek saya sesuai dengan Flask atau AngularJS? praktik masyarakat.
Misalnya, aplikasi minitwit Flask disusun seperti:
minitwit
|-- minitwit.py
|-- static
|-- css, js, images, etc...
`-- templates
|-- html files and base layout
Aplikasi tutorial AngularJS disusun seperti ini:
angular-phonecat
|-- app
`-- css
`-- img
`-- js
`-- lib
`-- partials
`-- index.html
|-- scripts
`-- node.js server and test server files
Saya dapat membayangkan aplikasi Flask dengan sendirinya, dan cukup mudah untuk melihat aplikasi AngularJS seperti ToDo List dengan sendirinya tetapi ketika harus menggunakan kedua teknologi ini, saya tidak mengerti bagaimana mereka bekerja bersama. Sepertinya saya tidak membutuhkan kerangka kerja sisi server ketika Anda sudah memiliki AngularJS, server web Python sederhana sudah cukup. Dalam aplikasi to-do AngularJS misalnya mereka menggunakan MongoLab untuk berbicara dengan database menggunakan Restful API. Tidak perlu memiliki kerangka kerja web di back-end.
Mungkin saya hanya sangat bingung, dan AngularJS tidak lebih dari perpustakaan jQuery mewah jadi saya harus menggunakan seperti saya akan menggunakan jQuery di proyek Flask saya (dengan asumsi saya mengubah sintaks template AngularJS menjadi sesuatu yang tidak bertentangan dengan Jinja2). Saya harap pertanyaan saya masuk akal. Saya terutama bekerja di back-end dan kerangka kerja sisi klien ini adalah wilayah yang tidak diketahui bagi saya.
sumber
app.root_path
. Kalau tidak, ini cukup tepat.Anda bisa mulai di kedua ujung.
Anda benar bahwa Anda mungkin tidak membutuhkan kerangka kerja sisi server penuh dengan AngularJS. Biasanya lebih baik untuk menyajikan file HTML / CSS / JavaScript statis, dan menyediakan API RESTful untuk dikonsumsi oleh klien. Satu hal yang mungkin harus Anda hindari adalah mencampurkan templat sisi server dengan templat sisi klien AngularJS.
Jika Anda ingin menggunakan Flask untuk melayani file Anda (mungkin berlebihan, tetapi Anda dapat menggunakannya), Anda akan menyalin konten "app" dari "angular-phonecat" ke dalam folder "statis" "minitwit".
AngularJS lebih ditargetkan pada aplikasi seperti AJAX, sedangkan labu memberi Anda kemampuan untuk melakukan kedua aplikasi web gaya lama serta membuat RESTful APIs. Ada kelebihan dan kekurangan untuk setiap pendekatan, sehingga sangat tergantung apa yang ingin Anda lakukan. Jika Anda memberi saya beberapa wawasan, saya mungkin dapat membuat rekomendasi lebih lanjut.
sumber
Video Jetbrains PyCharm resmi ini oleh John Lindquist (angular.js dan guru jetbrains) adalah titik awal yang bagus karena menunjukkan interaksi layanan web, basis data, dan angular.js dalam labu.
Dia membangun klon pinterest dengan labu, sqlalchemy, flask-gelisah dan angular.js dalam waktu kurang dari 25 menit.
Nikmati: http://www.youtube.com/watch?v=2geC50roans
sumber
sunting : Panduan gaya Angular2 baru menunjukkan struktur yang sama, jika tidak sama secara lebih rinci.
Jawabannya di bawah target proyek skala besar. Saya telah menghabiskan banyak waktu untuk berpikir dan bereksperimen dengan beberapa pendekatan sehingga saya dapat menggabungkan beberapa kerangka sisi server (Labu dengan App Engine dalam kasus saya) untuk fungsionalitas back-end bersama dengan kerangka sisi klien seperti Angular. Kedua jawaban itu sangat baik, tetapi saya ingin menyarankan pendekatan yang sedikit berbeda yang (dalam pikiran saya setidaknya) berskala dengan cara yang lebih manusiawi.
Ketika Anda menerapkan contoh TODO, semuanya berjalan lurus ke depan. Ketika Anda mulai menambahkan fungsionalitas dan detail kecil yang bagus untuk peningkatan pengalaman pengguna, tidak sulit untuk tersesat dalam kekacauan gaya, javascript dll.
Aplikasi saya mulai tumbuh cukup besar, jadi saya harus mengambil langkah mundur dan memikirkan kembali. Awalnya pendekatan seperti yang disarankan di atas akan berhasil, dengan menggabungkan semua gaya dan semua JavaScript, tetapi tidak modular dan tidak mudah dipelihara.
Bagaimana jika kami mengatur kode klien per fitur dan bukan per jenis file:
dan seterusnya.
Jika kita membangunnya seperti ini, kita dapat membungkus setiap direktori kita dalam modul sudut. Dan kami telah membagi file-file kami dengan cara yang baik sehingga kami tidak harus melalui kode yang tidak relevan ketika kami bekerja dengan fitur tertentu.
Seorang pelari tugas seperti Grunt dikonfigurasi dengan benar, akan dapat menemukan dan menggabungkan dan mengkompilasi file Anda tanpa banyak kesulitan.
sumber
Pilihan lain adalah memisahkan keduanya.
File yang terkait dengan labu berada di bawah folder server dan file yang terkait dengan angularjs berada di bawah folder klien. Dengan cara ini, akan lebih mudah untuk mengubah backend atau front-end. Misalnya, Anda mungkin ingin beralih dari Flask ke Django atau AngularJS ke ReactJS di masa mendatang.
sumber
Saya pikir penting untuk menentukan pada akhir apa Anda ingin melakukan sebagian besar pemrosesan data Anda - ujung depan atau ujung belakang.
Jika itu front end, maka ikuti alur kerja bersudut, yang berarti aplikasi labu Anda akan berfungsi sebagai lebih banyak api di mana ekstensi seperti labu-tenang akan berakhir.
Tetapi jika seperti saya, Anda melakukan sebagian besar pekerjaan di backend, kemudian pergi dengan struktur labu dan hanya pasang sudut (atau dalam kasus saya vue.js) untuk membangun ujung depan (ketika perlu)
sumber