這篇文章主要介紹在Javascript和Sass實現(xiàn)共享變量的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在環(huán)境之間共享變量是編程的圣杯。以下是在Javascript和
Sass(或CSS!)之間共享變量的方法。
隨著大型單頁應(yīng)用程序的興起,Javascript和CSS越來越交織在一起。通常在兩個值之間復(fù)制值(例如,與React的CSSTransitionGroup一起使用的動畫持續(xù)時間或?qū)⑵放祁伾珎鬟f到圖形庫中)。但是,保持兩個具有相同值的副本不可避免地導致僅更新一個副本并最終導致令人沮喪的錯誤。幸運的是,使用webpack和CSS模塊,有更好的方法。在此博客文章中,我們將通過上述示例為共享動畫持續(xù)時間,探討如何在腳本和樣式之間共享變量CSSTransitionGroup。
第一步是安裝我們的依賴項:
npm install sass-loader node-sass webpack --save-dev
接下來,我們需要配置webpack以便使用,sass-loader以便我們可以從Javascript訪問我們的Sass代碼。
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader', 'sass-loader']
}
]
}
}現(xiàn)在開始有趣的部分。我們在Sass中定義實際的變量值,并將其導出到Javascript。CSS模塊有一個名為的簡潔實用程序:export。該:export指令的工作原理基本上類似于ES6的export關(guān)鍵字。您的Sass代碼將導出一個對象,其中包含要在Javascript中使用的變量名稱及其關(guān)聯(lián)的值。這些值都導出為字符串。
// styles/animation.scss
$animation-length: 250;
$animation-length-ms: $animation-length + 0ms;
:export {
animationMillis: $animation-length-ms;
}
.component-enter {
...
transition: all $animation-length-ms ease-in;
}您會注意到,我們首先在一個變量中聲明整數(shù)值,然后在另一個變量中將0ms其添加。這樣一來,我們就只能導出,"250"而不是"250ms"在Javascript方面更容易解析(將0ms數(shù)字強制將其“類型”插入ms)。
現(xiàn)在,在Javascript中,我們只需要從樣式表中導入樣式,然后從導出的變量中解析出一個int即可!
// js/animation.js
import styles from '../styles/animation.scss'
import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup'
const millis = parseInt(styles.animationMillis)
...
<CSSTransitionGroup
transitionName="component"
transitionEnterTimeout={millis}
transitionLeaveTimeout={millis}
/>
...這種方法非常簡單,但是當您避免在Javascript和Sass之間同步更改的麻煩時,它會成倍地回報。
以上是“在Javascript和Sass實現(xiàn)共享變量的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當前題目:在Javascript和Sass實現(xiàn)共享變量的方法-創(chuàng)新互聯(lián)
URL鏈接:http://chinadenli.net/article34/cedose.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航、虛擬主機、動態(tài)網(wǎng)站、網(wǎng)站導航、搜索引擎優(yōu)化、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)