Vue版本過渡變化

到了2.0以后,有哪些變化

  1. 在每個組件模板,不在支持片段代碼

之前:

<template id=”aaa”><h3>我是組件</h3><strong>我是加粗標簽</strong></template>

?

現在: ?必須有根元素,包裹住所有的代碼

<template id="aaa"> <div>
<h3>我是組件</h3> <strong>我是加粗標簽</strong>   </div></template>

?

?

2、關于組件定義

之前:、

Vue.extend 這種方式,在2.0里面有,但是有一些改動,這種寫法,即使能用,咱也不用——廢棄

?

Vue.component(組件名稱,{                  在2.0繼續能用data(){}methods:{}template:});

?

現在: 2.0推出一個組件,簡潔定義方式:類似于Vue.extend()

var Home={template:'#aaa'};Vue.component('my-aaa',Home);

?

?

3、關于生命周期

之前:

created ??????new Vue執行后,即實例已經創建時執行

beforeCompile:當開始編譯HTML頁面所有的Vue語法之前執行

compiled ????當編譯HTML頁面所有的Vue語法結束之后執行

ready ??????當編譯結束后把所有元素掛到Dom樹,即插入到文檔中后執行

beforeDestroy : 銷毀之前

destroyed : ????銷毀之后

現在:

beforeCreate 組件實例剛剛被創建,屬性都沒有

created ???????實例已經創建完成,屬性已經綁定

beforeMount 模板編譯之前,頁面的{{}}未替換

mounted 模板編譯之后,代替之前ready ?*

beforeUpdate 組件更新之前

updated 組件更新完畢 *

beforeDestroy 組件銷毀前

destroyed 組件銷毀后

?

4、關于生命周期v-for

2.0里面默認就可以添加重復數據,不需要使用track-by='$index/uid'

去掉了隱式一些變量 ? $index $key

之前: ???????????????????index表示下標,val表示當前的值

v-for="(index,val) in array"     

?

現在:

v-for="(val,index) in array"track-by="id" 變成      <li v-for="(val,index) in list" :key="index">

?

?

5、自定義鍵盤信息

之前:

?

Vue.directive('on').keyCodes.ctrl=17;

?

?

?

現在:?

 Vue.config.keyCodes.ctrl=17

?

?

6、關于過濾器,推薦自定義寫法

之前:

系統就自帶很多過濾

{{msg | currency}}   {{msg | json}}   limitBy    filterBy

?

?

到了2.0, 內置過濾器,全部刪除了,

推薦使用lodash 工具庫

自定義過濾器——還有 但是,自定義過濾器傳參變化

之前: {{msg | toDou '12' '5'}}現在: {{msg | toDou('12','5')}}

?

?

7、關于父子組件直接的數據交互

子組件想要拿到父組件數據: ? 通過 ?props

之前:

子組件可以更改父組件信息,可以是同步 ?sync

現在:

不允許直接給父級的數據,做賦值操作

?

解決辦法:

a). 父組件每次傳一個對象給子組件, 對象之間引用 。將數據變成對象

b). 只是不報錯, mounted中轉,將數據賦值后更改,不直接更改

?

8、可以單一事件管理組件通信: vuex

在全局定義一個vue對象

var Event=new Vue();

?

在發送出數據的組件內定義一個方法,點擊觸發。調用vue對象中的$emit

      send(){   Event.$emit ('a-msg',this.a);  }Event.$emit(事件名稱, 數據)

?

在接收數據的組件中調用調用vue對象中的$on進行接收數據

    Event.$on('a-msg',function(a){this.a=a;}.bind(this));Event.$on(事件名稱,function(data){//data

}.bind(this));

?

?

9、動畫過渡

?之前: transition 作為一個屬性使用

HTML元素:<p transition="fade"></p>定義CSS:.fade-transition{}.fade-enter{}.fade-leave{}

?

現在:transition 作為一個組件HTML標簽

<transition name="fade">需要運動的對象(可以是元素,屬性、路由....)</transition>

?

定義CSS:

.fade-enter{}         //初始狀態,即目標元素原本的狀態.fade-enter-active{}   //變化成什么樣  ->  當元素出來(顯示)的時候的狀態.fade-leave{}         //離開前的狀態.fade-leave-active{}  //變成成什么樣   -> 當元素離開(消失)的時候的狀態

?

例子:

?

<transition name="fade"><p v-show="show"></p> </transition>.fade-enter-active, .fade-leave-active{   //定義總的動畫時間transition: 1s all ease;}.fade-enter,.fade-leave{             //動畫前的狀態opacity:0;width:100px;height:100px;}.fade-enter-active{         //目標元素出現(顯示)時的動畫opacity:1;width:300px;height:300px;}.fade-leave-active{   //目標元素消失(隱藏)時的動畫opacity:0;width:100px;height:100px;}

?

transition內部具備多個方法函數:后面跟的·是一個方法

??@before-enter="beforeEnter" ???????顯示前觸發

??@enter="enter" ?????????????????????顯示時觸發

??@after-enter="afterEnter" ???????????顯示后觸發

??@before-leave="beforeLeave" ???????消失前觸發

??@leave="leave" ?????????????????????消失時觸發

??@after-leave="afterLeave" ???????????消失后觸發

方法名不可改變,每個方法函數可傳入el值,表示當前動畫對象

例子:

?

 <transition name="fade @before-enter="beforeEnter" ></transition>

?

?

  methods:{beforeEnter(el){         //定義動畫之前的方法,el表示動畫對象
console.log('動畫enter之前');},}

?

?

?

如何animate.css配合用?

直接在transition標簽內調用animate.css的class樣式

<transition enter-active-class="bounceInLeft"   leave-active-class="bounceOutRight"><p v-show="show" class="animated"></p>   //調用animated</transition>

?

?

當一個transition內有多個元素需要使用動畫時,使用transition-group并且使用?:key 標注順序

?

例子一:

    <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight"><p v-show="show" class="animated" :key="1"></p><p v-show="show" class="animated" :key="2"></p></transition-group>

?

例子二:

<transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight"><p v-show="show" class="animated" v-for="(val,index) in lists" :key="index">{{val}}</p></transition-group>

?

10、關于路由

基本使用:

1. ?布局

<router-link to="/home">主頁</router-link>      //不再使用a標簽<router-view></router-view>

?

2. 路由具體寫法

//聲明各個組件var Home={template:'<h3>我是主頁</h3>'};var News={template:'<h3>我是新聞</h3>'};//配置路由對應的組件

const routes=[{path:'/home', componet:Home},{path:'/news', componet:News},];//生成路由實例

const router=new VueRouter({routes                    //相當于routes :routes

});//最后掛到vue上new Vue({router,                     //相當于 router:router
el:'#box'});

?

3. 重定向redirect

之前 ?router.rediect ?廢棄了

{path:'*', redirect:'/home'}             //  *表示任何一個路由鏈接,當找不到路由的情況下也會跳轉到這個位置

?

?

路由嵌套 : children

<router-link to="/user/username">跳轉到子路由</router-link>

const routes=[                     //配置路由對應的組件
{path:'/home', component:Home},{path:'/user',component:User,children:[                     //寫在嵌套的路由里面,使用children
{path:'username', component:UserDetail}]},{path:'*', redirect:'/home'}              //404錯誤默認跳轉

];

?

路由之間的數據攜帶:$route.params

<router-link to="/user/strive/age/10">Strive</router-link>   //注意鏈接{path:':username/age/:age', component:UserDetail} //使用:表示攜帶數據<div>{{$route.params}}</div>   //頁面展示該路由攜帶的數據

?

?

路由實例方法: ?表現為是否產生歷史記錄

router.push({path:'home'});   //直接添加一個路由,表現切換路由,本質往歷史記錄里面添加一個

router.replace({path:'news'})          //替換路由,不會往歷史記錄里面添加

例子:methods:{push(){    router.push({path:'home'});      },replace(){  router.replace({path:'user'});   }}

?

給路由切換添加動畫:使用animate.css

直接將 <router-view></router-view>放在transition 標簽內

例子:

<transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight"><router-view></router-view></transition>

?

11、關于腳手架

添加路由命令:npm install vue-router --save

main.js文件內發生變化,本質上沒有區別,其他都一樣寫法

?之前:

new Vue({el: '#app',components:{App}})

?

現在:

new Vue({el: '#app',render: h => h(App)})

?

vue-loader里面為路由添加動畫

1、直接在index.html頁面引入

2、main.js頂部引入,直接打包成一個文件

注意:需要另外按照style-loader ?css-loader兩個模塊

命令行:npm install style-loader css-loader

并在webpack.config.js文件中配置

   {test: /\.css$/,loader: 'style!css'                 //順序定死的
}

?

例子:

?

import './assets/css/animate.css';

?

?

?

?

12、關于與后臺的數據交互

推薦使用axios

vue-resourse使用方式完全一樣

命令行安裝:npm install axios --save-dev

頁面引入: ?import axios from “axios”

轉載于:https://www.cnblogs.com/zhengweijie/p/6906119.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541314.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541314.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541314.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NABARD的完整形式是什么?

NABARD&#xff1a;國家農業和農村發展銀行 (NABARD: National Bank for Agriculture and Rural Development) NABARD is an abbreviation of National Bank for Agriculture and Rural Development. NABARD是國家農業和農村發展銀行的縮寫 。 On 12 July 1982, it was establ…

基于opencv+Dlib的面部合成(Face Morph)

引自&#xff1a;http://blog.csdn.net/wangxing233/article/details/51549880 零、前言 前段時間看到文章【1】和【2】&#xff0c;大概了解了面部合成的基本原理。這兩天空下來了&#xff0c;于是參考【3】自己實現了下。雖然【1】和【2】已經講的很清楚了&#xff0c;但是有…

大腦應對危機的模式_危機的完整形式是什么?

大腦應對危機的模式危機&#xff1a;印度信用評級信息服務有限公司 (CRISIL: Credit Rating Information Services of India Limited) CRISIL is an abbreviation of Credit Rating Information Services of India Limited. It is an international analytic company which off…

linux網絡延遲命令,2. Linux使用ping命令查看網絡延遲

ping命令持續發送少量互聯網流量到遠程地址并報告收到回應的總時間。如果流量因為網絡故障或者錯誤配置而被丟棄&#xff0c;它也會報告。ping命令是最基本和初級的診斷網絡問題的工具之一。ping常被用來測試網絡延遲&#xff0c;但是有時ping的延遲并不是網絡引起的&#xff0…

一、簡單工廠模式

# public class Operation //基類{private double _numberA 0;private double _numberB 0;public double NumberA{get{ return _numberA; }set{_numberA value;}}public double NumberB{get{ return _numberB; }set{_numberB value;}}public virtual double GetResult(){d…

軟件生命周期模型及其類型

A life cycle model is also known as a process model. As the name suggests, the software life cycle model (or the software process model) gives us a pictorial representation of the entire software development process. 生命周期模型也稱為過程模型 。 顧名思義&…

linux查看磁盤io帶寬,[Linux] 磁盤IO性能查看和優化以及iostat命令

iostat命令:%user&#xff1a;CPU處在用戶模式下的時間百分比。%nice&#xff1a;CPU處在帶NICE值的用戶模式下的時間百分比。%system&#xff1a;CPU處在系統模式下的時間百分比。%iowait&#xff1a;CPU等待輸入輸出完成時間的百分比。%steal&#xff1a;管理程序維護另一個虛…

Jsoup 數據修改

2019獨角獸企業重金招聘Python工程師標準>>> 1 設置屬性的值 在解析一個Document之后可能想修改其中的某些屬性值&#xff0c;然后再保存到磁盤或都輸出到前臺頁面。 可以使用屬性設置方法 Element.attr(String key, String value), 和 Elements.attr(String key, S…

軟件靜態架構 軟件組件圖_組件圖| 軟件工程

軟件靜態架構 軟件組件圖什么是組件圖&#xff1f; (What is Component Diagram?) A Component Diagram breaks down the real system under development into different heights of working. Every component is reactive for the main aim in the entire system and only re…

如何卸載非linux系統分區,如何卸載Linux系統分區?卸載Linux系統分區的方法-站長資訊中心...

系統為windows xp sp2和redhat as 5雙系統&#xff0c;其中linux系統后安裝的在D盤&#xff0c;華彩軟件站www.huacolor.com小編今天發現硬盤不夠用了&#xff0c;想干掉linux分區&#xff0c;在虛擬機中用linux。就在windows的磁盤管理(命令為:diskmgmt)下刪除linux分區&#…

順序結構復習

復習一些易錯知識點還有習題 目錄 可能不熟悉的知識點 邏輯表達式的求解 if,else的配隊 條件運算符 運算符優先級的問題 switch的使用 goto和if構成的循環 例題講解 1 2 3 4 ?編輯 5 ?編輯 6賦值 ?編輯 7 可能不熟悉的知識點 邏輯表達式的求解 如果…

模板模式(部分方法延遲到子類實現)

項目中&#xff0c;用到了抽象類作為父類&#xff0c;有部分實現。 提供了了模板方法作為子類公共方法&#xff0c;模板方法中調用了抽象類的抽象方法和部分非抽象方法。 執行代碼時&#xff0c;發現模板方法調用了抽象類的抽象方法&#xff0c;當時比較好奇&#xff0c;后來發…

ruby 集合 分組_在Ruby中找到兩個集合之間的區別

ruby 集合 分組Finding differences simply means that finding elements that are uncommon between two sets as well as are only present in the first set. We can find this, with the help of a – operator. You can also consider the objective as to find the uniqu…

怎樣在linux卸載java,卸載linux自帶java,linux自帶java

卸載linux自帶java&#xff0c;linux自帶java第一步&#xff1a;rpm查詢java安裝包名稱[rootlocalhost java]# rpm -qa | grep javajava-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64tzdata-java-2014b-1.el7.noarchpython-javapackages-3.4.1-5.el7.noarchjava-1.7.0-…

Swift iOS : 內存管理

Swift是自動管理內存的。這意味著&#xff0c;你不需要主動釋放內存。 比如Foo內包含的Bar&#xff0c;可以隨同Foo一起被釋放&#xff1a; import UIKit UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {var window : UIWindow?func application(…

python實現接口_Python | 使用類實現接口

python實現接口In this program, we are implementing the concept of Interface using class. Here, Class Shape worked as Interface. In Interface all methods must be non-implemented it must be implemented in child class unlike abstract class, where we can have …

linux lp 打印中文,Linux基礎命令---lp打印文件

lplp指令用來打印文件&#xff0c;也可以修改存在的打印任務。使用該指令可以指定打印的頁碼、副本等。此命令的適用范圍&#xff1a;RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。1、語法lp [ -E ] [ -U username ] [ -c ] [ -d destination[/instance] ] [ -h…

【轉載】瀏覽器緩存詳解:expires cache-control last-modified

下面的內容展示了一個常見的 Response Headers&#xff0c;這些 Headers 要求客戶端最多緩存 3600 秒&#xff0c;也給出了一個 pub1259380237;gz 的校驗值。 HTTP/1.x 200 OK Transfer-Encoding: chunked Date: Sat, 28 Nov 2009 04:36:25 GMT Server: LiteSpeed Connection: …

ctype函數_PHP ctype_xdigit()函數與示例

ctype函數PHP ctype_xdigit()函數 (PHP ctype_xdigit() function) ctype_xdigit() function is a character type (CType) function in PHP, it is used to check whether a given string contains hexadecimal digits or not. ctype_xdigit()函數是PHP中的字符類型(CType)函數…

linux ldd運行不成功,Linux_Linux:Ldd命令介紹及使用方法,1、首先ldd不是一個可執行程序 - phpStudy...

Linux&#xff1a;Ldd命令介紹及使用方法1、首先ldd不是一個可執行程序&#xff0c;而只是一個shell腳本2、ldd能夠顯示可執行模塊的dependency&#xff0c;其原理是通過設置一系列的環境變量&#xff0c;如下&#xff1a;LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_L…