Adakah yang menggunakan Sproutcore?

19

Adakah yang menggunakan Sproutcore untuk aplikasi web? Jika demikian, dapatkah Anda memberi saya uraian pengalaman Anda? Saat ini saya sedang mempertimbangkannya, tetapi saya memiliki beberapa kekhawatiran. Pertama, dokumentasinya buruk / tidak lengkap, dan saya khawatir saya akan menghabiskan banyak waktu untuk mencari tahu atau menggali kode sumber. Juga, saya agak ragu untuk menggunakan proyek yang relatif baru dan dapat mengalami perubahan signifikan.

Setiap pemikiran dari orang-orang yang telah berkembang dalam Sproutcore sangat dihargai!

EDIT / PS: Ya, saya telah melihat posting ini: /programming/370598/sproutcore-and-cappuccino . Namun saya tertarik pada deskripsi Sproutcore yang agak panjang dari seseorang yang menggunakannya untuk proyek yang signifikan.

Komunitas
sumber
2
Saya tidak dapat menjawab pertanyaan, tetapi saya dapat memberi tahu Anda bahwa Apple sendiri menggunakan SproutCore untuk layanan .Mac-nya sendiri. Jadi setidaknya cukup dewasa untuk itu.
Chuck
Ya - itulah yang membuat saya tertarik. Tetapi dengan sedikit yang saya coba, dokumentasinya cukup buruk (terutama, misalnya, untuk SC.DataSource dan SC.Store) sehingga saya tidak yakin apakah itu sepadan dengan masalahnya.

Jawaban:

20

Kami menggunakan sproutcore lebih dari setahun.

Pertama saya mengembangkan menggunakan versi 0.9 yang sangat bagus tetapi memiliki masalah kinerja, terkait dengan KVO, dataset besar dll. Tetapi karena SproutCore adalah Javascript (dekat dengan javascript) kami dapat menyelesaikannya untuk aplikasi kami. Bagi saya sebenarnya, SproutCore mengajari saya cara pengkodean javascript yang tepat. Saya belajar Javascript dan SproutCore saat yang sama.

Di suatu tempat sekitar bulan Juli mereka merilis SproutCore 1.0 pre-alpha. API diubah secara signifikan sehingga mengonversi aplikasi kami ke versi yang lebih baru adalah proyek itu sendiri. Dan dokumentasi nol pada waktu itu.

Sekarang semuanya berubah, Ada dokumentasi dan wiki yang sangat bagus. Tutorial dan dokumentasi baru ditambahkan setiap hari.

Jika Anda berpikir untuk menggunakan / mengevaluasi SproutCore, ini adalah waktu yang tepat. Dan setiap hari SproutCore membuat saya takjub dengan kemampuan dan kekuatan yang dikandungnya. Masih ada banyak sisi kasar, yang berkurang setiap hari.

Beberapa sumber daya:

SproutCore Wiki

API Documents

Tambahan terbaru untuk API penyimpanan data (yang merupakan bagian yang sangat penting)

nexneo
sumber
17

Saya bekerja dengan perusahaan menggunakan SC untuk mendesain ulang aplikasi andalan mereka. Inilah pikiran saya:

  1. Saya sangat suka tata letak MVC dari aplikasi SC. Ini adalah sesuatu yang saya pikir kerangka kerja JS lainnya kurang. Kerangka kerja yang mengikat membuat memperbarui tampilan sekejap.

  2. Dokumentasi terbaik ada dalam kode itu sendiri.

  3. Perlu dokumentasi yang lebih baik / lebih banyak contoh. Contoh-contoh mereka sudah cukup untuk membantu Anda memulai, tetapi hal-hal canggih akan membuat sebagian besar pengguna bingung.

  4. Lapisan akses data terlalu rumit. Ini misteri besar. Mereka harus benar-benar menopang dokumentasi atau memberikan lebih banyak contoh untuk membuka jalan sehingga orang dapat menggunakannya dengan benar. Di sisi lain, itu tampaknya menjadi kerangka kerja ORM yang sangat kuat.

  5. Saya suka fakta bahwa mereka menekankan pengujian.

  6. Kurangnya kotak adalah hambatan nyata. Banyak jika tidak sebagian besar aplikasi memerlukan kisi. Yang mengatakan, SC adalah kerangka kerja MVC berfitur lengkap, bukan kerangka kerja widget (komponen) EXTJS.

  7. Banyak kode yang tampak terlalu rumit. Setiap kali suatu metode menjadi lebih dari 10-30 baris, itu harus benar-benar dipecah untuk meningkatkan keterbacaan.

  8. Mungkin pertimbangan terbesarnya adalah ini: jika Anda mengerjakan proyek dan mempertimbangkan SC, Anda akan benar-benar kesulitan menemukan pengembang yang kompeten untuk mengerjakannya. Jadi itu mungkin baik untuk proyek pribadi kecil, tetapi Anda mengambil risiko dengan proyek besar yang perlu pemeliharaan.

  9. Dukungan IRC sangat fenomenal. Orang-orang di saluran itu sangat membantu.

hvgotcodes
sumber
1
Lapisan akses data terlalu rumit. Ini misteri besar. - memang. Juga, debugging adalah tugas yang sangat berat.
c69
@ c69 - Ketika saya menulis ini, saya percaya itu. Tapi sejak itu saya sudah menggali dan sampai pada kesimpulan bahwa datastore cukup kuat dan tidak terlalu sulit untuk dipahami. Anda hanya perlu mulai melakukan hal-hal dengan itu
hvgotcodes
mungkin dalam rilis saat ini, itu benar - tetapi saya bekerja dengan warisan SC, dan itu hanya kegilaan .. (dan itu tidak dapat diperbarui, seperti yang terlihat)
c69
@ c69, jika Anda mengalami masalah khusus, ajukan pertanyaan dan mungkin saya bisa membantu
hvgotcodes
15

Cukup telusuri melalui posting grup sproutcore di grup google untuk merasakan apa yang terjadi.

Beberapa minggu yang lalu seseorang mengeluh tentang dokumen, menjadi seorang pemula, dan pada dasarnya apa yang dia dapatkan adalah: "jika Anda tidak menyukainya, mengapa Anda tidak membantu membuat dokumen" ... well duh !!

Anda akan melihat masalah seperti ini sejak awal. Juga beberapa minggu yang lalu seseorang bertanya kepada grup bagaimana membuat hyperlink menggunakan Sproutcore. Maksudku, LOL, butuh berjam-jam untuk membuat hyperlink sederhana.

Sproutcore tidak mengiklankan siapa yang menggunakan kerangka kerja mereka di alam: biasanya bukan pertanda baik.

Diklaim (bukan dengan sproutcore sendiri afaik) bahwa Apple menggunakannya, tetapi jika Anda melihat lebih dekat Anda akan melihat bahwa Apple memiliki basis kode sendiri.

Saya pribadi menemukan sproutcore yang penuh dengan bug, kurangnya tampilan tabel sederhana yang menjengkelkan, contoh tidak lengkap atau tidak berfungsi, dan tidak adanya dokumentasi dan bahkan tidak adanya TEST lengkap tidak hanya dasar yang baik untuk membangun.


sumber
5
Saya mengklaim bahwa Apple menggunakannya, dan itu dari Apple sendiri. MobileMe ditulis dengan SproutCore. appleinsider.com/articles/08/06/16/...
Chuck
Apple memang memiliki basis kode mereka sendiri, tetapi mereka secara teratur bergabung kembali dengan repo publik.
Juga, sebagai tanggapan terhadap masalah hyperlink, SC dibuat untuk membuat aplikasi web yang kaya. Ini berarti bahwa Anda biasanya tidak menyentuh DOM sendiri. Akibatnya, Anda tidak dimaksudkan untuk membuat hyperlink Anda sendiri.
7

Saya menggunakan SproutCore dan itu sangat bagus. Kami beralih dari jQuery ke SproutCore , karena jQuery menawarkan sejumlah kecil utilitas dan SproutCore menawarkan arsitektur tingkat tinggi yang bagus.

Kami mengevaluasi pustaka Javascript ini dengan urutan sebagai berikut:

  1. Prototipe , yang terasa oke tapi jQuery memiliki lebih banyak dukungan dan buku dll.
  2. jQuery , yang terasa hebat tetapi tidak memiliki dukungan untuk arsitektur tingkat tinggi yang bagus dan kami mulai membangunnya, tetapi butuh terlalu banyak waktu.
  3. Cappuccino , yang memiliki arsitektur tingkat tinggi yang bagus tetapi tidak memiliki peta jalan dan dokumentasi
  4. SproutCore SOLUSI, karena ini menawarkan arsitektur tingkat tinggi yang bagus dan memiliki sistem built-in yang bagus

Daftar teratas kami:

  1. SproutCore adalah PEMENANG
  2. jQuery adalah toolkit yang baik
  3. Cappuccino terlihat menjanjikan tetapi belum ada di sana
  4. Prototipe ok, tapi menurut saya tidak sebagus jQuery

Tentu saja ada lebih banyak toolkit, tetapi ini adalah yang kami evaluasi. Sebagai kesimpulan saya bisa sangat merekomendasikan SproutCore kepada siapa saja yang membangun aplikasi kelas desktop menggunakan Javascript. Jika Anda hanya perlu Javascript sederhana, seperti pemilih tanggal dll, saya sarankan jQuery.

Hanya satu tip lagi. Pada saat penulisan jawaban ini, SproutCore 1.0 adalah versi stabil terbaru. Sayangnya ini cukup lama dan kami menggunakan versi terbaru yang dapat ditemukan dari halaman Github SproutCore . Saya sangat merekomendasikan itu.


sumber
4

Jika Anda mencoba masuk ke SproutCore, saya sarankan Anda menggali ke dalam contoh aplikasi SproutTweets. Banyak konstruksi yang lebih kuat (status, kerangka kerja yang dimuat secara dinamis, contoh sumber data yang berguna) ada di sana.

Anda dapat menemukan aplikasi SproutTweets di github http://github.com/sproutit/sproutcore-samples/tree/master/apps/sproutweets/

  • Perlu diketahui juga bahwa menjalankan sampel di Safari dengan inspektur web memberikan serangkaian pesan kesalahan yang lebih berguna.
  • Sc-server berisi proksi yang dapat digunakan untuk mengakses sumber data REST Anda sendiri yang berjalan di server web lokal. Rujuk ke buildfile di aplikasi contoh sprouttweets di atas untuk melihat cara kerjanya.
  • Proxy yang disertakan dalam sc-serve sangat terbatas. Jika Anda memiliki masalah dengan permintaan lapisan data Anda, berikan sc-build lalu gunakan server web lokal Anda sebagai gantinya, alih-alih proxy. Kami menemukan masalah dengan loop otentikasi 401 kami dan streaming tanggapan dataset besar (pengkodean chuncked).

Bahkan jika Anda tidak berniat menggunakan SproutCore dalam aplikasi produksi, Anda berhutang kepada diri sendiri untuk menjelajahinya lebih jauh untuk melihat pendekatan yang kuat untuk pemrograman aplikasi javascript - terutama KVO dan hal-hal mixin (aspek). Banyak arsitektur yang bagus untuk direnungkan dan dipelajari.

Poin terakhir - saluran IRC bisa jauh lebih bermanfaat daripada sumber informasi lain, yang kedua setelah menyelam dalam diskusi grup google.


sumber
2

Saya telah menggunakan SproutCore di masa lalu. Saya ditugaskan proyek untuk mengembangkan skrip pengujian web otomatis menggunakan alat yang disebut Selenium RC. Selenium RC dibangun untuk menargetkan id dan kelas HTML biasa, tetapi SproutCore mengkompilasi ID elemen sehingga ID elemen pseudo acak, jadi saya harus mencari tahu API untuk SproutCore sehingga saya bisa mencari tahu ID elemen dari pohon tampilan.

SproutCore memiliki analogi yang dekat dengan kompiler. Jika Anda memiliki terlalu banyak elemen yang Anda impor buat untuk halaman web Anda, ada kemungkinan Anda akan memiliki tabrakan namespace pada ID jika Anda membangun aplikasi dengan jQuery. Saat Anda membangun halaman web Anda dengan jQuery, semua ID elemen HTML adalah global. Tidak ada lingkup lokal dalam bahasa yang dikompilasi atau ditafsirkan.

SproutCore akhirnya mengelola konten HTML untuk Anda. Tampilan dibangun menggunakan javascript dan kemudian dikompilasi. Jika Anda mengikuti tutorial SproutCore (dan saya setuju SproutCore kurang dalam dokumentasi sehingga Anda harus mencoba menghindarinya untuk aplikasi bisnis), Anda akan melihat bahwa proyek Anda yang sudah selesai memiliki elemen ID dari "sc - ###". Tabrakan Namespace diselesaikan di situs web yang memberi Anda potensi untuk bekerja lebih cepat.

Namun, ada kekhawatiran utama. Dokumentasi mereka tidak cukup baik menjelaskan mengapa orang harus menggunakannya. Proyek ini adalah opensource, tetapi menggali jalan Anda untuk memahami javascript tingkat bawah untuk bagaimana pandangan dibangun menjadi menyakitkan. Javascript adalah bahasa fungsional, tetapi saya hanya menemukan sesuatu yang salah dengan bahasa fungsional dinamis. Terlalu banyak fleksibilitas. Saya memasukkan Scala.

Masalah terakhir. SproutCore bisa lambat. Tapi itu harga yang harus dibayar

DetriusXii
sumber