国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue2之webpack篇(二)Loader

這篇具有很好參考價值的文章主要介紹了Vue2之webpack篇(二)Loader。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、loader處理css

1、css文件的創(chuàng)建

2、安裝css-loader

?3、配置

4、打包

?5、最終效果

二、loader處理圖片

1、引入圖片

2、安裝file-loader

3、配置module

4、webpack打包

?三、ES6轉(zhuǎn)ES5

1、介紹

2、安裝babel-loader

3、webpack.config.js配置

4、webpack打包

四、打包Vue

1、下載vue

2、引入、使用vue

五、分離vue

1、分離過程

2、設(shè)置vue子組件

?3、父、子組件傳參


回顧上一篇文章的例子,我們使用webpack來處理我們寫的js代碼,并且了解webpack會自動處理js之間相關(guān)的依賴

Vue2之webpack篇(一)傳統(tǒng)開發(fā)模式、ES6模塊化、CommonJS規(guī)范、webpack概念、webpack配置文件、項目管理文件https://blog.csdn.net/qq_51478745/article/details/127944476?spm=1001.2014.3001.5502在實際項目中不僅僅有js文件,還有css、圖片,ES6轉(zhuǎn)化ES5,TypeScript轉(zhuǎn)化ES5代碼,將less,scss轉(zhuǎn)化css,將jsx,vue文件轉(zhuǎn)化js文件等

對于webpack本身來說是不具備這些轉(zhuǎn)化功能的,這時候必須使用對應(yīng)的loader進行處理


一、loader處理css

1、css文件的創(chuàng)建

(1)在工程下創(chuàng)建一個css文件夾==》創(chuàng)建一個index.css文件

body{
    background-color: skyblue;
}

(2)在main.js文件中引入index.css文件

import indexCss from './css/index.css'

(3)在項目終端進行webpack打包

Vue2之webpack篇(二)Loader

此時報錯提醒,需要我們下載引用css的loader

2、安裝css-loader

(1)css-loader@5:5是版本號

npm install --save-dev css-loader@5

(2)通過查看package.json文件,是否安裝成功

Vue2之webpack篇(二)Loader

?3、配置

(1)在webpack.config.js文件配置【module】

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"],
      },
    ],
  },
};

(2)小伙伴們可以通過文檔,參考操作步驟

css-loader | webpack 中文文檔 | webpack 中文文檔 | webpack 中文網(wǎng)webpack 是一個模塊打包器。它的主要目標是將 JavaScript 文件打包在一起,打包后的文件用于在瀏覽器中使用,但它也能夠勝任轉(zhuǎn)換(transform)、打包(bundle)或包裹(package)任何資源(resource or asset)。https://www.webpackjs.com/loaders/css-loader/

4、打包

(1)在項目終端輸入webpack

Vue2之webpack篇(二)Loader

此時發(fā)現(xiàn)又報錯了,是因為

Vue2之webpack篇(二)Loader

(2)安裝style-loader

npm install --save-dev style-loader@2

Vue2之webpack篇(二)Loader

?(3)再重新webpack

Vue2之webpack篇(二)Loader

?5、最終效果

回到class.html界面啟動,會看到index.css渲染的body背景skyblue成功

Vue2之webpack篇(二)Loader


二、loader處理圖片

1、引入圖片

(1)創(chuàng)建文件夾image==》引入一張本地圖片1.jpg

(2)將index.css修改,注意路徑

body{
    background-image: url('../image/1.jpg');
}

(3)此時webpack打包一樣開始報錯

Vue2之webpack篇(二)Loader

告訴我們需要處理圖片的loader,即file-loader

2、安裝file-loader

項目終端輸入如下代碼:

npm install --save-dev file-loader@4

3、配置module

module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"],
      },
      // 處理css中圖片的使用
      {
        test: /\.(png|jpg|git)$/,
        /* 數(shù)組對象形式 */
        use: [
          {
            // 使用file loader,解析文件路徑
            loader: "file-loader",
          },
        ],
      },
    ],
  },

4、webpack打包

(1)此時又出現(xiàn)了問題,圖片無法正常顯示,是因為打包后的圖片路徑問題,因此還要再配置

module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"],
      },
      // 處理css中圖片的使用
      {
        test: /\.(png|jpg|git)$/,
        /* 數(shù)組對象形式 */
        use: [
          {
            // 使用file loader,解析文件路徑
            loader: "file-loader",
            // 配置
            options: {
              // 指定html中引用圖片的相對html文件的路徑
              publicPath: "./dist/",
              // 指定文件名,一般會放在一個img相關(guān)的文件夾中
              name: "imgs/[contenthash].[ext]",
            },
          },
        ],
      },
    ],
  },

注意配置的dist路徑?

(2)再webpack打包,就成功顯示了

Vue2之webpack篇(二)Loader


?三、ES6轉(zhuǎn)ES5

1、介紹

(1)當檢查打包后的文件有es6代碼,有的瀏覽器還不支持es6,所以有時候需要將es6的代碼轉(zhuǎn)化成es5

(2)例子:定時器箭頭函數(shù)

①在main.js文件中設(shè)置一個定時器

setTimeout(()=>{
  console.log(0);
},1000)

②終端webpack打包,頁面控制臺會延遲一秒鐘打印0

(3)此時去到項目的dist文件夾下的bundle.js文件,找到我們寫的箭頭函數(shù)

Vue2之webpack篇(二)Loader

?可見此時打包后代碼是按照es6來寫,如果要將其按照es5來寫,需要babel-loader

2、安裝babel-loader

npm install @babel/core@7 @babel/preset-env@7 babel-loader@8 babel-preset-env

3、webpack.config.js配置

// 處理es6
{
    test: /\.js$/,
        // 除去node_modules文件夾,避免項目依賴包和插件被更改
        exclude: /(node_modules)/,
            use: {
                loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
            }
}

4、webpack打包

一樣可以正常顯示,此時觀察dist文件夾下的bundle.js文件

Vue2之webpack篇(二)Loader

?打包完的代碼,已經(jīng)將我們寫的es6語法轉(zhuǎn)為es5語法


四、打包Vue

1、下載vue

npm i vue@2

2、引入、使用vue

(1)頁面顯示msg屬性的值,即我是vue

main.js文件

// vue
import Vue from "vue";
// new一個vue實例
new Vue({
  el:'#app',//對class.html文件有id="app"屬性值標簽的掛載
  data:{
    msg:'我是vue'
  }
})

class.html文件

<body>
    <div id="app">{{msg}}</div>
</body>

Vue2之webpack篇(二)Loader

?但是發(fā)現(xiàn)msg的值并未正常顯示,因此要配置vue

(2)webpack.config.js配置resolve

resolve: {
    alias: {
        // 指定使用vue包中的版本
        'vue$': 'vue/dist/vue.esm.js'
    }
}

(3)class.html文件的js引入放到標簽下面

因為代碼運行順序是從上往下,如果vue實例在標簽之前運行,vue實例是找不到綁定id='app'的標簽

<body>
    <div id="app"><h1>{{msg}}</h1></div>
    <script src="./dist/bundle.js"></script>
</body>

(4)webpack打包

Vue2之webpack篇(二)Loader


五、分離vue

1、分離過程

(1)局部組件的語法糖

new Vue({
  el:'#app',
  template:'<App></App>',
  components:{
    App:{
      template:'<h1>{{msg}}</h1>',
      data(){
        return {
          msg:'我是vue'
        }
      }
    }
  }
})

(2)組件單獨出來

const App = {
  template:'<h1>{{msg}}</h1>',
  data(){
    return {
      msg:'我是vue'
    }
  }
}
// new一個vue實例
new Vue({
  el:'#app',//對class.html文件有id="app"屬性值標簽的掛載
  template:'<App></App>',
  components:{
    App,//增強寫法
  }
})

Vue2之webpack篇(二)Loader

?(3)將組件對象單獨寫一個App.js文件

main.js文件

import Vue from "vue";
import App from "./App.js"
new Vue({
  el:'#app',//對class.html文件有id="app"屬性值標簽的掛載
  template:'<App></App>',
  components:{
    App,
  }
})

App.js

export default {
  template: "<h1>{{msg}}</h1>",
  data() {
    return {
      msg: "我是vue",
    };
  },
};

(4)再分離,將template內(nèi)容單獨分離,引入一個vue文件寫

main.js

import Vue from "vue";
import App from "./App.vue"
new Vue({
  el:'#app',
  template:'<App></App>',
  components:{
    App,
  }
})

App.vue

<template>
    <div>
        <h1>{{msg}}</h1>
    </div>
</template>
<script>
export default{
    data() {
    return {
      msg: "我是vue",
    };
  },
}
</script>

①webpack打包,此時又開始報錯,是因為沒有l(wèi)oader處理.vue這種文件類型

②安裝vue-loader,終端分別輸入下面兩個代碼

npm i vue-loader@14
npm i vue-template-compiler

③webpack.config.js文件配置modle

// .vue 相關(guān)的loader 
{
    test: /\.vue$/,
        use: ['vue-loader'],
},

④webpack打包即可

2、設(shè)置vue子組件

(1)創(chuàng)建文件夾view==》創(chuàng)建文件login.vue

<template>
    <div>
        <div class="box"></div>
    </div>
</template>

<script>
export default {
    data(){
        return{}
    }
};
</script>

<style scoped>
/* scoped表示設(shè)置的css樣式僅適用于當前.vue文件 */
.box{
    width: 100px;
    height: 100px;
    background-color: red;
}
</style>

(2)在App父組件注冊login子組件,并在頁面顯示

<template>
    <div>
        <h1>{{msg}}</h1>
        <!-- 子組件login的使用 -->
        <login></login>
    </div>
</template>
<script>
import login from "./view/login.vue"

export default{
    data() {
    return {
      msg: "我是vue",
    };
  },
  components:{//注冊
    login
  },
}
</script>

(3)webpack打包

Vue2之webpack篇(二)Loader

?3、父、子組件傳參

(1)父組件向子組件傳遞點擊的城市

App.vue文件

<template>
    <div>
        <h1>{{msg}}</h1>
        <ul>
            <li v-for="item in cityArr" :key="item" @click="cityClick(item)">
                <h1>{{ item }}</h1>
            </li>
        </ul>
        <login :cityName="selectCity"></login>
    </div>
</template>
<script>
import login from "./view/login.vue"

export default{
    data() {
    return {
      msg: "我是vue",
      cityArr:['重慶','天津','上海','北京'],
      selectCity:null,
    };
  },
  methods:{
    cityClick(item){
        console.log(item);
        this.selectCity = item
    }
  },
  components:{
    login
  },
}
</script>

login.vue文件

<template>
    <div>
        <div class="box">
            <h3>{{ cityName }}</h3>
        </div>
    </div>
</template>

<script>
export default {
    data(){
        return{}
    },
    props:{
        cityName:{
            type:String,
            default(){
                return '默認'
            }
        }
    },
};
</script>

<style scoped>
/* scoped表示設(shè)置的css樣式僅適用于當前.vue文件 */
.box{
    width: 100px;
    height: 100px;
    background-color: red;
}
</style>

Vue2之webpack篇(二)Loader

?

(2)子組件向父組件傳遞信息

App.vue

<template>
    <div>
        <h1>{{msg}}</h1>
        <ul>
            <li v-for="item in cityArr" :key="item" @click="cityClick(item)">
                <h1>{{ item }}</h1>
            </li>
        </ul>
        <login :cityName="selectCity" @login-btn="btnClick"></login>
    </div>
</template>
<script>
import login from "./view/login.vue"

export default{
    data() {
    return {
      msg: "我是vue",
      cityArr:['重慶','天津','上海','北京'],
      selectCity:null,
    };
  },
  methods:{
    cityClick(item){
        console.log(item);
        this.selectCity = item
    },
    btnClick(msg){
        alert(msg)
    }
  },
  components:{
    login
  },
}
</script>

login.vue

<template>
    <div>
        <div class="box">
            <h3>{{ cityName }}</h3>
            <button @click="btnClick">點擊</button>
        </div>
    </div>
</template>

<script>
export default {
    data(){
        return{
            msg:'我是子組件'
        }
    },
    methods:{
        btnClick(){
            this.$emit('login-btn',this.msg)
        }
    },
    props:{
        cityName:{
            type:String,
            default(){
                return '默認'
            }
        }
    },
};
</script>

<style scoped>
/* scoped表示設(shè)置的css樣式僅適用于當前.vue文件 */
.box{
    width: 100px;
    height: 100px;
    background-color: red;
}
</style>

Vue2之webpack篇(二)Loader

?(3)父子傳參詳細步驟的學習,小伙伴們可以參考小編下面的文章

Vue基礎(chǔ)語法(四)_申小兮IU的博客-CSDN博客父組件向子組件通信(數(shù)據(jù)傳遞),子組件向父組件通信,父組件訪問子組件,子組件訪問父組件https://blog.csdn.net/qq_51478745/article/details/127495034文章來源地址http://www.zghlxwxcb.cn/news/detail-485207.html

到了這里,關(guān)于Vue2之webpack篇(二)Loader的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《基于 Vue 組件庫 的 Webpack5 配置》1.模式 Mode 和 vue-loader

    一定要配置 模式 Mode,這里有個小知識點,環(huán)境變量 process.env.NODE_ENV 一定要配置 vue-loader Vue Loader v15 現(xiàn)在需要配合一個 webpack 插件才能正確使用; 一個 webpack 的 loader,它允許你以一種名為單文件組件 (SFCs)的格式撰寫 Vue 組件; vue-loader 和 vue-template-compiler 要一起安裝,以保

    2024年02月11日
    瀏覽(48)
  • Cannot read properties of undefined (reading ‘styles‘),使用webpack5搭建vue項目,vue-loader報錯解決

    Cannot read properties of undefined (reading ‘styles‘),使用webpack5搭建vue項目,vue-loader報錯解決

    跟著官網(wǎng),嘗試在webpack5中加載vue文件時報錯: Cannot read properties of undefined (reading ‘styles’) 其中版本vue-loader@17.0.0,vue-template-compiler和vue都是2.7 百度之后看到有人說是vue-loader版本問題,然后在vue-loader的github的issue里找到了相關(guān)的問答: 意思是vue2的話,vue-loader版本要低于等于

    2024年01月23日
    瀏覽(39)
  • Webapck 解決:[webpack-cli] Error: Cannot find module ‘vue-loader/lib/plugin‘ 的問題

    Webapck 解決:[webpack-cli] Error: Cannot find module ‘vue-loader/lib/plugin‘ 的問題

    其一、報錯為: [webpack-cli] Error: Cannot find module \\\'vue-loader/lib/plugin\\\' 中文為: [webpack-cli] 錯誤:找不到模塊“vue-loader/lib/plugin” 其二、問題描述為: 在項目打包的時候 npm run build ,控制臺報錯,并拋出一個 Cannot find module \\\'vue-loader/lib/plugin\\\' 的問題; 其三、控制臺報錯的頁面顯示

    2024年02月02日
    瀏覽(25)
  • webpack(三)loader

    webpack(三)loader

    loader 用于對模塊的源代碼進行轉(zhuǎn)換,在 imporrt 或加載模塊時預(yù)處理文件 webpack 做的事情,僅僅是分析出各種模塊的依賴關(guān)系,然后形成資源列表,最終打包生成到指定文件中。 在 webpack 內(nèi)部,任何文件都是模塊,不僅僅是 js 文件 默認情況下,遇到 import 或者 require 加載模塊

    2024年02月10日
    瀏覽(16)
  • 手寫webpack的loader

    手寫webpack的loader

    幫助webpack將不同類型的文件轉(zhuǎn)換為webpack可識別的模塊。 pre:前置loader normal:普通loader inline:內(nèi)聯(lián)loader post:后置loader 4類loader的執(zhí)行順序為pernormalinlinepost 相同優(yōu)先級的loader執(zhí)行順序為:從右到左,從下到上。 例如: 使用Loader 的方式 配置方式:在 webpack.config.js 文件中指定

    2024年01月21日
    瀏覽(18)
  • 【webpack】自定義loader

    ??個人主頁:愛吃炫邁 ??系列專欄:前端工程化 ?????座右銘:道阻且長,行則將至?? 一個loader就是一個Node.js模塊,這個模塊需要導出一個函數(shù),這個導出函數(shù)的工作就是獲得處理前的源內(nèi)容,對源內(nèi)容進行處理后,返回處理后的內(nèi)容 實現(xiàn)一個替換文件中姓名的loade

    2024年02月13日
    瀏覽(18)
  • webpack中常見的Loader

    webpack中常見的Loader

    loader 用于對模塊的\\\"源代碼\\\"進行轉(zhuǎn)換,在 import 或\\\"加載\\\"模塊時預(yù)處理文件 webpack做的事情,僅僅是分析出各種模塊的依賴關(guān)系,然后形成資源列表,最終打包生成到指定的文件中。如下圖所示: 在webpack內(nèi)部中,任何文件都是模塊,不僅僅只是js文件 默認情況下,在遇到impo

    2024年02月13日
    瀏覽(16)
  • Webpack的Loader和Plugin

    1.1 Loader作用 把js和json外的其它文件轉(zhuǎn)為Webpack可以識別的模塊 1.2 Loader簡介 1.2.1 Loader類型 1.總類型 pre: 前置loader normal: 普通loader inline: 內(nèi)聯(lián)loader post: 后置loader 2.默認類型 默認為normal類型 3.修改類型 配置時可以通過enforce修改 pre,normal,post 類型。 1.2.2 Loader順序 1.總順序

    2024年04月18日
    瀏覽(20)
  • webpack基礎(chǔ)知識五:說說Loader和Plugin的區(qū)別?編寫Loader,Plugin的思路?

    webpack基礎(chǔ)知識五:說說Loader和Plugin的區(qū)別?編寫Loader,Plugin的思路?

    一、區(qū)別 前面兩節(jié)我們有提到Loader與Plugin對應(yīng)的概念,先來回顧下 loader 是文件加載器,能夠加載資源文件,并對這些文件進行一些處理,諸如編譯、壓縮等,最終一起打包到指定的文件中 plugin 賦予了 webpack 各種靈活的功能,例如打包優(yōu)化、資源管理、環(huán)境變量注入等,目

    2024年02月14日
    瀏覽(26)
  • webpack原理之開發(fā)第一個loader

    webpack原理之開發(fā)第一個loader

    一. 搭建項目結(jié)構(gòu) 整體項目結(jié)構(gòu)如圖: 1. 初始化包管理器package.json npm init -y 2. 打包入口文件src/main.js 3. 單頁面入口public/index.html 4. 配置webpack.config.js 5. 安裝依賴 npm i webpack webpack-cli html-webpack-plugin webpack-dev-server -D 6. 配置開發(fā)環(huán)境package.json打包命令 7. 打包看效果 npm run dev 至此

    2024年02月10日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包