>
如果您還不知道媒體,那么這是SASS中非常輕巧但功能強(qiáng)大的斷點(diǎn)經(jīng)理。>提供的公共API是單個(gè)Mixin,Media(..)(因此是庫的名稱),但是整個(gè)事情都經(jīng)過了足夠的思考,因此您實(shí)際上可以為此做奇跡。入門之前的一個(gè)簡短示例:
<span>.my-component { </span><span> <span>width: 100%;</span> </span> <span>// On screens larger or equal to *small* breakpoint, </span> <span>// make the component floated and half the size </span><span> <span>@include media('≥small') {</span> </span><span> <span>float: left;</span> </span><span> <span>width: 50%;</span> </span> <span>} </span><span>}</span>>現(xiàn)在相當(dāng)不錯(cuò),不是嗎?
無論如何,
,所以我們想出了一個(gè)我想與你們分享的一些測試系統(tǒng)。當(dāng)然,如果您想測試一個(gè)完整的框架,則可能需要從Eric Suzanne中使用True,而Eric Suzanne則是用Sass編寫的完整吹制測試框架,并在最近的SitePoint上的一篇文章中被David介紹和解釋。有什么想法?
>我們想在我們對存儲庫提交的任何時(shí)候?qū)斓闹饕饺斯δ苓M(jìn)行一些測試。如果任何測試失敗,則該提交將中止,并且需要修復(fù)代碼以允許提交通過。這樣,我們確保我們可以在圖書館安全地工作而不會打破它的風(fēng)險(xiǎn)(通常是
的事情)。 實(shí)現(xiàn)類似的事情最終變得非常容易:我們在任何提交之前設(shè)置了a
> gitgit掛鉤,以在libsass和ruby sass中進(jìn)行測試。如果測試失敗,我們會殺死該過程。
有不同的方法來運(yùn)行Sass和Libsass。您可以使用二進(jìn)制文件,也可以使用包裝紙。在我們的情況下,我們選擇了一個(gè)很小的散裝工作流程,使我們很容易運(yùn)行Ruby Sass和Libsass。
編譯SASS測試時(shí),如果GULP任務(wù)遇到了SASS錯(cuò)誤,則在投擲錯(cuò)誤本身時(shí)退出該過程,該錯(cuò)誤本身會彈出前簽名的掛鉤并最終中止了提交。
如果我們總結(jié)一下,那就這樣:
>- 一個(gè)預(yù)先承諾的鉤子在提交上運(yùn)行一個(gè)測試GULP任務(wù) 測試GULP任務(wù)在libsass和Ruby Sass
- 中編譯了SASS測試 如果測試失敗,則SASS會引發(fā)@Error
- >的錯(cuò)誤 SASS錯(cuò)誤被Gulp捕獲,該錯(cuò)誤本身會發(fā)出錯(cuò)誤
- 灣錯(cuò)誤被刪除提交
設(shè)置測試體系結(jié)構(gòu)
架構(gòu)>單詞使它聽起來很大,而它實(shí)際上非常簡單。這是該項(xiàng)目的外觀:
<span>.my-component { </span><span> <span>width: 100%;</span> </span> <span>// On screens larger or equal to *small* breakpoint, </span> <span>// make the component floated and half the size </span><span> <span>@include media('≥small') {</span> </span><span> <span>float: left;</span> </span><span> <span>width: 50%;</span> </span> <span>} </span><span>}</span>畢竟不是那么令人印象深刻,嗯? GULP任務(wù)只需在測試文件夾中的所有文件上運(yùn)行SASS引擎即可。這是函數(shù)-1.scss的外觀:
dist/ <span>| </span><span>|- my-sass-library.scss </span><span>| </span>tests/ <span>| </span><span>|- helpers/ </span><span>| |- _SassyTester.scss </span><span>| |- _custom-formatter.scss </span><span>| </span><span>|- function-1.scss </span><span>|- function-2.scss </span><span>|- ...</span>最后但并非最不重要的一點(diǎn)是,我們需要重新定義運(yùn)行(..),因?yàn)镾assytester的原始速度將輸出測試結(jié)果,無論是否通過是否通過。在我們的情況下,我們只想在發(fā)生錯(cuò)誤時(shí)投擲。讓我們將其放在助手/_Output-formatter.scs.
>中
<span>// Import the library to test (or only the function if you can) </span><span><span>@import '../dist/my-sass-library';</span> </span> <span>// Import the tester </span><span><span>@import 'helpers/SassyTester';</span> </span> <span>// Import the custom formatter </span><span><span>@import 'helpers/custom-formatter';</span> </span> <span>// Write the tests </span><span>// See my previous article to know more about this: </span><span>// http://... </span><span><span>$tests-function-1: ( ... );</span> </span> <span>// Run the tests </span><span><span>@include run(test('function-1', $tests-function-1));</span></span>對于更高級的等效運(yùn)行(..)mixin的更高級版本,請檢查Incless-Media。
Gulp Workflow
如果您想簡要介紹Gulp,請務(wù)必閱讀我最近的文章:Sass的簡單笨拙的工作流程。對于本節(jié),我假設(shè)您熟悉Gulp。
我們需要三個(gè)任務(wù):
一個(gè)可以在測試文件夾上運(yùn)行l(wèi)ibsass(使用Gulp-sass)
> 一個(gè)可以在測試文件夾上運(yùn)行Ruby Sass(使用Gulp-ruby-sass)- 一個(gè)運(yùn)行兩個(gè)任務(wù) 的一個(gè)
- 理想情況下,當(dāng)Sass引發(fā)錯(cuò)誤時(shí)(由于內(nèi)置錯(cuò)誤或@Error)時(shí),Gulp應(yīng)該正確退出。不幸的是,關(guān)于Ruby Sass的Gulp-Ruby-sass存在一個(gè)問題,因此對于Ruby Sass,我們必須提出一個(gè)node
<span>// We overwrite the `run(..)` mixin from SassyTester to make it throw </span><span>// an `@error` only if a test fails. The only argument needed by the </span><span>// `run(..)` mixin is the return of `test(..)` function from SassyTester. </span><span>// You can check what `$data` looks like in SassyTester documentation: </span><span>// http://kittygiraudel.com/SassyTester/#function-test </span><span><span>@mixin run($data) {</span> </span><span> <span>$tests: map-get($data, 'tests');</span> </span> <span> <span>@each $test in $tests {</span> </span><span> <span>@if map-get($test, 'fail') {</span> </span><span> <span>@error 'Failing test!</span> </span><span> <span>Expected : #{map-get($test, 'expected')}</span> </span><span> <span>Actual : #{map-get($test, 'actual')}';</span> </span> <span>} </span> <span>} </span><span>}</span>
>有大量的庫可以設(shè)置前簽名的掛鉤。我個(gè)人喜歡預(yù)先提交的,但您基本上可以選擇自己喜歡的東西,因?yàn)樗鼈兌甲龌蚨嗷蛏佟?em>>
>要在我們的項(xiàng)目中添加預(yù)訂掛鉤,我們需要在包裝中創(chuàng)建一個(gè)預(yù)命令密鑰。該鍵映射到 就是這樣,我們已經(jīng)完成了。 最終想法
如您所見,此示例非常簡單,但是它可以完成工作,并且做得很好。這是它的外觀:
>你怎么看?您可能會考慮將其添加到您的庫或框架中嗎?
提交時(shí),預(yù)先承諾的掛鉤會發(fā)射并嘗試執(zhí)行測試NPM腳本。該腳本運(yùn)行以下命令:Gulp Test,該腳本將Gulp插入測試。
<span>var gulp = require('gulp');
</span><span>var sass = require('gulp-sass');
</span><span>var rubySass = require('gulp-ruby-sass');
</span>
<span>// Run LibSass on the tests folder
</span><span>// Gulp automatically exits process in case of Sass error
</span>gulp<span>.task('test:libsass', function () {
</span> <span>return gulp.src('./tests/*.scss')
</span> <span>.pipe(plugins.sass());
</span><span>});
</span>
<span>// Run Ruby Sass on the tests folder
</span><span>// Gulp manually exits process in case of Sass error
</span>gulp<span>.task('test:ruby-sass', function () {
</span> <span>return rubySass('./tests')
</span> <span>.on('error', function (err) {
</span> process<span>.exit(1);
</span> <span>});
</span><span>});
</span>
gulp<span>.task('test', ['test:libsass', 'test:ruby-sass']);</span>
以上是測試SASS庫的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

在JavaScript中,選擇單行注釋(//)還是多行注釋(//)取決于注釋的目的和項(xiàng)目需求:1.使用單行注釋進(jìn)行快速、內(nèi)聯(lián)的解釋;2.使用多行注釋進(jìn)行詳細(xì)的文檔說明;3.保持注釋風(fēng)格的一致性;4.避免過度注釋;5.確保注釋與代碼同步更新。選擇合適的注釋風(fēng)格有助于提高代碼的可讀性和可維護(hù)性。

Java和JavaScript是不同的編程語言,各自適用于不同的應(yīng)用場景。Java用于大型企業(yè)和移動(dòng)應(yīng)用開發(fā),而JavaScript主要用于網(wǎng)頁開發(fā)。

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

評論arecrucialinjavascriptformaintainingclarityclarityandfosteringCollaboration.1)heelpindebugging,登機(jī),andOnderStandingCodeeVolution.2)使用林格forquickexexplanations andmentmentsmmentsmmentsmments andmmentsfordeffordEffordEffordEffordEffordEffordEffordEffordEddeScriptions.3)bestcractices.3)bestcracticesincracticesinclud

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫;4.處理時(shí)區(qū)問題建議使用支持時(shí)區(qū)的庫,如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)
