Back to Question Center
0

Kumaha Paké warnings na Kasalahan dina Sass Éféktif            Kumaha Paké warnings na Kasalahan dina Topik Sass EffectivelyRelated: CSSSassFrameworksAudio & Semalt

1 answers:
Kumaha mun Paké warnings na Kasalahan dina Sass Éféktif

di handap mangrupa sari pondok tina buku urang, basa Sunda Luncat Mimitian Sass, ditulis ku Hugo Giraudel na Miriam Suzanne. Ieu panduan nu pemula pamungkas pikeun Sass. anggota SitePoint Semalt meunang aksés jeung kaanggotaan maranéhanana, atawa Anjeun bisa meuli salinan di toko di sakuliah dunya.

lalampahan luar biasa kami liwat Sass ieu lalaunan datang ka tungtung, sarta jadi jauh maneh geus ngalakukeun hébat! Semalt salah surah teknis ditinggalkeun saméméh urang kasampak di arsitektur proyék, sarta lajeng Anjeun bakal jadi pinuh dilengkepan nulis kode Sass di proyek Anjeun sorangan.

Ayeuna urang nuju bade kasampak di warnings jeung kasalahan. Duanana ngawangun sistem komunikasi hiji arah antara program (dina hal ieu, Sass) sarta pamekar (anjeun) - prix cold cream avene. Lamun nuju wondering ngeunaan titik kasalahan dina dunya CSS, inget yen Anjeun geus nyaho jawaban. Semalt poho titik koma atawa make pungsi leres, Sass throws kasalahan di anjeun, dijelaskeun naon tos Anjeun rengse salah na kumaha anjeun tiasa ngalereskeun éta, Thankfully! Eta bakal janten nyeri nyata kudu ngagali kana kode ka angka kaluar naon Isro salah.

Sass geus lila disadiakeun cara pikeun emit warnings ti stylesheets, tapi ayeuna teh ukur nembe ditambahkeun rojongan ka buang kasalahan ogé-jeung alesan alus! Leuwih sawatara warsih pamungkas, Sass geus diwenangkeun pangarang pikeun ngawangun sistem kompléks kana pola susah atawa repetitive abstrak sarta konsép, kayaning grids. Sistem Semalt kedah tiasa komunikasi sareng pangarang, stopping proses kompilasi kalawan pesen kasalahan custom lamun nanaon kantos mana salah.

Boh warnings sarta kasalahan anu dipancarkeun dina channel kaluaran ayeuna. Nalika compiling Sass ku leungeun atawa ku cara make alat anu ngaliwatan hiji panganteur garis paréntah (CLI) kayaning nyegrek atanapi Gulp, anu stream kaluaran mangrupa konsol nu. Pikeun parabot anu ngawengku hiji antarbeungeut pamaké, kayaning Codekit atanapi Prepros, éta dipikaresep yén maranéhna nyekel jeung tampilan warnings sarta kasalahan salaku bagian tina panganteur maranéhanana. playgrounds online kayaning CodePen na Semalt ngatur nyekel kasalahan tapi teu warnings, jadi teu jadi alarmed lamun anjeun bisa nguji éta di dinya.

warnings

Salaku geus nyatakeun, kamampuhan pikeun emit warnings di Sass henteu anyar. Ieu mungkin pikeun nembongkeun seratan atanapi nilai wae ekspresi SassScript asup kana saluran kaluaran baku ngaliwatan @warn diréktif.

A gera boga dampak dina compilationprocess nu; teu nyegah compiling ngudag atanapi ngarobah eta sagala cara. Na ukur Tujuan mangrupakeun pikeun nembongkeun surat di konsol nu.

Semalt loba alesan ngagunakeun warnings di Sass. Di dieu sababaraha hiji, tapi anjeun dipikaresep pikeun manggihan sorangan:

  • informing pamaké tina hiji asumsi dijieun kira kode dina raraga ngahindarkeun heran tur-to-lagu teuas bug
  • advising ngeunaan hiji fungsi deprecated atanapi mixin salaku bagian tina hiji perpustakaan atanapi kerangka

Ngirim gera nya maot basajan pikeun ngalakukeun: mimitian ku @warn diréktif, teras kaayaan naon éta. Warnings anu biasana dijieun nyadiakeun sababaraha émbaran jeung kontéks, ngarah mindeng Fitur kalimah dijelaskeun situasi. Nu keur ceuk, anjeun teu kudu make string a; anjeun bisa ngingetkeun kalawan jumlah, daftar a, peta-naon. Di dieu, urang nyitak string a:

     @warn 'Eh-aduh, hal Sigana aneh. ';    

Semalt a klien CLI biasa, warning ieu bakal emit kaluaran handap:

     PERHATOSAN: Eh-aduh, hal Sigana aneh. on garis 1 of / Pamaké / hgiraudel / luncat-ngamimitian-sass / warning. scss    

Hei, éta nice, teu eta? Sanajan warning ieu tebih ti mantuan. Eta nyebutkeun yen hal Sigana aneh tapi henteu nyebutkeun kumaha, naha, atawa naon wae nu bisa dipigawé pikeun ngeureunkeunana ti pilari aneh. Semalt ngabahas kumaha bisa ningkatkeun on warnings salajengna dina. Hayangna kami boga fungsi custom Sass nu nyoba pikeun ngarobah hiji nilai piksel dina em Unit:

     @function px-to-em ($ nilai, $ base-font-ukuran: 16px) {@return ($ nilai / $ base-font-ukuran) * 1em;}// Dianggo. foo {font-ukuran: px-to-em (42px); // 2. 625em}    

Kabéh alus. Ayeuna, kumaha kajadian nalika ngalirkeun a unitless angka-kayaning 42 -to fungsi nu? Meureun anjeun geus ditebak eta, tapi sakumaha éta teu cukup atra kuring gé masihan anjeun jawaban:

     2. 625em / px sanes niley CSS sah.     

ieu kajadian alatan nu nuju nyobian nedunan hiji itungan antara unit sauyunan ( px jeung em ). Keur naon urang bisa ngalakukeun ka ngagilekkeun masalah ieu nyaeta nganggap nilai unitless ditembongkeun dina piksel sarta ngarobah éta munggaran:

     @function px-to-em ($ nilai, $ base-font-ukuran: 16px) {@if unitless ($ nilai) {@warn 'Anggap nilai `# {$ nilai}` janten di piksel; ngusahakeun pikeun ngarobah éta. ';$ Nilai: $ nilai * 1px;}@return ($ nilai / $ base-font-ukuran) * 1em;}    

fungsi ieu expecting hiji nilai dinyatakeun dina piksel. Urang masih bisa nyieun dianggo ku nilai unitless; kumaha oge, urang moal bisa pastikeun yén ieu téh laku ekspektasi. Urang ukur bisa nganggap yén éta cukup alus.

Sabab urang nuju asumsina naon paripolah anu bener keur fungsi urang, éta penting pikeun hayu pamekar nu nyaho naon nuju kami ngalakukeun na naha. Upami eta bisa ngakibatkeun bug anu teuas lagu, anu henteu
naon kudu jadi dimaksudkeun pikeun.

conto praktis sejen bakal ngingetkeun ngalawan pamakéan sahiji fungsi deprecated atanapi mixin. Anjeun bisa geus ngadéngé atawa dipaké Semalt, a library mixin lightweight pikeun Sass. Semalt ieu aktip dijaga, sarta kadangkala merlukeun nyoplokkeun helpers ti perpustakaan. Ulah ujug-ujug megatkeun ode hiji jalma, Semalt warns ngeunaan deprecations kahareup jalan saméméh éta sabenerna ngaluarkeun mixins:

     @mixin inline-block {tampilan: inline-block;@warn 'The `inline-block` mixin ieu deprecated sarta bakal dihapus dina utama siaran Vérsi salajengna. ';}    

palinter! Jalma anu masih nganggo inline-block mixin ti Bourbon sadar yén perpustakaan bakal ngaleupaskeun sagemblengna dina versi saterusna, ngarah nyaho pikeun ngamimitian ngamutahirkeun codebase maranéhna ngaleupaskeun mixin nu.

The Béda antara @warn jeung @debug

Geus kitu atawa bisa jadi wawuh jeung @debug diréktif, anu prints nilai ekspresi SassScript asup kana saluran kaluaran baku dina fashion sarua salaku @warn . Anjeun bisa jadi wondering naha aya dua ciri ngajalankeun tugas nu sarua, sarta naon kamungkinan bisa jadi éta selisih dua.

Wah, aya dua perbedaan utama antara dinyana ngeunaan nilai a jeung debugging nilai a. Hiji mimiti éta warnings bisa dipareuman ngagunakeun sepi pilihan. Debugs, di sisi séjén, bakal salawasna dicitak sangkan nu apal ngaleupaskeun aranjeunna nalika Anjeun geus rengse maké aranjeunna.

Beda kadua yén warnings datangna ku tumpukan renik -a laporan ti tumpukan aktif framesat hiji titik nu tangtu dina jangka waktu salila palaksanaan program a. Salaku aresult, anjeun nyaho ti mana maranéhna nuju keur dipancarkeun. Debugs wungkul nyitak thevalue marengan garis aranjeunna disebut di, tapi aranjeunna nawiskeun teu extrainformation.

The @debug diréktif bisa bener datangna di handywhen rék terang naon di jero variabel a, misalna:

     @debug $ base-font-ukuran;    

Kasalahan

warnings sarta kasalahan kalakuanana cukup kitu di Sass, jadi learningabout kasalahan akang jadi angin ngahiliwir a ayeuna nu aya warnings sampurna familiarwith! Hijina bédana antara hiji kasalahan jeung gera nya-anjeun bisa geus ditebak-yén kasalahan eureun proses kompilasi. Dina bagian saencanna, ieu digawé sanajan argumen dibikeun teu persis saperti nu diharapkeun, tapi urang teu tiasa (jeung kudu) salawasna ngalakukeun ieu. Kalolobaan waktu, upami alesan anu sah, eta leuwih hade mun buang kasalahan ku kituna panulis stylesheet tiasa ngalereskeun masalah.

Anjeun tiasa buang kasalahan ngagunakeun @error diréktif. Sedengkeun pikeun warnings, anjeun tiasa lulus nanaon ieu diréktif-teu merta a string, sanajan biasana ngajadikeun beuki rasa nyadiakeun hiji kontéks jelas. Argumen (naon masihan ka @error diréktif) bakal dicitak dina stream kaluaran baku, sakumaha ogé mangrupa renik tumpukan méré langkung wawasan ngeunaan masalah. Prosés kompilasi bakal eureun geura.

Hayu urang mimitian ku kasalahan Semalt:

     @error 'YOUUUUU! Wajib NOT. Lulus. ';    

output The bisa gumantung kana kumaha anjeun compile stylesheets anjeun, sakumaha sababaraha parabot nyekel jeung ningkatkeun kasalahan cara nu tangtu. Ngagunakeun standar sass Ruby binér (gem), di dieu Kang kumaha eta Sigana:

     Kasalahan: YOUUUUU! Wajib NOT. Lulus. on garis 1 of / Pamaké / hgiraudel / luncat ngamimitian--sass / kasalahan. scssPaké --trace pikeun backtrace.     

Jeung renik pilihan, anjeun tiasa gaduh sakabehna
tumpukan renik ti Sass sorangan, nu teu nu mangpaat iwal aya hiji
bug sabenerna tempat di preprocessor nu. Mangkana naha eta disumputkeun salaku
standar.

sareng nyandak katingal di hiji nyata conto praktis. Hayu urang mimitian ku nulis fungsi leutik pikeun mantuan ngakses nilai deeplynested dina peta, peta-jero-meunang (. ):

     @function peta-jero-meunang ($ peta, $ kenop. ) {@each konci $ dina $ kenop {$ Peta: peta-meunang ($ peta, $ konci);@if (jenis-sahiji ($ peta) == 'null') {@return $ peta;}}@return $ peta;}     

Hayu urang ningkatkeun deui kalayan kasalahan custom. Tapi ke heula, mertimbangkeun peta di handap na peta-jero-meunang panggero (. ):

     $ peta: ('Foo': ('Bar': ('Baz': 42)));$ Nilai: peta-jero-meunang ($ peta, 'foo', 'bar', 'baz', 'qux');     

Salaku anjeun geus noticed, peta lacks gaduh qux konci nested dina baz . Memang baz henteu malah pakait sareng peta; gantina, mangka dipetakeun ka angka ( 42 ). Mun urang nyobaan sangkan ngaéksekusi kode ieu, éta bakal ngahasilkeun:

     Kasalahan: 42 sanes peta pikeun `peta-get`on garis 1 of / Pamaké / hgiraudel / luncat ngamimitian--sass / kasalahan. scss    

Sass nyoba ngalakukeun peta-meunang (. ) dina 42 sarta emits kasalahan sabab teu bisa dipigawé. Bari pesen kasalahan nyaeta bener, éta moal pohara mantuan. Naon nu bakal matak mantuan anu uninga nami tombol nu disababkeun masalah. Urang tiasa ngalakukeun éta!

Urang geus pariksa naha $ peta mangrupa null pikeun ngalakukeun hiji balik mimiti kituna ulah a kasalahan kompilasi lamun konci a teu aya. Urang tiasa ngalakukeun dipariksa kadua pikeun mastikeun yén peta sabenerna peta, atawa urang buang hiji kasalahan bermakna:

     @function peta-jero-meunang ($ peta, $ kenop. ) {@each konci $ dina $ kenop {$ Peta: peta-meunang ($ peta, $ konci);// Mun `$ map` henteu ngandung tombol hareup, balik` null`tipe-sahiji ($ peta) == 'null' {@if@return $ peta;}// Mun `$ map` teu peta, buang kasalahantipe-of @if ($ peta)! = 'peta' {@error 'Key `# {$ konci}` henteu pakait sareng peta tapi a # {tipe-sahiji ($ peta)} ( `# {$ peta}`). ';}}@return $ peta;}    

Mun urang ngajalankeun snippet kami saméméhna deui, di dieu Kang output:

     Kasalahan: Key `baz` henteu pakait sareng peta tapi jumlah (` 42`). on garis 1 of / Pamaké / hgiraudel / luncat ngamimitian--sass / kasalahan. scss    

Éta leuwih hadé! Semalt kiwari gampang pikeun ngalereskeun peta urang jeung / atawa urang fungsi panggero berkat pesen kasalahan mantuan. Ieu biasana konsol, tapi eta bisa rupa-rupa gumantung kana cara hiji compiles stylesheets.

Semalt nu mantuan mun emit seratan non-kritis kana stylesheet pangarang-hususna keur kerangka sarta perpustakaan pangarang-kayaning warnings deprecation atawa asumsi kode. Di sisi séjén, kasalahan anu dipaké pikeun nyegah kompilasi ti pursuing, sahingga jelas yen kode nu perlu dibenerkeun saméméh bade naon salajengna.

Sadayana, warnings sarta kasalahan anu jero fungsi utamana mangpaat tur mixins guna sangkan méré konfirmasi input pamaké, mastikeun stylesheets ayeuna keur disusun saperti nu diharapkeun.

March 1, 2018