Vue基本用法:过滤器、生命周期钩子函数和利用webpack 生成项目

vue

过滤器

过滤器分为局部过滤器和全局过滤器。局部过滤器只能在当前组件使用,全局过滤器能在任意地方使用

局部过滤器示例代码:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<div id="app">

<App />

</div>

</body>

<script src="./vue.js"></script>

<script>

// 局部过滤器只能在当前组件内使用

let App = {

data(){

return {

"msg": "Hello World"

}

},

template:`

<div>我是App组件。过滤器后的数据:{{ msg | myReverse }} </div>

`,

// filters 中注册过滤器

filters:{

// 在组件内部注册过滤器,局部过滤器;

/*

声明过滤器的语法如下:

'过滤器的名字': function(val){}

使用过滤器的语法如下:利用 管道符 |

要进行过滤的val | '过滤器的名字'

*/

myReverse: function (val) {

console.log(val);

return val.split('').reverse().join('')

}

}

}

new Vue({

el: "#app",

data(){

return {

}

},

components:{

App

}

})

</script>

</html>

浏览器效果示例:

带参数的过滤器:

示例代码:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<div id="app">

<App />

</div>

</body>

<script src="./vue.js"></script>

<!-- 引入 moment.js 这个插件 -->

<script src="./moment.js"></script>

<script>

let App = {

data(){

return {

ctm: new Date()

}

},

// 带参数的过滤器

template:`

<div>时间: {{ ctm | myTime('YYYY-MM-DD') }} </div>

`,

// filters 中注册过滤器

filters:{

myTime: function (val, formatStr) {

return moment(val).format(formatStr)

}

}

}

new Vue({

el: "#app",

data(){

return {

}

},

components:{

App

}

})

</script>

</html>

浏览器效果示例:

全局过滤器的声明语法:

Vue.filter('过滤器的名字', function(参数){})

// 全局过滤器的使用方法和局部过滤器是一样的 

示例代码:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<div id="app">

<App />

</div>

</body>

<script src="./vue.js"></script>

<!-- 引入 moment.js 这个插件 -->

<script src="./moment.js"></script>

<script>

// 全局过滤器

Vue.filter('myTime', function (val, formatStr) {

return moment(val).format(formatStr)

})

let App = {

data(){

return {

ctm: new Date()

}

},

// 带参数的过滤器

template:`

<div>时间: {{ ctm | myTime('YYYY-MM-DD') }} </div>

`,

}

new Vue({

el: "#app",

data(){

return {

}

},

components:{

App

}

})

</script>

</html>

生命周期钩子函数:

部分钩子函数如下所求:

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

activated

deactivated

beforeDestroy

destroyed

keep-alive组件:

keep-alive 组件是Vue提供的内置组件,主要作用是把组件缓存起来,并保存组件原先的状态

示例代码:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<div id="app">

<App />

</div>

</body>

<script src="./vue.js"></script>

<script>

let Test = {

data(){

return {

msg: "NEOOOOOO"

}

},

template:`

<div id='test'>

我是Test 组件

<h2>{{ msg }}</h2>

<button @click='change'>更新数据</button>

</div>

`,

methods:{

change(){

this.msg = "neo呀"

}

},

// 钩子函数

beforeCreate(){

// 组件创建之前

console.log('组件创建之前:',this); // VueComponent

console.log('组件创建之前:',this.msg); // undefined

},

created(){

// 组件创建之后(此时 DOM 还没有渲染,即 created的执行发生在DOM渲染之前); 可以在这个方法中发送 ajax,即通过 ajax 获取到数据,然后再渲染 DOM

console.log('组件创建之后:',this); // VueComponent

console.log('组件创建之后:',this.msg); // NEOOOOOO

// ***** 最重要的一个钩子函数 ******

},

// created方法执行之后, Test 组件还没有被渲染到 App组件中 ,App组件也还没被渲染到实例中,即还没有挂载进去

// mounted:挂载, 把组件中所有template 模板渲染到模板上(DOM渲染)

beforeMount(){

// 装载数据到 DOM之前调用

console.log("挂载之前:", document.getElementById('app'));

/*

<div >

<app></app>

</div>

*/

},

mounted(){

// 装载数据到DOM之后调用, 可以获取到真实存在的DOM元素, Vue 操作以后的 DOM

// 这个地方可以操作DOM

console.log("挂载之后:", document.getElementById('app'));

/*

<div >

<div>

<div >

我是Test 组件

<h2>NEOOOOOO</h2>

<button>更新数据</button>

</div>

</div>

</div>

*/

// mounted 也是一个比较重要的方法

},

beforeUpdate(){

// 在更新数据之前调用此钩子;应用:获取原始的DOM

console.log(document.getElementById('app').innerHTML);

/*

<div>

<div >

我是Test 组件

<h2>NEOOOOOO</h2>

<button>更新数据</button>

</div>

</div>

*/

},

updated(){

// 在更新数据之后调用此钩子;应用:获取最新的DOM

console.log(document.getElementById('app').innerHTML);

/*

<div>

<div >

我是Test 组件

<h2>neo呀</h2>

<button>更新数据</button>

</div>

</div>

*/

},

beforeDestroy(){

// 组件销毁之前 (例如用v-if, 不能用v-show,v-if 才是真正的销毁)

console.log('beforeDestory');

},

destroyed(){

// 组件销毁之后

console.log('destroy');

// 定时器的销毁要在此方法中进行 (如果开了定时器,一定记得要销毁定时器)

},

// 销毁、创建DOM很消耗性能

// activated 和 deactivated 需要借助 vue 的内置组件 keep-alive;

// keep-alive 的作用: 能让当前组件缓存起来,并保存组件原来的状态;如 把 把 Test 组件放到 <keep-alive></keep-alive> 中

activated(){

// 激活

console.log('组件被激活了');

},

deactivated(){

// 停用

console.log('组件被停用了');

}

}

let App = {

data(){

return {

isShow: true

}

},

// Test组件放在 keep-alive 中就会被缓存起来

template:`

<div>

<keep-alive>

<Test v-if="isShow" />

</keep-alive>

<button @click="clickHandler">添加移除Test组件</button>

</div>

`,

methods:{

clickHandler(){

this.isShow = !this.isShow;

}

},

components:{

Test

}

}

new Vue({

el: '#app',

data(){

return {

}

},

components:{

App

}

})

</script>

</html>

钩子函数官方文档:

https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90

利用webpack 生成项目:

1、生成项目

vue init webpack 项目名

2、安装依赖

npm install

3、安装项目依赖包,如 element-ui。 先 cd 到项目,再执行下面的命令:

npm i element-ui -S

4、 运行项目。先 cd 到项目,再执行下面的命令:

npm start

npm run dev

webpack 文档:

https://webpack.docschina.org/concepts/

以上是 Vue基本用法:过滤器、生命周期钩子函数和利用webpack 生成项目 的全部内容, 来源链接: utcz.com/z/375922.html

回到顶部