Haml: Permintaan Fitur: Impor Folder

Dibuat pada 5 Mar 2010  ·  25Komentar  ·  Sumber: haml/haml

Akan sangat berguna untuk dapat mengimpor semua file di dalam folder dengan hanya menyediakan:
@impor folder_name

Saat ini, sistem saya memiliki banyak churn karena fakta bahwa saya perlu memiliki file sass tambahan yang mengimpor semua file dalam folder. Saya yakin saya tidak bisa menjadi satu-satunya ...

Terima kasih!

Komentar yang paling membantu

gah, ini menyebalkan... saya punya folder bernama page_specific/ di aset aplikasi Rails saya...
ini semua harus dikompilasi ke dalam gumpalan aset besar, dan masing-masing dibungkus sepenuhnya
body#page1 {}, body#page2 {}, dll...

tidak ada kemungkinan mereka menjadi tergantung pesanan, dan terus terang keseluruhan ini "Anda akan salah menggunakannya! tidak!!!!!!" omong kosong menghina.

jika pengguna fitur ini menemukan bahwa urutan itu penting, mereka dapat mengimpor file dalam urutan eksplisit, atau mengubah gaya agar tidak bergantung pada pesanan... memaksa semua orang untuk secara manual mengatasi fitur yang hilang ini adalah sampah paternalistik >: (

pasti kita bisa memikirkan cara untuk meminimalkan masalah kecil pemesanan ini. pemesanan deterministik adalah awal. menyebutnya @import-dir, dan dokumentasi masalah pemesanan potensial juga akan membantu. rails sudah menyediakan require_tree, dan hal-hal di sana tampaknya berfungsi dengan baik. satu-satunya pengecualian adalah bahwa file dikompilasi secara individual yang menjatuhkan mixin dan variabel saya ke lantai. saya perhatikan bahwa mixin adalah satu-satunya bagian yang ditempatkan sebagai independen-pesanan secara eksplisit, jadi mengapa ini tidak berfungsi untuk sass ketika berfungsi untuk orang lain?

Semua 25 komentar

Saya skeptis dengan utilitas ini. Saya tidak berpikir harus membuat daftar semua file yang relevan secara manual benar-benar memberatkan. Juga, sepertinya hal itu dapat menyebabkan bahaya tidak mendapatkan kesalahan kompilasi yang sebenarnya ketika file yang Anda harapkan tidak ada. Sebaliknya, gaya menghilang secara sewenang-wenang.

Saya mengerti argumen Anda, namun, saya tidak berpikir Anda melihat jenis situasi lain yang diperlukan. Saat ini saya memiliki folder yang akan memiliki 60+ file Sass. Tanpa kemampuan untuk @import folder, saya perlu memelihara file yang mengimpor setiap file satu per satu.

Ada banyak masalah dengan memasukkan setiap file satu per satu. Pertama, jika Anda lupa menyertakan file, Anda tidak akan mendapatkan peringatan. Selanjutnya, jika Anda memiliki tim pengembang yang mengerjakan Sass, mereka masing-masing harus ingat untuk mengimpor file secara manual setelah membuatnya di folder. Bergantung pada orang untuk melakukan hal yang benar pada akhirnya akan hancur.

Juga, kami memiliki prioritas bahwa mengimpor folder adalah "hal yang baik". Pernyataan import Java memungkinkan Anda untuk mengimpor seluruh paket atau kelas tertentu dari paket tersebut.

Urutan impor penting dalam kasus umum karena penyeleksi dengan bobot yang sama menyelesaikan sesuai dengan pesanan dokumen. Globbing berarti bahwa menambahkan file dapat mengubah urutan resolusi global penyeleksi secara tidak terduga.

Masalah pemesanan seperti itu tidak ada dalam kode dan di mana mereka berada (seperti ruby) tidak ada fitur seperti itu.

Saya akan tertarik untuk melihat apakah ada cara untuk melakukan ini di Sass tanpa mengubah mekanisme impor inti sass. Ini akan memungkinkan kerangka kerja dan individu yang menggunakan sass untuk mengembangkan sistem globbing mereka sendiri sesuai keinginan mereka. Contohnya:

<strong i="8">@import</strong> file-list("foo/*.sass");

Kami dulu memiliki logika penguraian khusus untuk @import yang akan menghalangi ini, tetapi sekarang tidak lagi.

Masalah dengan mengizinkan impor yang benar-benar dinamis (seperti melalui fungsi) adalah bahwa struktur ketergantungan dokumen menjadi tidak mungkin untuk diketahui secara dinamis. Ini berarti bahwa caching dan kompilasi selektif menjadi kurang berguna.

Untuk masalah pemesanan, kami selalu dapat mengurutkan file menurut abjad atau sesuatu untuk menghasilkan pemesanan deterministik (walaupun sewenang-wenang). Ini masih menghadirkan masalah bahwa pemesanan dapat berubah dan mengganggu fungsionalitas jika nama file berubah.

Agaknya, pendekatan seperti itu melalui globbing akan menyiratkan penggunaan pemilih bersarang untuk mencegah masalah seperti itu.

Menurut pendapat saya, mengimpor seluruh pohon direktori file hanya memiliki utilitas marjinal atas pendekatan impor eksplisit dan mendorong pengguna untuk mempertimbangkan masalah prioritas. Jika kita menambahkan fitur seperti itu, saya ingin itu menjadi tujuan yang lebih umum daripada hanya di tingkat direktori.

Terakhir, saya pikir Anda benar bahwa memperkenalkan glob yang berada di luar grafik ketergantungan dan hanya muncul sebagai impor tunggal ke mesin sass berarti lebih sulit untuk membatalkan file ketika dependensi baru muncul yang cocok dengan glob.

Saya setuju bahwa mengimpor folder akan menyebabkan urutan file yang diimpor menjadi ambigu. Namun, itu terserah pengguna untuk memutuskan apakah itu hal yang tepat untuk mereka. Ini akan cocok untuk beberapa situasi tetapi tidak untuk yang lain. Sangat mungkin untuk membayangkan sebuah sistem di mana isi folder tidak menargetkan elemen yang sama (milik saya tidak).

Sama seperti mengimpor file tertentu berfungsi. itu cocok untuk beberapa situasi tetapi tidak untuk yang lain.

Pilihan harus terserah pengembang.

Terlalu mudah bagi pengguna untuk memiliki stylesheet yang bergantung pada pemesanan dan tidak mengetahuinya. Apa pun dapat memicu pemesanan ulang dan membuat bug tata letak yang akan sangat sulit dilacak. Dan tidak cukup jelas bahwa mengimpor direktori akan membuat seseorang terbuka untuk masalah seperti itu. Memesan melalui nama file mungkin akan menjadi solusi yang cukup baik untuk ini, jadi itu bukan hambatan serius.

Ekstensi yang saya pertimbangkan akan mengizinkan gumpalan file standar -- mungkin yang didukung oleh Dir.glob . Ini akan dapat diselesaikan pada waktu kompilasi, dan akan memberikan tingkat kekuatan yang wajar.

Saya masih jauh dari yakin tentang utilitasnya.

Penting untuk mempertimbangkan bahwa memesan melalui Dir.glob bergantung pada sistem file dan mungkin berubah di seluruh platform -- Saya sebenarnya telah digigit oleh perbedaan antara Mac dan Linux ini. Jadi jika kami akhirnya menerapkan fitur seperti itu, penting bagi kami untuk mengurutkan daftar menurut pendekatan yang terdokumentasi dengan baik dan mudah dipahami (Misalnya pengurutan dengan huruf kecil)

Saya juga masih sedikit condong ke fitur ini. Pendekatan impor yang digunakan kompas belum benar-benar menjadi beban pemeliharaan. Namun, itu pasti fitur yang sering diminta. Saya pikir itu telah diangkat di milis dan di twitter sekitar 4 atau 5 kali sekarang.

Kami pasti akan memesan file secara deterministik. Jenis upcased vs downcased adalah pertanyaan yang menarik... kita mungkin harus melakukan downcase dengan upcased sebagai tiebreaker (karena akan memungkinkan untuk ikatan pada sistem file case-sensitive).

Saya setuju. Saya agak menentang untuk dapat memberikan parameter langsung ke Dir.glob. Itu benar-benar tampak seperti fitur yang tidak perlu. Bisakah kalian membuat skenario di mana menguntungkan untuk memiliki tingkat kontrol seperti itu?

Sepertinya dua opsi berikut sudah cukup:
-Cherry memilih file menggunakan @import
-Impor seluruh direktori menggunakan @import folder_name

Juga, saya pikir alfabet akan bekerja dengan baik. Kita hanya perlu memastikannya didokumentasikan.

Mengimpor direktori melalui <strong i="5">@import</strong> dir terlalu ambigu dengan mengimpor file individual. Kita pasti harus menambahkan setidaknya * globs.

Masih belum yakin.

itu berguna jika Anda memiliki "gaya" yang berbeda untuk sebuah halaman. contoh:
generik/ (file xx sass di sini)
style1/ (file sass xx di sini yang menambahkan/menimpa gaya ke yang generik)
style2/ (file sass xx di sini yang menambahkan/menimpa gaya ke yang generik)
style1.sass (cukup: @import generik/_, style1/_)
style2.sass (cukup: @import generik/_, style2/_)

Mengapa Anda tidak memiliki _generic.sass yang mengimpor semua yang ada di direktori generik?

Saya tidak berpikir ini tentang apa yang bisa atau tidak bisa dilakukan sebanyak yang seharusnya mereka lakukan. Pada akhirnya pemesanan stylesheet itu penting dan jadi saya ingin itu dipikirkan oleh pengguna. Memang benar bahwa perpustakaan yang hanya mendefinisikan mixin dan variabel tidak bergantung pada urutan seperti halnya lembar gaya yang dicakup -- tetapi saya khawatir tentang menyediakan kemampuan umum yang akan disalahgunakan.

Tentukan "lembar gaya tercakup"?

Stylesheet yang menyarangkan sebagian besar atau semua pemilihnya. misalnya body.foo

Itu tidak dijamin bebas pesanan. Stylesheet lain di tempat lain dapat mendefinisikan body.foo ... , atau sesuatu yang lain dengan spesifisitas yang lebih tinggi.

Maka Anda benar-benar tidak memiliki kerangka kerja karena file Anda tidak dipisahkan dengan benar.

Ada banyak cara bagi orang untuk mengacaukan CSS mereka. Kami dapat memberi mereka solusi ini dan menjelaskan kapan harus digunakan untuk mengimpor file individual.

Dengan tidak mengimplementasikan fitur ini, Anda memberikan dua pilihan ini kepada pengembang yang ingin menerapkan stylesheet tercakup ini:
1) Secara manual mengimpor setiap file secara independen (yang dapat menyebabkan kesalahannya sendiri karena tidak memberi tahu Anda ketika Anda melewatkan file)
2) Menerapkan sistem build untuk menambahkan file-file ini secara dinamis (yang sia-sia karena akan ada banyak orang yang mengimplementasikan hal yang sama)

Tentu saja tidak semua ketergantungan urutan dari stylesheet yang dicakup adalah hasil dari pemisahan masalah yang buruk. Mempertimbangkan:

body.foo .baz {
  color: blue; }

body.bar .baz {
  color: red; }

Stylesheet ini dipisahkan dengan baik, tetapi masih bergantung pada pesanan.

Bagaimanapun, gagasan bahwa kita dapat mengharapkan semua orang yang menggunakan fitur ini untuk memahami risikonya adalah salah. Satu-satunya cara untuk memastikan bahwa setiap orang memahami urutan stylesheet mereka yang akan diimpor adalah dengan menetapkannya secara eksplisit.

Pada umumnya stylesheet cakupan akan menjadi agnostik pesanan, tetapi bisa jadi urutan itu penting bahkan ketika masalah dipisahkan dengan benar.

Diam-diam mengabaikan impor yang tidak ditemukan tidak lagi menjadi masalah di sass3. Hanya impor css yang akan diabaikan secara diam-diam.

Saya punya satu file sass yang mengimpor sekitar 60 lainnya. Saya mengubahnya ketika file ditambahkan atau dihapus dan saya selalu memikirkan pemesanan ketika saya melakukannya. Itu tidak pernah tampak seperti beban bagi saya, melainkan, langkah yang perlu.

Jika impor saya tidak ditemukan (saya selalu menentukan .sass untuk impor) maka pengujian saya gagal.

Ada tambahan: sesederhana mungkin dan tidak lebih sederhana.

Naluri saya memberi tahu saya bahwa ini membuat segalanya terlalu sederhana dan semua penghematan waktu hilang oleh satu sesi debugging. Saya memilih bahwa kita mengesampingkan ini untuk saat ini. Jika seseorang ingin membuat plugin sass yang menyediakan kemampuan ini, saya akan sangat tertarik untuk melihat cara kerjanya bagi pengguna tersebut.

Saya pikir maksud Richard adalah bahwa tidak ada kesalahan ketika sebagian dibuat tetapi tidak ada impor yang ditambahkan untuk itu. Saya kira ini dapat dikurangi dengan mencari bagian yang tidak digunakan dan mencetak peringatan untuk mereka.

Aku akan pergi ke depan dan menutup ini.

gah, ini menyebalkan... saya punya folder bernama page_specific/ di aset aplikasi Rails saya...
ini semua harus dikompilasi ke dalam gumpalan aset besar, dan masing-masing dibungkus sepenuhnya
body#page1 {}, body#page2 {}, dll...

tidak ada kemungkinan mereka menjadi tergantung pesanan, dan terus terang keseluruhan ini "Anda akan salah menggunakannya! tidak!!!!!!" omong kosong menghina.

jika pengguna fitur ini menemukan bahwa urutan itu penting, mereka dapat mengimpor file dalam urutan eksplisit, atau mengubah gaya agar tidak bergantung pada pesanan... memaksa semua orang untuk secara manual mengatasi fitur yang hilang ini adalah sampah paternalistik >: (

pasti kita bisa memikirkan cara untuk meminimalkan masalah kecil pemesanan ini. pemesanan deterministik adalah awal. menyebutnya @import-dir, dan dokumentasi masalah pemesanan potensial juga akan membantu. rails sudah menyediakan require_tree, dan hal-hal di sana tampaknya berfungsi dengan baik. satu-satunya pengecualian adalah bahwa file dikompilasi secara individual yang menjatuhkan mixin dan variabel saya ke lantai. saya perhatikan bahwa mixin adalah satu-satunya bagian yang ditempatkan sebagai independen-pesanan secara eksplisit, jadi mengapa ini tidak berfungsi untuk sass ketika berfungsi untuk orang lain?

@chriseppstein luar biasa! (dan maaf untuk mengomel seperti orang maniak semua orang)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat