IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue知识要点 -> 正文阅读

[JavaScript知识库]Vue知识要点

vue格式
?? ?<div id="app">
?? ??? ?<p>{{ msg }}</p>
?? ?</div>
?? ?<script>
? ? ? ? var vm = new Vue({
? ? ? ? ? ? el: '',
? ? ? ? ? ? data: {
? ? ? ? ? ? ? ? msg: ''
? ? ? ? ? ? }
? ? ? ? })
?? ?</script>

事件修饰符
?? ?.stop阻止冒泡
?? ?.prevent 阻止默认行为(跳转)
?? ?.capture 实现捕获触发事件的机制
?? ?.self只有事件发生在自身元素上才触发 并不会阻止其他元素的冒泡

数据双向绑定
vue数据双向绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的,也就是说数据和视图同步,数据发生变化,视图也跟着变化,视图变化,数据也随着发生变化
其核心是Object.defineProperty()
Object.defineProperty(obj, prop, descriptor) ,这个语法内有三个参数,分别为 obj (要定义其上属性的对象) prop (要定义或修改的属性) descriptor (具体的改变方法)

全局过滤器Vue.filter()
过滤器用作一些常见的文本格式化,用在插值表达式,全局的过滤器,进行时间的格式化
?? ?<p>{{ msg | msgFormat(arg)}}</p>
?? ?Vue.filter('msgFormat', function(msg, arg) {
?? ??? ?return msg.replace(/xx/g, arg)
?? ?})
msg | msgFormat 固定格式
msgFormat 过滤器名
arg参数

使用 Vue.directive() 定义全局的指令
// 参数1:指令名称 定义的时候不加v- 调用的时候加v-(文本框中)
// 参数2:一个对象,有一些指令相关的函数,可以在特定的阶段,执行相关的操作
? ? Vue.directive('focus', {
? ? ? ? bind: function (el, binding) {
? ? ? ? ?? ?// 每当指令绑定在元素上时,就会立即执行这个函数,只执行一次
? ? ? ? ? ? // 这个el以一个原生的js对象
? ? ? ? ? ? // 元素刚绑定指令的时候,还没有插入到DOM中去,这时候调用focus没有用
? ? ? ? ? ? // el.focus();失效

? ? ? ? ? ? // 和样式相关的操作放在bind中
? ? ? ? ? ? el.style.color = binding.value
? ? ? ? },
? ? ? ? inserted: function (el) {
? ? ? ? ?? ?// inserted表示元素插入到 DOM中的时候,会执行此函数(触发一次)
? ? ? ? ?? ?el.focus();
? ? ? ? ?? ?// 和js行为相关的操作放在inserted中
? ? ? ? },
? ? ? ? updated: function (el) {
? ? ? ? ?? ?// 当VNode更新的时候,会执行updated,可能会触发多次
? ? ?? ?}
? ? })

// 自定义全局按键修饰符
?? ?Vue.config.keyCodes.f2 = 113;

私有过滤器和私有指令
?? ?var vm = new Vue({
?? ??? ?el: '',
?? ??? ?data: {},
?? ??? ?methods: {},
?? ??? ?filters: {
?? ??? ??? ?// 如果私有过滤器和全局过滤器名称一致,优先调用私有过滤器
?? ??? ??? ?dateFormat: function(){}
?? ??? ?},
?? ??? ?// 定义私有指令fontsize
?? ??? ?directives: {
?? ??? ??? ?'fontsize': function(){}
?? ??? ?}
?? ?})

Vue生命周期
?? ?var vm = new Vue({
?? ??? ?el: '',
?? ??? ?data: {},
?? ??? ?methods: {},
?? ??? ?// 创建阶段四个函数
?? ??? ?beforeCreate() {
?? ??? ??? ?// 第一个周期函数,实例完全被创建前执行它
?? ??? ??? ?// data和methods中的数据还没有被初始化,el也没有
?? ??? ??? ?this.方法不可以
?? ??? ??? ?不能获得DOM节点。
?? ??? ?}
?? ??? ?created() {
?? ??? ??? ?// 在created中,data和methods中的数据都已初始化,el还是没有
?? ??? ??? ?this.方法可以
?? ??? ??? ?不能获取DOM元素
?? ??? ?}
?? ??? ?beforeMount() {
?? ??? ??? ?完成了 el 和 data 初始化
?? ??? ??? ?表示模板已经在内存中编译完成,但尚未把模板挂载到页面中
?? ??? ??? ?不能获取DOM元素
?? ??? ?}
?? ??? ?mounted() {
?? ??? ??? ?模板已经挂载到页面中,可以看到渲染好的页面
?? ??? ??? ?可以获取DOM元素
?? ??? ?}
?? ??? ?// 运行阶段
?? ??? ?beforeUpdate() {
?? ??? ??? ?页面中的数据还是旧的,data中的数据是最新的,页面和data数据还未同步
?? ??? ?}
?? ??? ?updated() {
?? ??? ??? ?页面和data中数据同步,都是最新
?? ??? ?}
?? ??? ?// 销魂阶段(页面关闭)
?? ??? ?beforeDestory() {
?? ??? ??? ?实例身上所有的data和methods,以及过滤器、指令都处于可用状态,没有真正销毁
?? ??? ?}
?? ??? ?destoryed() {
?? ??? ??? ?实例完全销毁,实例中的数据、方法、过滤器、指令都已不可用
?? ??? ?}
?? ?})

vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应,也就是说,jQuery中ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁。
?? ?this.$http.get('/someUrl', [options]).then(function(response){
? ? ?? ?// 响应成功回调
? ? }, function(response){
? ? ? ? // 响应错误回调
? ? });
? ? 或者
? ? Vue.http.get('/someUrl', [options]).then((response) => {
? ? ? ?? ?// 成功回调函数
? ? }).catch((error) => {
? ? ? ??? ?// 错误回调函数,会在整个请求过程中监听错误
? ? })

vue动画
?? ?.v-enter,
? ? .v-leave-to {
? ? ?? ?opacity: 0;
? ? ?? ?transform: translateX(150px);
? ? }
? ? /* 入场动画 */
? ? .v-enter-active,
? ? /* 离场动画 */
? ? .v-leave-active {
? ? ?? ?transition: all .5s ease;
? ? }
?? ?<!-- 使用transition元素,把需要被动画控制的元素包裹起来 -->
? ? <transition>
? ? ?? ?<p v-if="flag">哈哈哈哈哈哈</p>
? ? </transition>
还有钩子函数半场动画。。。
? ??
组件:组件的出现,就是为了拆分Vue实例的代码量,能够让我们以不同的组件,来划分不同的
功能模块,我们需要什么功能,就可以去调用对应的组件即可。
模块化(Node.js): 是从代码逻辑的角度进行划分的。方便代码分层开发,保证每个功能模块的职能单一
组件化(Vue.js): 是从UI界面的角度进行划分。前端的组件化,方便UI组件的重用
组件创建
?? ?<div id="app">
?? ??? ?<!-- 把组件的名称以HTML标签的形式,引入到页面中 -->
?? ??? ?<!-- 驼峰命名就取消大小写,中间加 - -->
? ? ? ? <!-- <my-comp></my-comp> -->
? ? ? ? // 全局组件
?? ??? ?<mycomp></mycomp>
?? ??? ?// 私有组件
?? ??? ?<mycomp1></mycomp1>
?? ?</div>

?? ?<!-- 在被控制#app外面,使用template元素,定义组件的HTML模板结构 -->
?? ?<template id="temp">
?? ??? ?<div>
?? ? ? ? ? ?<h3>通过template元素,在外部定义的组件。有代码的提示和高亮</h3>
?? ? ? ?</div>
?? ?</template>
?? ?// 私有组件
?? ?<template id="temp1">
?? ?</template>
?? ?
?? ?<script>
?? ??? ?// 全局组件
?? ??? ?Vue.component('mycomp', {
?? ??? ??? ?template: '#temp'
?? ??? ?})
?? ??? ?var vm = new Vue({
?? ??? ??? ?el: '',
?? ??? ??? ?data: {},
?? ??? ??? ?methods: {},
?? ??? ??? ?// 在实例内部定义私有组件
?? ??? ??? ?components: {
?? ??? ??? ??? ?mycomp1: {
?? ??? ??? ??? ??? ?template: '#temp1'?
?? ??? ??? ??? ?}
?? ??? ??? ?}?? ??? ?
?? ??? ?})
?? ?</script>

组件中的data
?? ?Vue.component('comp', {
? ? ?? ?template: '<h1>这是全局组件---{{msg}}</h1>',
? ? ?? ?// 组件中的data 必须是一个方法,返回一个对象
? ? ?? ?data() {
? ? ?? ??? ?return {
? ? ?? ??? ??? ?msg: '这是组件中的data数据'
? ? ?? ??? ?}
? ? ?? ?}
? ? })
?? ?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:28:04  更:2021-08-22 13:29:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:50:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码