<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> {{dt | dateFormat('') }} </div> <div id="app2"> {{dt | dateFormat('') }} </div> <script> //全局過濾器,進行時間的格式化 Vue.filter('dateFormat', function (dateSter, pattern) { //根據給定的時間字符串,得到特定的時間 var dt = new Date(dateSter) //yyyy-mm-dd var y = dt.getFullYear() var m = dt.getMonth() + 1 var d = dt.getDate() //return y + '-' + m + '-' + d if (pattern.toLowerCase() === 'yyyy-mm-dd') { return `${y}-${m}-${d}` } else { var hh = dt.getHours() var mm = dt.getMinutes() var ss = dt.getSeconds() return `${y}-${m}-${d} ${hh}:${mm}:${ss}` } }) var vm = new Vue({ el: '#app', data: { dt: new Date() }, }) var vm2 = new Vue({ el: '#app2', data: { dt: new Date() }, methods: { show(){ console.log('執行show方法') } }, beforeCreate() { //這是遇到的第一個生命周期函數,表示實例完全被創建出來之前,會執行它 //注意:在beforeCreate 生命周期函數執行的時候, data 和 methods 中的 數據都還沒有初始化 console.log(this.dt); }, created() { //這是遇到的第二個生命周期函數 //在created 中 data 和 methods 都已初始化好了 //如果要調用 methods 中的方法, 或者操作 data 中的數據,最早,只能在 created 中操作 console.log(this.dt); }, beforeMount() { //這是遇到第三個生命周期函數,表示 模板已經在內存中編輯完成了,但是尚未把模板渲染到頁面中 //在beforeMount 執行的時候,頁面中的元素,還沒有被真正替換過來,只是之前寫的一些模板字符串 console.log(this.dt); }, mounted() { //這是遇到的第四個生命周期函數,表示,內存中的模板,已經真實的掛載到了頁面中,用戶可以看到渲染好的頁面 //注意:mounted 是 實例創建的最后一個生命周期函數, 執行 mounted 就表示 , 實例已經被完全創建好了 console.log(this.dt); }, beforeUpdate() { //這個時候,表示,我們的界面還沒有被更新 數據被更新 //當執行beforeUpdate的時候,頁面中的顯示數據 還是舊的 此時 data 中的數據是最新的, 頁面尚未和最新的數據同步 console.log(this.dt); }, updated() { //updated 事件 執行的時候 , 頁面和data的數據已經保持同步了 都是最新的數據 console.log(this.dt); }, beforeDestroy() { //當執行 beforeDestroy 鈎子函數的時候,vue 實例就已經從運行階段進入了銷毀的階段 //實例身上所有的data和所有的methods,以及過濾器 指令。。。。都處於可用狀態,此時,還有沒真正執行銷毀的過程 }, destroyed() { //組件已經完全銷毀,此時 組件中所有的 數據,方法,指令,過濾器.....都已近不可用了 }, filters: { //私有過濾器有兩個條件【過濾器名稱 和 處理函數】 //過濾器調用的時候,采用的是就近原則,如果私有過濾器和全局過濾器名稱一致了,這時候優先調用私有過濾器 dateFormat: function (dateSter, pattern = '') { var dt = new Date(dateSter) var y = dt.getFullYear()//年 var m = (dt.getMonth() + 1).toString().padStart(2,'0')//月 var d = dt.getDate().toString().padStart(2,'0')//日 //return y + '-' + m + '-' + d if (pattern.toLowerCase() === 'yyyy-mm-dd') { return `${y}-${m}-${d}` } else { var hh = dt.getHours().toString().padStart(2,'0')//時 var mm = dt.getMinutes().toString().padStart(2,'0')//分 var ss = dt.getSeconds().toString().padStart(2,'0')//秒 return `${y}-${m}-${d} ${hh}:${mm}:${ss}` } } } }) </script> </body> </html>