最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解vue-loader如何使用

 更新時(shí)間:2017年06月06日 10:39:58   作者:春去秋來(lái)情不歸  
本篇文章主要介紹了vue-loader,vue-loader是webpack下loader插件 可以把.vue文件輸出成組件,有興趣的可以了解一下

.vue格式的文件使用類似HTML的語(yǔ)法描述vue組件。每個(gè).vue文件包含三種最基本的語(yǔ)言塊:,

<template>
 <div class="example">{{ msg }}</div>
</template>

<script>
export default {
 data () {
  return {
   msg: 'Hello world!'
  }
 }
}
</script>

<style>
.example {
 color: red;
}
</style>

vue-loader會(huì)解析這個(gè)文件中的每個(gè)語(yǔ)言塊,然后傳輸?shù)狡渌膌oaders,最終輸出到module.exports是vue組件的配置對(duì)象的CommonJS模塊。

vue-loader通過(guò)指定語(yǔ)言塊的lang屬性支持css預(yù)編譯、html編譯模板等語(yǔ)言格式。如在組件的style塊中使用sass

<style lang="sass">
 /* write SASS! */
</style>

語(yǔ)言塊

  1. 默認(rèn)語(yǔ)言:html
  2. 每個(gè)*.vue最多包含一個(gè)塊
  3. 塊中的內(nèi)容作為字符串提取出來(lái)

src 引入

如果你習(xí)慣將*.vue組件分割成多個(gè)文件,可以使用語(yǔ)言塊的src屬性把擴(kuò)展文件引入到組件中。

<template src="./template.html"></template>
<style src="./style.css"></style>
<script src="./script.js"></script>

語(yǔ)法高亮

在編輯器中可以將*.vue文件作為HTML處理,實(shí)現(xiàn)語(yǔ)法高亮

使用 vue-cli

推薦vue-cli和vue-loader組合使用搭建項(xiàng)目

npm install -g vue-cli
vue init webpack-simple hello-vue
cd hello-vue
npm install
npm run dev # ready to go!

ES2015

當(dāng)vue-loader在同一個(gè)項(xiàng)目中檢測(cè)到babel-loader或者buble-loader的存在時(shí),會(huì)用他們來(lái)處理*.vue文件中

<script>
import ComponentA from './ComponentA.vue'
import ComponentB from './ComponentB.vue'

export default {
 components: {
  ComponentA,
  ComponentB
 }
}
</script>

我們可以使用ES2015對(duì)象的簡(jiǎn)寫(xiě)來(lái)定義子組件,{ ComponentA }是{ ComponentA: ComponentA }的簡(jiǎn)寫(xiě)。vue將會(huì)自動(dòng)把鍵轉(zhuǎn)換為component-a,是以我們可以在中引入組件。

ES2015

*.vue文件的的內(nèi)容會(huì)被編譯進(jìn)js渲染函數(shù),經(jīng)過(guò) Buble等支持ES2015特性的自定義生成工具處理。所以我們可以使用Object shorthand properties 和 computed properties等ES2015特性。

<div :class="[{ active: active }, isButton ? prefix + '-button' : null]">

可以簡(jiǎn)寫(xiě)成:

<div :class="{ active, [`${prefix}-button`]: isButton }">

可以用buble自定義模板的特性支持

處理普通js文件

由于vue-loader只處理*.vue文件,需要在webpack的配置文件中配置babel-loader或者buble-loader來(lái)處理普通的js文件。vue-cli在項(xiàng)目中可以做這些事情。

在.babelrc文件中配置babel

局部css

當(dāng)一個(gè)style標(biāo)簽帶有scoped屬性,它的css只應(yīng)用于當(dāng)前組件的元素。

<style scoped>
.example {
 color: red;
}
</style>

<template>
 <div class="example">hi</div>
</template>

轉(zhuǎn)換為:

<style>
.example[_v-f3f3eg9] {
 color: red;
}
</style>

<template>
 <div class="example" _v-f3f3eg9>hi</div>
</template>

注:

1 . 在同一個(gè)組件可以包含局部和全局樣式

<style>
/* global styles */
</style>

<style scoped>
/* local styles */
</style>
  1. 子組件的根節(jié)點(diǎn)會(huì)受到父組件和本組件的局部css樣式影響
  2. Partials are not affected by scoped styles.
  3. 有了局部樣式仍然需要類選擇器
  4. 在包含迭代組件的組件中小心使用子孫選擇器。一條關(guān)于.a .b的css規(guī)則,如果在類名為a的標(biāo)簽中使用了子組件,那么子組件中的類名為b的標(biāo)簽也會(huì)應(yīng)用這條規(guī)則。

CSS 模塊化

英文教程

CSS Modules便于實(shí)現(xiàn)css模塊化,vue-loader通過(guò)模仿css的scope提供了module來(lái)實(shí)現(xiàn)css模塊化集成。

使用在

<style module>
.red {
 color: red;
}
.bold {
 font-weight: bold;
}
</style>

這樣打開(kāi)CSS Module模式,class對(duì)象會(huì)作為$style的屬性注入到組件中,進(jìn)而在中進(jìn)行動(dòng)態(tài)的類綁定

<template>
 <p :class="$style.red">
  This should be red
 </p>
</template>

style中的類作為被計(jì)算的屬性,也可以在:class中使用數(shù)組或者對(duì)象語(yǔ)法

<template>
 <div>
  <p :class="{ [$style.red]: isRed }">
   Am I red?
  </p>
  <p :class="[$style.red, $style.bold]">
   Red and bold
  </p>
 </div>
</template>

或者在js中獲取使用它

<script>
export default {
 created () {
  console.log(this.$style.red)
  // -> "_1VyoJ-uZOjlOxP7jWUy19_0"
  // an identifier generated based on filename and className.
 }
}
</script>

自定義注入名

由于一個(gè)vue組件可以包含多個(gè)

<style module="a">
 /* identifiers injected as $a */
</style>

<style module="b">
 /* identifiers injected as $b */
</style>

配置css-loader

用css-loader來(lái)處理CSS Modules,以下是css-loader對(duì)

{
 modules: true,
 importLoaders: true,
 localIdentName: '[hash:base64]'
}

通過(guò)vue-loader的cssModules配置項(xiàng)定制css-loader

// wepback 1
vue: {
 cssModules: {
  // overwrite local ident name
  localIdentName: '[path][name]---[local]---[hash:base64:5]',
  // enable camelCase
  camelCase: true
 }
}

// webpack 2
module: {
 rules: [
  {
   test: '\.vue$',
   loader: 'vue',
   options: {
    cssModules: {
     localIdentName: '[path][name]---[local]---[hash:base64:5]',
     camelCase: true
    }
   }
  }
 ]
}

PostCSS

任何vue-loader處理輸出的css都經(jīng)過(guò)PostCSS進(jìn)行局部css重寫(xiě),我們也可以增加PostCSS插件進(jìn)行這些處理,如autoprefixer和 CSSNext。

Webpack 1.x用法:

// webpack.config.js
module.exports = {
 // other configs...
 vue: {
  // use custom postcss plugins
  postcss: [require('postcss-cssnext')()]
 }
}

Webpack 2.x用法:

// webpack.config.js
module.exports = {
 // other configs...
 plugins: [
  new webpack.LoaderOptionsPlugin({
   vue: {
    // use custom postcss plugins
    postcss: [require('postcss-cssnext')()]
   }
  })
 ]
}

postcss也支持插件數(shù)組

postcss: {
 plugins: [...], // list of plugins
 options: {
  parser: sugarss // use sugarss parser
 }
}

熱加載

熱加載不只是修改文件后頁(yè)面的刷新。修改某個(gè).vue組件后,頁(yè)面中這個(gè)組件的所有實(shí)例都會(huì)被替換而不重載頁(yè)面,它還保存了應(yīng)用的當(dāng)前狀態(tài)以及被替換的組件。


如果使用了vue-cli搭建項(xiàng)目,自帶了熱加載。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)之添加刪除功能

    vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)之添加刪除功能

    本文給大家?guī)?lái)一個(gè)小案例基于vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)功能,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • 35個(gè)最好用的Vue開(kāi)源庫(kù)(史上最全)

    35個(gè)最好用的Vue開(kāi)源庫(kù)(史上最全)

    無(wú)論是開(kāi)發(fā)新手還是經(jīng)驗(yàn)豐富的老手,我們都喜歡開(kāi)源軟件包。本文主要介紹了35個(gè)最好用的Vue開(kāi)源庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Vue.js實(shí)現(xiàn)動(dòng)畫(huà)與過(guò)渡效果的示例代碼

    Vue.js實(shí)現(xiàn)動(dòng)畫(huà)與過(guò)渡效果的示例代碼

    在現(xiàn)代前端開(kāi)發(fā)中,用戶體驗(yàn)至關(guān)重要,一個(gè)精美的動(dòng)畫(huà)過(guò)渡不僅能提升界面的美觀性,還能讓用戶在使用時(shí)感受到流暢的交互體驗(yàn),在本文中,我們將深入探討如何在 Vue.js 中實(shí)現(xiàn)動(dòng)畫(huà)與過(guò)渡效果,并提供示例代碼,需要的朋友可以參考下
    2024-10-10
  • Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的全過(guò)程

    Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的全過(guò)程

    nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,因此常用來(lái)做靜態(tài)資源服務(wù)器和后端的反向代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學(xué)習(xí)表單

    vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學(xué)習(xí)表單

    這篇文章主要介紹了vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學(xué)習(xí)表單的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-09-09
  • vue使用天地圖、openlayers實(shí)現(xiàn)多個(gè)底圖疊加顯示效果

    vue使用天地圖、openlayers實(shí)現(xiàn)多個(gè)底圖疊加顯示效果

    這篇文章主要介紹了vue使用天地圖、openlayers實(shí)現(xiàn)多個(gè)底圖疊加顯示,根據(jù)返回的經(jīng)緯度列表通過(guò)天地圖、openlayers實(shí)現(xiàn)底圖添加,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-04-04
  • vue3+element-plus?Dialog對(duì)話框的使用與setup?寫(xiě)法的用法

    vue3+element-plus?Dialog對(duì)話框的使用與setup?寫(xiě)法的用法

    這篇文章主要介紹了vue3+element-plus?Dialog對(duì)話框的使用?與?setup?寫(xiě)法的使用,本文通過(guò)兩種方式結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • vue3中的hook簡(jiǎn)單封裝

    vue3中的hook簡(jiǎn)單封裝

    這篇文章主要介紹了vue3中的hook簡(jiǎn)單封裝,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析

    Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 使用wang-editor上傳圖片后端接收不到的問(wèn)題解決

    使用wang-editor上傳圖片后端接收不到的問(wèn)題解決

    這篇文章主要介紹了如何解決wang-editor 上傳圖片后端接收不到的問(wèn)題,文中通過(guò)圖文結(jié)合給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

高台县| 青神县| 齐齐哈尔市| 珲春市| 剑河县| 兰州市| 安远县| 阳东县| 奉新县| 二连浩特市| 黄骅市| 澎湖县| 沙湾县| 陆河县| 绥滨县| 岚皋县| 岐山县| 禄丰县| 开阳县| 莆田市| 新竹县| 措勤县| 巴塘县| 通化县| 墨脱县| 宁安市| 浦北县| 左云县| 清远市| 天镇县| 垦利县| 准格尔旗| 鹰潭市| 延长县| 图们市| 万源市| 满洲里市| 南宁市| 游戏| 自治县| 镇原县|