Vue.js進階系列(19)--Vue終極使用方案

??為了緩解大家的審美疲勞,小編今天換了一個主角--Vue。今天的Vue和往常不一樣,它可是抽取代碼的葵花寶典。
【今天主要講講在項目中,如何對有關Vue的代碼進行抽離】


image.png

一、基本抽?。?el 和template

1.el 和template 抽取代碼的原因

這個故事恐怕要追溯到很久很久以前,我們先來看看Vue最原始的面貌。

image.png

某天,index依舊跟往常一樣,搬運著掰著手指頭都數(shù)不過來的代碼。
index:好累,我只是個手無縛雞之力的弱女子,卻承受了這個年紀不該承受的重量,生活不僅僅有詩和遠方,還有數(shù)不勝數(shù)的代碼...
template:哎呀呀,你怎么搬這么多的東西,快快停下來。這些重活粗活是我們干的,怎呢勞煩您動手呢。

【最最原始使用Vue的方法就是通過Vue實例中的el屬性和.html頁面綁定在一起,然后將要展示的東西通過{}引入到index界面中。但是用Vue開發(fā)的項目中,一般只有一個index.html頁面,并且頁面的內(nèi)容很簡單,后期也不需要、多次修改,可謂一言定終身啊】

2.抽取的方式

??其實很簡單,index只保留和el綁定的標簽,而所有的數(shù)據(jù)顯示都放在template中。效果圖如下所示:


image.png

??在這里,index只需要負責美麗,而template只需要負責搬運。原理是這樣的:當el和template共存時,el綁定的模塊就會被template替換掉。
??就像本案例中,<div class="warp"></div>會被<div><h1>你今天學習了嗎?</h1><button>學了</button><button>學了</button></div> 這些內(nèi)容替代。

二、進階抽?。航M件抽取

1.組件抽取的原因

??當我們把內(nèi)容的顯示都抽取到Vue實例中的template時,就會產(chǎn)生一個問題:如果顯示的內(nèi)容很多很多,Vue實例中的代碼量就會很多很多,不利于維護,所以我們最好將template的內(nèi)容抽取到一個組件中去

2.組件抽取的方式

??將Vue實例中的template內(nèi)容放到另外一個組件,最后在Vue實例的模塊中引用該組件即可。比如:

import Vue from 'vue'
const app = {
    template:`
    <div>
        <h1>你今天學習了嗎?</h1>
        <button>學了</button>
        <button>學了</button>
    </div>
    `,
    data(){
        return {
            message:"Hello,Webpack"
        }
    }
}
new Vue({
    el:".warp",
    template:'<app></app>',
    components:{
        app
    }
})
image.png

??在入口函數(shù)main.js中,聲明了一個叫app的子組件,將父組件要顯示的html元素和數(shù)據(jù)都放到了子組件中,然后在父組件的模塊使用子組件。

這里一定要注意的是,版本問題?。“姹締栴}??!版本問題!!重要的事情說三遍!如果你的webpack是3.0版本的,babel-loader,babel-core,babel-preset可以參考小編的版本:

通過 npm install babel-loader@7 babel-core babel-preset-es2015 安裝,安裝成功的結(jié)果如下:


image.png

當然也可以通過當前目錄的package-json查看相應的版本信息


image.png

三、模塊化抽取

1.模塊化抽取的思想

??通過上面組件的抽取,我們可以看出組件app是一個對象。模塊化抽取的思想就是將app的內(nèi)容單獨抽取到另外一個.js文件中,經(jīng)過export導出之后再由import導入到入口函數(shù)中。

2.具體步驟:

① 創(chuàng)建.js文件
該文件主要存放app組件內(nèi)部的所有內(nèi)容,比如:

image.png

image.png

創(chuàng)建了名字為app的js文件,然后通過export導出。
② 導入js文件
image.png

??在入口函數(shù)main.js中通過import導入app.js文件。以后想要修改app的內(nèi)容時,只需要到app.js文件修改即可。要記得注意路徑問題。

四、Vue文件抽取

1.抽取的原因

??經(jīng)過上面的模塊化抽取之后,仍舊有不足,就是模板和js代碼時寫在一塊的,不容易區(qū)分。因此,為了將模塊和js代碼相分離,我們可以采用.vue文件.


image.png

2.抽取過程

① 創(chuàng)建.vue文件

image.png

② 書寫相應的代碼

<template>
    <div>
        <h1>你今天學習了嗎?</h1>
        <button>學了</button>
        <button>學了</button>
    </div>
</template>

<script>
    data(){
        return {
            message:"Hello,Webpack"
        }
    }
</script>

<style>
    h1{
        color:red;
    }
</style>

??在Vue文件中,將模板相關的代碼寫在template中;將js相關的代碼在寫script腳本中;將css樣式相關的寫在style中。如此一來就實現(xiàn)了各個功能代碼的分離。
③ 運行 .vue文件
??Vue文件是不能直接在瀏覽器中被識別的,也需要借助loader,因此在運行.vue文件之前安裝和配置。

image.png

3.1 安裝 vue-loader
??在終端中輸入命令:npm install --save-dev vue-loader vue-template-compiler
vue-loader 只是負責加載.vue文件,而真正實現(xiàn)編譯的是vue-template-compiler
3.2 配置 vue-loader
在webpack.config.js文件中配置下面的代碼:

{
    test:/\.vue$/,
    use:['vue-loader']
          }

但現(xiàn)實總是殘酷的。如果你的vue-loader 版本大于14 ,就需要安裝插件才可以運行vue文件,如果不想安裝插件,可以降低vue-loader的使用版本。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容