前端vue技术点干货分享
文章平均质量分 73
以实战经验积累,总结整理;通过书籍各类文章整理,你值得拥有。
余额抵扣
助学金抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
浏览器翻译官~
用 HTML 搭建骨架,CSS 绘制颜值,JavaScript 注入灵魂
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vue知识点整理
1、你了解diff算法吗?如果oldVnode有子节点而VNode没有,则删除el子节点如果oldVnode没有子节点而VNode有,则将VNode的子节点真实化后添加到el如果两者都有子节点,则执行updateChildren函数比较子节点原创 2021-03-16 10:12:12 · 1800 阅读 · 0 评论 -
vue 封装组件时v-model的实现
【代码】vue 封装组件时v-model的实现。原创 2022-11-21 12:30:14 · 411 阅读 · 0 评论 -
vue3入门整理
setup函数,vue3入门知识点整理,ref, reactive, toRef, toRefs, watch, watchEffect等使用案例原创 2022-03-21 14:28:59 · 1578 阅读 · 0 评论 -
说说Vue 3.0中Treeshaking特性?举例说明一下?
一、是什么Tree shaking是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫Dead code elimination简单来讲,就是在保持代码运行结果不变的前提下,去除无用的代码如果把代码打包比作制作蛋糕,传统的方式是把鸡蛋(带壳)全部丢进去搅拌,然后放入烤箱,最后把(没有用的)蛋壳全部挑选并剔除出去而treeshaking则是一开始就把有用的蛋白蛋黄(import)放入搅拌,最后直接作出蛋糕也就是说 ,tree shaking其实是找出使用的代码在Vue2...原创 2021-03-22 15:17:16 · 1051 阅读 · 0 评论 -
Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?
目录开始之前正文一、Options Api二、Composition Api三、对比小结开始之前Composition API可以说是Vue3最大的特点,那么为什么要推出Composition Api,解决了什么问题?通常使用Vue2开发的项目,普遍会存在以下问题: 代码的可读性随着组件变大而变差 每一种代码复用的方式,都存在缺点 TypeScript支持有限 以上通过使用Composition Api都能迎刃而解正文一、Optio.原创 2021-03-22 15:00:04 · 434 阅读 · 0 评论 -
Vue3.0 性能提升主要是通过哪几方面体现的?
一、编译阶段回顾Vue2,我们知道每个组件实例都对应一个watcher实例,它会在组件渲染的过程中把用到的数据property记录为依赖,当依赖发生改变,触发setter,则会通知watcher,从而使关联的组件重新渲染试想一下,一个组件结构如下图<template><divid="content"><pclass="text">静态文本</p><pclass="text">...原创 2021-03-22 14:55:00 · 423 阅读 · 0 评论 -
Vue3.0的设计目标是什么?做了哪些优化?
一、设计目标不以解决实际业务痛点的更新都是耍流氓,下面我们来列举一下Vue3之前我们或许会面临的问题 随着功能的增长,复杂组件的代码变得越来越难以维护 缺少一种比较「干净」的在多个组件之间提取和复用逻辑的机制 类型推断不够友好 bundle的时间太久了 而Vue3经过长达两三年时间的筹备,做了哪些事情?我们从结果反推 更小 更快 TypeScript支持 API设计一致性 提高自身可维护性 开放更多底..原创 2021-03-22 14:48:07 · 544 阅读 · 0 评论 -
Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
目录一、Object.defineProperty小结二、proxy三、总结一、Object.defineProperty定义:Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象为什么能实现响应式通过defineProperty两个属性,get及set get 属性的 getter 函数,当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入 this 对象(由于继承关系,这里的t..原创 2021-03-22 14:40:12 · 592 阅读 · 0 评论 -
组件之间的通信有哪些?
目录一、组件间通信的概念二、组件间通信解决了什么二、组件间通信的分类三、组件间通信的方案props传递数据$emit 触发自定义事件refEventBus或root与listenersprovide 与 injectvuex小结一、组件间通信的概念开始之前,我们把组件间通信这个词进行拆分 组件 通信 都知道组件是vue最强大的功能之一,vue中每一个.vue我们都可以视之为一个组件通信指的是发送者通过某种媒体...原创 2021-03-22 10:03:34 · 544 阅读 · 0 评论 -
SPA(单页应用)首屏加载速度慢怎么解决?
一、什么是首屏加载首屏时间(First Contentful Paint),指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容首屏加载可以说是用户体验中最重要的环节关于计算首屏时间利用performance.timing提供的数据:通过DOMContentLoad或者performance来计算出首屏时间//方案一:document.addEventListener('DOMContentLoaded.原创 2021-03-22 09:59:40 · 1055 阅读 · 0 评论 -
Vue中的$nextTick怎么理解?
一、NextTick是什么官方对其的定义在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM什么意思呢?我们可以理解成,Vue在更新DOM时是异步执行的。当数据发生变化,Vue将开启一个异步更新队列,视图需要等队列中所有数据变化完成之后,再统一进行更新举例一下Html结构<divid="app">{{message}}</div>构建一个vue实例constvm=new...原创 2021-03-19 10:21:21 · 503 阅读 · 0 评论 -
说说你对vue的mixin的理解,有哪些应用场景
一、mixin是什么Mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类Mixin类通常作为功能模块使用,在需要该功能时“混入”,有利于代码复用又避免了多继承的复杂Vue中的mixin先来看一下官方定义mixin(混入),提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。本质其实就是一个js对象,它可以包含我们组件中任意功能选项,如data、components、methods、created、computed等等..原创 2021-03-19 09:59:33 · 565 阅读 · 0 评论 -
说说为什么要在列表组件中写 key,其作用是什么?
一、Key是什么开始之前,我们先还原两个实际工作场景 当我们在使用v-for时,需要给单元加上key <ul><liv-for="iteminitems":key="item.id">...</li></ul> 用+new Date()生成的时间戳作为key,手动强制触发重新渲染 <Comp:key="+newDate()"/>那么这背后的逻辑是什么,key的作用又是什么?一句话来讲...原创 2021-03-18 10:26:15 · 434 阅读 · 0 评论 -
你有写过自定义指令吗?自定义指令的应用场景有哪些?
一、什么是指令开始之前我们先学习一下指令系统这个词指令系统是计算机硬件的语言系统,也叫机器语言,它是系统程序员看到的计算机的主要属性。因此指令系统表征了计算机的基本功能决定了机器所要求的能力在vue中提供了一套为数据驱动视图更为方便的操作,这些操作被称为指令系统我们看到的v-开头的行内属性,都是指令,不同的指令可以完成或实现不同的功能除了核心功能默认内置的指令 (v-model和v-show),Vue也允许注册自定义指令指令使用的几种方式://会实例化一个指令,但这个指令...原创 2021-03-18 10:21:17 · 1189 阅读 · 0 评论 -
vue常用修饰符有哪些,有什么应用场景
一、修饰符是什么在程序世界里,修饰符是用于限定类型以及类型成员的声明的一种符号在Vue中,修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理vue中修饰符分为以下五种: 表单修饰符 事件修饰符 鼠标按键修饰符 键值修饰符 v-bind修饰符 二、修饰符的作用表单修饰符在我们填写表单的时候用得最多的是input标签,指令用得最多的是v-model关于表单的修饰符有如下:原创 2021-03-18 09:48:11 · 748 阅读 · 0 评论 -
Vue2和vue3diff算法
目录一、是什么二、比较方式三、原理分析小结一、是什么diff算法是一种通过同层的树节点进行比较的高效算法其有两个特点: 比较只会在同层级进行, 不会跨层级比较 在diff比较的过程中,循环从两边向中间比较 diff算法的在很多场景下都有应用,在vue中,作用于虚拟dom渲染成真实dom的新旧VNode节点比较二、比较方式diff整体策略为:深度优先,同层比较 比较只会在同层级进行, 不会跨层级比较 比较的过程中,循......原创 2021-03-17 09:55:50 · 1508 阅读 · 0 评论 -
vue之签章拖拽demo
理解:鼠标按下的时候,创建对应的元素,然后把原元素的布局属性给他,然后鼠标移动的尺寸给新建的元素富裕移动直接上代码:<template> <div class="main" id="main"> <div class="tuo tuo1" @mousedown="move"> 1 </div原创 2018-12-18 11:41:03 · 3554 阅读 · 0 评论 -
vue项目中使用pdf.js预览pdf文件
pdf.js官网地址:https://mozilla.github.io/pdf.js/点击下载:然后把需要的文件拿出来,我这边用的是vue-cli3.0,其实就是路径的问题,直接上图这是效果:当然还有各种各样的展示功能,具体可以加微信1049665226...原创 2018-12-20 16:26:27 · 2553 阅读 · 1 评论 -
vue之pdf分页
官网:https://www.npmjs.com/package/vue-pdf其实是对pdf.js进行了再次封装<div class="pdf" v-show="fileType === 'pdf'"> <p class="arrow"> <!-- // 上一页 --> <span @click=&原创 2018-12-20 17:22:34 · 3965 阅读 · 0 评论 -
charles配置代理,配置多个代理
http://m.liulibin.com:8001/ 本地代理http://10.252.62.109:8001接口:例子http://m.liulibin.com:8001/sydc/home/detail?data=disjdsj这时接口也是基于域名的,相当一个域名 配置多个代理首先:配置:...原创 2021-03-02 15:01:06 · 992 阅读 · 0 评论 -
nodemon 基本配置与使用
nodemon 全局的安装:npm install -g nodemon安装完 nodemon 后,就可以用 nodemon 来代替 node 来启动应用odemon 比较流行的原因之一就是它的可配置性比较高,下面是官网给出的配置文件 nodemon.json 的例子,加上我自己了解到的有用的一些配置,开发环境建议可以把每个参数都写上备用,生产环境就把没有必要的参数去掉,有些字段是可以在命令行模式以参数形式给出的,可以通过 -h 查看,下面逐个解释: { "restartabl原创 2021-02-26 14:29:19 · 900 阅读 · 0 评论 -
Hanzi Writer
1、官方文档:https://hanziwriter.org/cn/docs.html/2、获取汉子的数据的接口https://cdn.jsdelivr.net/npm/hanzi-writer-data@2.0/牛.json3、文档的apiinit() { const { canvasWidth, canvasShowCharacter, canvasShowHintAfterMisses, ca.原创 2021-02-25 14:29:13 · 2947 阅读 · 0 评论 -
彻底理解this指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题。 为什么要学习this?如果你学过面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不用看这篇文章,当然原创 2020-12-22 16:24:59 · 426 阅读 · 0 评论 -
最全的图片懒加载的实现
懒加载(Lazy-Load)。它是针对图片加载时机的优化:在一些图片量比较大的网站(比如电商网站首页,或者团购网站、小游戏首页等),如果我们尝试在用户打开页面的时候,就把所有的图片资源加载完毕,那么很可能会造成白屏、卡顿等现象,因为图片真的太多了,一口气处理这么多任务,浏览器做不到啊!目的懒加载 的目的是当页面的图片进入到用户的可视范围之内在加载图片的一种优化方式。可以增加首屏加载的速度,毕竟,用户点开页面的瞬间,呈现给他的只是首屏,我们只要把首屏的资源图片加载处理就可以了,至于下面的图片,当用原创 2020-12-21 11:09:03 · 484 阅读 · 0 评论 -
无缝向上/向右滚动
<template> <div> <div class="bubble" id="bubble"> <div id="topBub"> <div class="item">11111</div> <div class="item">22222</div> <div class="item">33333</div> .原创 2020-12-09 15:29:05 · 384 阅读 · 0 评论 -
倒计时,每周、每天、具体时间点
直接上代码:<template> <div> {{ data }} </div></template><script>import config from "./config";export default { data: () => { return { data: "", timer: {}, }; }, props: config, mounted(原创 2020-12-14 15:07:27 · 612 阅读 · 0 评论 -
详谈vue生命周期
生命周期:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyedbeforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性created:实例已经在内存中创建OK,此时 data 和 methods 已经创建OK,此时还没有开始 编译模板beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中mounted:此时,.原创 2020-09-17 11:06:12 · 396 阅读 · 0 评论 -
vue-cli3.0设置页面icon图标不更新
html部分代码:vue.config.js:module.exports = { pwa:{ iconPaths: { favicon32 : 'favicon.ico', favicon16 : 'favicon.ico', appleTouchIcon: 'favicon.ico', maskIcon : 'favicon.ico', msTileImage : 'favicon.ico原创 2020-09-11 14:01:20 · 929 阅读 · 0 评论 -
element懒加载树形结构,实现单选、父子不互相关联的多选,默认选中
1、父子不互相关联的多选这个只需要改变check-strictly2、默认选中有一个属性是setCheckedNodesthis.$refs.treeOrg.setCheckedNodes([{id:1111}]);注意:这个时候和懒加载一块使用,需要再resolve之后使用demo:3、实现单选<el-tree ref="tree" node-key="id" :props="props" @check-change="orgCheckChange"...原创 2020-09-08 14:38:45 · 973 阅读 · 0 评论 -
浏览器输入URL,按下回车经历了哪些流程?
经历流程:浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址; 解析出IP地址后,根据IP地址和默认端口,和服务器建立TCP连接 浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发给服务器; 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器 释放TCP连接,也就是断开TCP连接(四次挥手) 浏览器将该html文本并显示内容三次握手:第一次握手:客户端发送第一个包,其中SYN标志位为1, ACK.原创 2020-09-02 16:03:59 · 516 阅读 · 0 评论 -
ondrop事件无效,释放鼠标键时触发此事件无效
注意:在拖拽事件中遇到目标元素ondrop事件没有效果,需要在目标元素上写ondragover事件,阻止ondragover的默认行为,然后ondrop事件才起作用拖拽的api:在拖动目标上触发事件(源元素): ondragstart- 用户开始拖动元素时触发 ondrag - 元素正在拖动时触发 ondragend- 用户完成元素拖动后触发 释放目标时触发的事件: ondragenter- 当被鼠标拖动的对象进入其容器范围内时触发此事件 ondragove...原创 2020-08-14 14:45:02 · 2545 阅读 · 1 评论 -
js数据类型
ECMA变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。基本数据类型:Undefined、Null、Boolean、Number、String基本数据类型是按值访问的,因为可以操作保存在变量中实际的值。引用类型的值:保存在内存中的对象与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。...原创 2020-08-14 10:53:54 · 196 阅读 · 0 评论 -
SPA单页面应用和SSR服务端渲染的区别
一、什么是SPA单页面应用概念:整个WEB项目只有一个页面,使用路由机制进行组件之间的切换优点:客户端渲染、数据传输量小、减少服务器端压力、交互/响应快、前后端分离缺点:首屏加载慢,对SEO不友好,不利于百度,360等搜索引擎收录快照二、什么是服务端渲染SSR概念:将组件或页面通过服务器端生成HTML字符串,再发送到浏览器端渲染优点:对于SEO友好,首屏加载快缺点:页面重复加载次数高,开发效率低,数据传输量大,服务器压力大三、适合场景SPA:对项目性能要求高、页面加载速度原创 2020-08-05 16:19:32 · 1133 阅读 · 0 评论 -
vue 配置全局 路径
const path = require('path')const resolve = dir => path.join(__dirname, dir)module.exports = { devServer: { port: 8400, }, chainWebpack: config => { config.resolve.alias .set('assets', resolve('src/assets')) config.resolve.原创 2020-07-03 13:54:00 · 2831 阅读 · 0 评论 -
vue-axios post请求content-type:application/x-www-form-urlencoded
axios的post请求,默认是application/json提交JSON格式的数据实际我们后端要求的 'Content-Type': 'application/x-www-form-urlencoded'这时需要配置content-type:axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';这里使用了qs插件:简单来说,qs 是一个增加了一些安全性的查询字符串解析和序.原创 2020-06-29 14:09:23 · 5673 阅读 · 0 评论 -
关于VUE项目中报Error: Avoided redundant navigation to current location: 的错
在VUE中路由遇到Error: Avoided redundant navigation to current location:报错显示是路由重复,在你引入VueRouter的时候再加上一句话:const originalPush = VueRouter.prototype.pushVueRouter.prototype.push = function push(location) { return originalPush.call(this, location).catch(err =&原创 2020-06-28 15:24:19 · 3619 阅读 · 0 评论 -
vue之子组件监听父组件传值
在工作过程中,经常碰见自己封装的组件需要监听父组件传过来的值,很有可能是在子组件需要对值进行处理,有不少同学不知道如何处理这个值,以下是简单demo,仅供参考。。。父组件:<template> <div> <el-button type="success" @click="handelClick">点击</el-button> <modalCom :isDisplay="isDisplay" @close="close" :原创 2020-06-23 13:36:35 · 3158 阅读 · 0 评论 -
vue中实现换肤效果,运用less很简单
demo:实现流程:基于给页面最外侧标签设置class类名,来改变,通过函数参数的传递实现,多定义类名,赋值给需要的标签1、vue-cli安装 less2、新建common.less.theme(@background: #2789ff, @homebg: rgba(37, 37, 37, 1.00), @fontcolor: #fff, @hoverbg: #b9bec9, @activebg: #5193e2, @homeli1: rgba(47, 42, 65, 0...原创 2020-06-17 16:38:59 · 1393 阅读 · 0 评论 -
vue上传pdf文件,显示缩略图,且预览功能
效果:这里要借助vue-pdf插件去展示缩略图:安装方法npm install --save vue-pdfhtml片段: <div class="wrap"> <input type="file" @change="fileChange" multiple /> <div v-for="(item, index) of pdf" :key="index" @click=..原创 2020-06-12 13:53:35 · 7616 阅读 · 1 评论 -
vue-cli部署打包后的dist
安装express1、安装node2、安装express:npm install -g express3、安装npm install -g express-generator4、创建一个express工程:express helloworld5、进入项目主目录:cd helloworld6、安装必备包:npm install7、启动express程序:npm start...原创 2018-08-30 17:47:47 · 8415 阅读 · 0 评论
分享