ホームページ >ウェブフロントエンド >jsチュートリアル >Vue がローカル スコープとモジュール化を実装する方法
今回は、Vue がローカル スコープとモジュール化を実装する方法と、Vue がローカル スコープとモジュール化を実装する際の注意点について説明します。実際のケースを見てみましょう。
CSS モジュールは、コンポーネントのスタイルが相互に影響を与えないように、各ローカル クラスにグローバルに一意のクラス名を与えます。例:
/* button.css */ .button { font-size: 16px; } .mini { font-size: 12px; }
これは次のように変換されます:
/* button.css */ .button__button--d8fj3 { font-size: 16px; } .button__mini--f90jc { font-size: 12px; }
CSS モジュール ファイルをインポートすると、ローカル クラス名からグローバル クラス名へのマッピング オブジェクトが提供されます。次のように:
import styles from './button.css' // styles = { // button: 'button__button--d8fj3', // mini: 'button__mini--f90jc' // } element.innerHTML = '<button class="' + styles.button + ' ' + styles.mini + '" />'
vue-css-modules: 簡略化されたクラス名のマッピング
ここに CSS モジュールを使用したボタン コンポーネントがあります:
<template> <button :class="{ 'global-button-class-name': true, [styles.button]: true, [styles.mini]: mini }">点我</button> </template> <script> import styles from './button.css' export default { props: { mini: Boolean }, data: () => ({ styles }) } </script>
確かに、CSS モジュールは Vue コンポーネントに適しています。ただし、次の欠点もあります:
データでスタイルを渡す必要があります
グローバル クラス名をインポートするには、styles.localClassName を使用する必要があります
他のグローバル クラス名がある場合は、それらを入力する必要があります一緒に
ローカルクラス名と属性名が同じでもコンポーネントの属性値にバインドしたい場合は明示的に指定する必要があります
上記のボタンコンポーネントの場合、 vue-css-modules を使用する 変更後:
<template> <button class="global-button-class-name" styleName="button :mini"> 点我 </button> </template> <script> import CSSModules from 'vue-css-modules' import styles from './button.css' export default { mixins: [CSSModules(styles)], props: { mini: Boolean } } </script>
現在:
データでスタイルを渡す必要はありませんが、mixins:full_moon_with_face:
スタイルに別れを告げることができます。 localClassName
Change local クラス名は styleName 属性に配置され、グローバル クラス名は class 属性に配置されます。これにより、ローカル クラス名がコンポーネントのプロパティとバインドされます。同じ名前です: modifier
<button styleName="@button">按钮</button>と同等です。これにより、コンポーネントのスタイルを外部からリセットできます:
<button styleName="button" data-component-button="true">按钮</button>$type
.form [data-component-button] { font-size: 20px; }これは次と同等です:
<button styleName="$type">按钮</button>:mini
<button :styleName="type">按钮</button>これは次と同等です:
<button styleName=":mini">按钮</button>これは次と同等です:
<button :styleName="mini ? 'mini' : ''">按钮</button> disabled=isDisabled <button styleName="disabled=isDisabled">按钮</button>使用方法 Vueテンプレートで使用するCの紹介SSテンプレート外のモジュール
<button :styleName="isDisabled ? 'disabled' : ''">按钮</button>テンプレート内で CSS モジュールを使用する
<template> <button class="global-button-class-name" styleName="button :mini"> 点我 </button> </template> <script> import CSSModules from 'vue-css-modules' import styles from './button.css' export default { mixins: [CSSModules(styles)], props: { mini: Boolean } } </script>Vue JSX で使用する
<template> <button class="global-button-class-name" styleName="button :mini"> 点我 </button> </template> <script> import CSSModules from 'vue-css-modules' export default { mixins: [CSSModules()], props: { mini: Boolean } } </script> <style module> .button { font-size: 16px; } .mini { font-size: 12px; } </style>Vue レンダリング関数で使用する
import CSSModules from 'vue-css-modules' import styles from './button.css' export default { mixins: [CSSModules(styles)], props: { mini: Boolean }, render() { return ( <button styleName="@button :mini">点我</button> ) } }詳細については、この記事の事例を読んで習得したと思います。興味深い情報が満載です。PHP 中国語 Web サイトの他の関連記事にもご注目ください。 推奨読書:
白黒だけ残してJSを使用して画像を操作する
Vue2のルーティングナビゲーションフックをカプセル化して実戦で使用する以上がVue がローカル スコープとモジュール化を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。