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

Vue2學(xué)習(xí)之第三章——Vue CLI腳手架

這篇具有很好參考價(jià)值的文章主要介紹了Vue2學(xué)習(xí)之第三章——Vue CLI腳手架。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Vue CLI 腳手架

文檔:https://cli.vuejs.org/zh/

具體步驟

  1. 第一步(僅第一次執(zhí)行):全局安裝@vue/cli。
    npm install -g @vue/cli
  2. 第二步:切換到你要?jiǎng)?chuàng)建項(xiàng)目的目錄,然后使用命令創(chuàng)建項(xiàng)目
    vue create xxxx
  3. 第三步:啟動(dòng)項(xiàng)目
    npm run serve

備注:

  1. 如出現(xiàn)下載緩慢請(qǐng)配置 npm 淘寶鏡像:npm config set registry
    https://registry.npm.taobao.org
  2. Vue 腳手架隱藏了所有 webpack 相關(guān)的配置,若想查看具體的 webpakc 配置,
    請(qǐng)執(zhí)行:vue inspect > output.js

腳手架文件結(jié)構(gòu)

├── node_modules 
├── public
│   ├── favicon.ico: 頁簽圖標(biāo)
│   └── index.html: 主頁面
├── src
│   ├── assets: 存放靜態(tài)資源
│   │   └── logo.png
│   │── component: 存放組件
│   │   └── HelloWorld.vue
│   │── App.vue: 匯總所有組件
│   │── main.js: 入口文件
├── .gitignore: git版本管制忽略的配置
├── babel.config.js: babel的配置文件
├── package.json: 應(yīng)用包配置文件 
├── README.md: 應(yīng)用描述文件
├── package-lock.json:包版本控制文件

關(guān)于不同版本的Vue

  1. vue.js與vue.runtime.xxx.js的區(qū)別:
    1. vue.js是完整版的Vue,包含:核心功能 + 模板解析器。
    2. vue.runtime.xxx.js是運(yùn)行版的Vue,只包含:核心功能;沒有模板解析器。
  2. 因?yàn)関ue.runtime.xxx.js沒有模板解析器,所以不能使用template這個(gè)配置項(xiàng),需要使用render函數(shù)接收到的createElement函數(shù)去指定具體內(nèi)容。

vue.config.js配置文件

  1. 使用vue inspect > output.js可以查看到Vue腳手架的默認(rèn)配置。
  2. 使用vue.config.js可以對(duì)腳手架進(jìn)行個(gè)性化定制,詳情見:https://cli.vuejs.org/zh

ref屬性

  1. 被用來給元素或子組件注冊(cè)引用信息(id的替代者)
  2. 應(yīng)用在html標(biāo)簽上獲取的是真實(shí)DOM元素,應(yīng)用在組件標(biāo)簽上是組件實(shí)例對(duì)象(vc)
  3. 使用方式:
    1. 打標(biāo)識(shí):<h1 ref="xxx">.....</h1>```或 ```<School ref="xxx"></School>
    2. 獲?。?code>this.$refs.xxx
<template>
   <div>
      <h1 v-text="msg" ref="title"></h1>
      <button @click="showDOM" ref="btn">點(diǎn)我輸出上方的DOM元素</button>
      <School ref="sch"/>
   </div>
</template>

<script>
// 引入School組件
import School from './components/School.vue'
   export default {
   name:'App',
    components:{School},
    data(){
      return {
         msg:'歡迎來學(xué)習(xí)ref'
      }
    },
    methods:{
      showDOM(){
         console.log(this.$refs.title); //真實(shí)DOM元素
         console.log(this.$refs.btn); //真實(shí)DOM元素
         console.log(this.$refs.sch); //School組件的元素對(duì)象(vc)
      }
    }
   }
</script>

<style>
</style>

props配置項(xiàng)

  1. 功能:讓組件接收外部傳過來的數(shù)據(jù)

  2. 傳遞數(shù)據(jù):<Demo name="xxx"/>
    Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端

  3. 接收數(shù)據(jù):

    1. 第一種方式(只接收):props:['name']
      Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端

    2. 第二種方式(限制類型):props:{name:String}
      Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端

    3. 第三種方式(限制類型、限制必要性、指定默認(rèn)值):

       props:{
       	name:{
       	type:String, //類型
       	required:true, //必要性
       	default:'老王' //默認(rèn)值
       	}
       }

Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端
備注:props是只讀的,Vue底層會(huì)監(jiān)測你對(duì)props的修改,如果進(jìn)行了修改,就會(huì)發(fā)出警告,若業(yè)務(wù)需求確實(shí)需要修改,那么請(qǐng)復(fù)制props的內(nèi)容到data中一份,然后去修改data中的數(shù)據(jù)。

  1. 在data里面定義一個(gè)myAge變量,使用this接收props傳遞過來變量未age的數(shù)據(jù)
    Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端
  2. 將動(dòng)態(tài)顯示的數(shù)據(jù)替換成myAge變量
    Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端
  3. 在updateAge點(diǎn)擊事件里面修改myAge變量即可
    Vue2學(xué)習(xí)之第三章——Vue CLI腳手架,學(xué)習(xí),vue.js,前端

mixin(混入)

  1. 功能:可以把多個(gè)組件共用的配置提取成一個(gè)混入對(duì)象
  2. 使用方式:
    • 第一步定義混合(新建一個(gè)mixin.js文件):
    export const mixin = {
        methods:{
            showName(){
                alert(this.name)
            }
        },
        mounted() {
            console.log('你好??!');
        },
    }
    
    export const mixin2 = {
        data() {
            return {
                x:200,
                y:100
            }
        },
    }
    
    • 第二步使用混入:
      全局混入:Vue.mixin(xxx)
      • 在main.js中
        // 引入Vue
        import Vue from 'vue'
        // 引入所有組件的父組件App
        import App from './App'
        //引入mixin.js
        import { mixin,mixin2 } from './mixin'
        // 關(guān)閉生產(chǎn)提示
        Vue.config.productionTip = false
        //使用全局混入
        Vue.mixin(mixin)
        Vue.mixin(mixin2)
        // 創(chuàng)建vm
        new Vue({
            // el:'#app',
            render: h => h(App)
        }).$mount('#app')
        
      局部混入:mixins:['xxx']
      • 在需要混入的組件中引入mixin.js
        import {mixin} from '../mixin'
      • 在與data平級(jí)使用mixins
        mixins:[mixin]
        <script>
        // 引入一個(gè)mixin
        import {mixin} from '../mixin'
           export default {
            name:'School',
            data(){
                return {
                    name:'張三',
                    sex:'男',
                }
            },
            mixins:[mixin]
           }
        </script>
        

插件(install方法)

  1. 功能:用于增強(qiáng)Vue
  2. 本質(zhì):包含install方法的一個(gè)對(duì)象,install的第一個(gè)參數(shù)是Vue,第二個(gè)以后的參數(shù)是插件使用者傳遞的數(shù)據(jù)。
  3. 定義插件(創(chuàng)建一個(gè)plugins.js文件):
   export default {
   install(Vue,x,y,z) {
       console.log(x,y,z)
   	//全局過濾器
   	Vue.filter('mySlice',function(value){
   		return value.slice(0,4)
   	})

   	//定義全局指令
   	Vue.directive('fbind',{
   		//指令與元素成功綁定時(shí)(一上來)
   		bind(element,binding){
   			element.value = binding.value
   		},
   		//指令所在元素被插入頁面時(shí)
   		inserted(element,binding){
   			element.focus()
   		},
   		//指令所在的模板被重新解析時(shí)
   		update(element,binding){
   			element.value = binding.value
   		}
   	})

   	//定義混入
   	Vue.mixin({
   		data() {
   			return {
   				x:100,
   				y:200
   			}
   		},
   	})

   	//給Vue原型上添加一個(gè)方法(vm和vc就都能用了)
   	Vue.prototype.hello = ()=>{alert('你好啊')}
   }
}
  1. 使用插件(在main.js里面使用):Vue.use()
// 引入Vue
import Vue from 'vue'
// 引入所有組件的父組件App
import App from './App'
// 引入插件
import plugins from './plugins'
// 關(guān)閉生產(chǎn)提示
Vue.config.productionTip = false

// 應(yīng)用(使用)插件
Vue.use(plugins,1,2,3)
// 創(chuàng)建vm
new Vue({
    // el:'#app',
    render: h => h(App)
}).$mount('#app')

scoped樣式

  1. 作用:讓樣式在局部生效,防止沖突。
  2. 寫法:<style scoped>

webStorage

  1. 存儲(chǔ)內(nèi)容大小一般支持5MB左右(不同瀏覽器可能還不一樣)

  2. 瀏覽器端通過 Window.sessionStorage 和 Window.localStorage 屬性來實(shí)現(xiàn)本地存儲(chǔ)機(jī)制。

  3. 相關(guān)API:

    1. xxxxxStorage.setItem('key', 'value');
      該方法接受一個(gè)鍵和值作為參數(shù),會(huì)把鍵值對(duì)添加到存儲(chǔ)中,如果鍵名存在,則更新其對(duì)應(yīng)的值。

    2. xxxxxStorage.getItem('person');

      ? 該方法接受一個(gè)鍵名作為參數(shù),返回鍵名對(duì)應(yīng)的值。

    3. xxxxxStorage.removeItem('key');

      ? 該方法接受一個(gè)鍵名作為參數(shù),并把該鍵名從存儲(chǔ)中刪除。

    4. xxxxxStorage.clear()

      ? 該方法會(huì)清空存儲(chǔ)中的所有數(shù)據(jù)。

  4. 備注:

    1. SessionStorage存儲(chǔ)的內(nèi)容會(huì)隨著瀏覽器窗口關(guān)閉而消失。
    2. LocalStorage存儲(chǔ)的內(nèi)容,需要手動(dòng)清除才會(huì)消失。
    3. xxxxxStorage.getItem(xxx)如果xxx對(duì)應(yīng)的value獲取不到,那么getItem的返回值是null。
    4. JSON.parse(null)的結(jié)果依然是null。

組件的自定義事件

  1. 一種組件間通信的方式,適用于:子組件 ===> 父組件

  2. 使用場景:A是父組件,B是子組件,B想給A傳數(shù)據(jù),那么就要在A中給B綁定自定義事件(事件的回調(diào)在A中)。

  3. 綁定自定義事件:

    1. 第一種方式,在父組件中:<Demo @student="test"/><Demo v-on:student="test"/>

    2. 第二種方式,在父組件中:

      <Demo ref="demo"/>
      ......
      methods:{
      	test(){
      	......
      	},
      mounted(){
         this.$refs.demo.$on('student',this.test)
      }
      
  4. 若想讓自定義事件只能觸發(fā)一次,可以使用once修飾符,或$once方法。
    this.$refs.student.$once('student',this.getStudentName) //綁定自定義事件(一次性)

  5. 觸發(fā)自定義事件(子組件中):this.$emit('student',數(shù)據(jù))

  6. 解綁自定義事件(父組件中)this.$off('student')

  7. 組件上也可以綁定原生DOM事件,需要使用native修飾符。
    <Student ref="student" @click.native="show"/>

  8. 注意:通過this.$refs.xxx.$on('student',回調(diào))綁定自定義事件時(shí),回調(diào)要么配置在methods中,要么用箭頭函數(shù),否則this指向會(huì)出問題!

全局事件總線(GlobalEventBus)

  1. 一種組件間通信的方式,適用于任意組件間通信

  2. 安裝全局事件總線(main.js中):

    new Vue({
    	......
    	beforeCreate() {
    		Vue.prototype.$bus = this //安裝全局事件總線,$bus就是當(dāng)前應(yīng)用的vm
    	},
        ......
    }) 
    
  3. 使用事件總線:

    1. 接收數(shù)據(jù):A組件想接收數(shù)據(jù),則在A組件中給$bus綁定自定義事件,事件的回調(diào)留在A組件自身。
         methods(){
           demo(data){......}
         }
         ......
         mounted() {
           this.$bus.$on('xxxx',this.demo)
         }
    
    1. 提供數(shù)據(jù):this.$bus.$emit('xxxx',數(shù)據(jù))

    2. 最好在beforeDestroy鉤子中,用$off去解綁當(dāng)前組件所用到的事件。哪里綁定自定義事件,就在哪里解綁

    	beforeDestroy(){
            this.$bus.$off('xxxx')
        }
    

消息訂閱與發(fā)布(pubsub)

  1. 一種組件間通信的方式,適用于任意組件間通信。

  2. 使用步驟:

    1. 安裝pubsub:npm i pubsub-js

    2. 引入: import pubsub from 'pubsub-js'

    3. 接收數(shù)據(jù):A組件想接收數(shù)據(jù),則在A組件中訂閱消息,訂閱的回調(diào)留在A組件自身。

      methods(){
        demo(data){......}
      }
      ......
      mounted() {
        this.pid = pubsub.subscribe('xxx',this.demo) //訂閱消息
      }
      
    4. 提供數(shù)據(jù):pubsub.publish('xxx',數(shù)據(jù))

    5. 最好在beforeDestroy鉤子中,用pubSub.unsubscribe(this.pid)取消訂閱。

nextTick

  1. 語法:this.$nextTick(回調(diào)函數(shù))
this.$nextTick(function(){
	this.$refs.inputTitle.focus()
})
  1. 作用:在下一次 DOM 更新結(jié)束后執(zhí)行其指定的回調(diào)。
  2. 什么時(shí)候用:當(dāng)改變數(shù)據(jù)后,要基于更新后的新DOM進(jìn)行某些操作時(shí),要在nextTick所指定的回調(diào)函數(shù)中執(zhí)行。

Vue封裝的過度與動(dòng)畫

  1. 作用:在插入、更新或移除 DOM元素時(shí),在合適的時(shí)候給元素添加樣式類名。

  2. 寫法:

    1. 準(zhǔn)備好樣式(可將v改為transition中的name中的值,即可只給name中值相同的使用):

      • 元素進(jìn)入的樣式:
        1. v-enter:進(jìn)入的起點(diǎn)
        2. v-enter-active:進(jìn)入過程中
        3. v-enter-to:進(jìn)入的終點(diǎn)
      • 元素離開的樣式:
        1. v-leave:離開的起點(diǎn)
        2. v-leave-active:離開過程中
        3. v-leave-to:離開的終點(diǎn)
    2. 使用<transition>包裹要過度的元素,并配置name屬性:

      <transition name="hello">
      	<h1 v-show="isShow">你好??!</h1>
      </transition>
      
  3. 備注:若有多個(gè)元素需要過度,則需要使用:<transition-group>,且每個(gè)元素都要指定key值。

    <transition-group name="hello" appear>
        <h1 v-show="!isShow" key="1">你好??!</h1>
        <h1 v-show="isShow" key="2">張三!</h1>
    </transition-group>
    
  4. 第三方動(dòng)畫:https://animate.style/文章來源地址http://www.zghlxwxcb.cn/news/detail-805000.html

    <transition-group 
    appear
    name="animate__animated animate__bounce" 
    enter-active-class="animate__swing"
    leave-active-class="animate__backOutUp"
    >
        <h1 v-show="!isShow" key="1">你好啊!</h1>
        <h1 v-show="isShow" key="2">張三!</h1>
    </transition-group>
    

到了這里,關(guān)于Vue2學(xué)習(xí)之第三章——Vue CLI腳手架的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 17-工程化開發(fā) & 腳手架 Vue CLI

    17-工程化開發(fā) & 腳手架 Vue CLI

    1.核心包傳統(tǒng)開發(fā)模式: 基于 html/css /js 文件,直接引入核心包,開發(fā) Vue。 2. 工程化開發(fā)模式: 基于構(gòu)建工具 (例如: webpack)的環(huán)境中開發(fā) Vue。 ? ?問題: ? ? ? ? 1. webpack 配置不簡單 ? ? ? ? 2. 雷同的基礎(chǔ)配置 ? ? ? ? 3. 缺乏統(tǒng)一標(biāo)準(zhǔn) 需要一個(gè)工具,生成標(biāo)準(zhǔn)化的配置 基本介

    2024年02月11日
    瀏覽(96)
  • 20230623----重返學(xué)習(xí)-vue-cli腳手架

    Vue工程化處理工具之 : @vue/cli 腳手架的本質(zhì):基于webpack實(shí)現(xiàn)項(xiàng)目的打包部署; vue/cli 安裝和使用 可選擇當(dāng)前配置項(xiàng) 文件地址在:C:Users當(dāng)前電腦用戶名.vuerc。 如:C:Usersfangc.vuerc 文件目錄 package.json 目錄: scripts:npm可執(zhí)行命令 serve命令: vue-cli-service 是Vue腳手架內(nèi)部封裝的

    2024年02月10日
    瀏覽(96)
  • 【第三章 flutter學(xué)習(xí)之Dart基礎(chǔ)(上)】

    【第三章 flutter學(xué)習(xí)之Dart基礎(chǔ)(上)】

    class類 定義類 使用類 默認(rèn)就執(zhí)行構(gòu)造函數(shù) 簡寫方式 類單獨(dú)抽離成一個(gè)組件或方法 創(chuàng)建一個(gè)dart文件,定義好類, import “路徑” 引入 即可使用 私有屬性 必須是一個(gè)單獨(dú)的文件 屬性或方法前面加_下劃線即可為私有屬性或者私有方法 不過仍可以間接獲取,通過調(diào)用共有方法

    2024年02月13日
    瀏覽(97)
  • VUE2 腳手架搭建

    VUE2 腳手架搭建

    M : Model 模型層(業(yè)務(wù)邏輯層)主要包含 JS 代碼,用于管理業(yè)務(wù)邏輯的實(shí)現(xiàn) V : View 視圖層 主要包含 HTML/CSS 代碼,用于管理 UI 的展示 VM : ViewModel (視圖模型層)用于將 data 與視圖層的 Dom 進(jìn)行動(dòng)態(tài)綁定 ①腳手架環(huán)境安裝 制作web項(xiàng)目,從小作坊狀態(tài)轉(zhuǎn)向工程化開發(fā)的狀態(tài)

    2024年02月09日
    瀏覽(101)
  • 關(guān)于基于vue-cli腳手架創(chuàng)建vue項(xiàng)目(圖文版)

    關(guān)于基于vue-cli腳手架創(chuàng)建vue項(xiàng)目(圖文版)

    目錄 一.vue-cli腳手架·概述(來源于官方文檔) 二.創(chuàng)建流程 2.1 首先安裝node.js,如未安裝請(qǐng)移步到:安裝node.js 2.2 安裝腳手架vue-cli 2.2.1 使用npm install -g @vue/cli命令 ?2.2.1 使用vue -V 查看版本并檢驗(yàn)是否安裝成功 ?2.3 安裝vue項(xiàng)目 2.3.1 使用命令 vue create 項(xiàng)目名 ?編輯?2.3.2 這里

    2024年02月07日
    瀏覽(302)
  • Vue--》超詳細(xì)教程——vue-cli腳手架的搭建與使用

    Vue--》超詳細(xì)教程——vue-cli腳手架的搭建與使用

    目錄 vue-cli vue-cli 的安裝 (可能出現(xiàn)的問題及其解決方法) vue-cli 創(chuàng)建 Vue 項(xiàng)目

    2024年01月17日
    瀏覽(87)
  • mac下安裝vue cli腳手架并搭建一個(gè)簡易項(xiàng)目

    mac下安裝vue cli腳手架并搭建一個(gè)簡易項(xiàng)目

    1、確定本電腦下node和npm版本是否為項(xiàng)目所需版本。 2、下載vue腳手架 3、創(chuàng)建項(xiàng)目 如果有node,打開終端,輸入node -v和npm -v , 確保node和npm的版本,(這里可以根據(jù)自己的需求去選擇,如果對(duì)最新版本的內(nèi)容有要求,也可以選擇最新版本)如果沒有node,可以點(diǎn)擊nodejs官網(wǎng)去下載

    2024年02月15日
    瀏覽(100)
  • vue-cli5腳手架搭建項(xiàng)目過程詳解 -vue組件單元測試

    vue-cli5腳手架搭建項(xiàng)目過程詳解 -vue組件單元測試

    單元測試是對(duì)軟件中的最小可測試單元進(jìn)行測試。(最小可測試單元是要有結(jié)果產(chǎn)出的。例如某個(gè)方法,單獨(dú)的某個(gè)操作) 單元測試其實(shí)是伴隨著敏捷開發(fā),它是對(duì)更快開發(fā)的一種追求。早發(fā)現(xiàn)錯(cuò)誤比晚發(fā)現(xiàn)錯(cuò)誤會(huì)更好,保證自己的代碼符合要求 一: 搭建基于 jest 的 vue 單元

    2023年04月14日
    瀏覽(439)
  • vue-cli 腳手架創(chuàng)建uniapp項(xiàng)目(微信小程序)

    vue-cli 腳手架創(chuàng)建uniapp項(xiàng)目(微信小程序)

    1、全局安裝 vue-cli 腳手架(不建議用 5.0 版本,避免報(bào)錯(cuò)) 2、腳手架創(chuàng)建項(xiàng)目 3、選擇 默認(rèn)模板 即可 4、編譯并啟動(dòng)項(xiàng)目 ?5、開發(fā)者工具,導(dǎo)入項(xiàng)目,注意路徑 \\\"項(xiàng)目地址/dist/dev/mp-weixin\\\" 開發(fā)的規(guī)范 不能直接在開發(fā)者工具中修改代碼,口訣:vscode做開發(fā),開發(fā)者工具做調(diào)試

    2024年02月09日
    瀏覽(90)
  • 從0搭建Vue3組件庫(十):如何搭建一個(gè) Cli 腳手架

    從0搭建Vue3組件庫(十):如何搭建一個(gè) Cli 腳手架

    本篇文章將實(shí)現(xiàn)一個(gè)名為 create-easyest 腳手架的開發(fā),只需一個(gè)命令 npm init easyest 就可以將整個(gè)組件庫開發(fā)框架拉到本地。 首先,我們?cè)?packages 目錄下新建 cli 目錄,同執(zhí)行 pnpm init 進(jìn)行初始化,然后將包名改為 create-easyest 這里需要知道的是當(dāng)我們執(zhí)行 npm init xxx 或者 npm create xxx 的

    2024年02月08日
    瀏覽(91)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包