自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (1)
  • 收藏
  • 关注

原创 el-input 输入框的正则

输入框正则

2022-07-15 14:01:08 1742 1

原创 项目中如何修改UI框架的默认样式

我们在使用elementUI时,只能使用框架自带的样式,普通的修改方法并不能实现,我整理了下面几种修改样式的方法。1. 行内修改样式通过在行内设置style修改,用于局部组件块<el-button style="color: white;margin-top:20px;>默认按钮</el-button>2. scoped问题这里因为给 style 设置了 scoped ,所以无法修改样式,可以去掉 scoped 。注意:此时该样式会污染全局样式,可以把它放在公共的

2021-06-10 19:23:02 1445

原创 小程序优购商城项目讲解

一. 项目搭建1. 新建小程序项目通过微信开发者工具创建项目,填入appid,创建完成后,如图:2.搭建目录结构目录结构划分如下:目录名 作用 styles 存放公共样式 components 存放组件 lib 第三方库 utils 工具类 request 自用接口帮助库 项目目录结构图如下:3. 清理无用文件将logs文件夹删除,并从app.json中移除 将index/index.js中Page对象内容..

2021-05-19 08:55:07 1768

原创 input模糊搜索

对input框进行模糊搜索。

2023-07-18 13:51:46 221

原创 Element message同时出现多个提示框,通过css样式解决

Element message同时出现多个提示框,通过css样式解决/* message在同一位置弹出 *//* reset elementUI message */.el-message { top: 20px !important;}.el-message:not(:last-child) { visibility: hidden;}

2021-11-25 10:57:33 710

原创 从输入url到页面加载完成发生了什么

简单地分为以下几步浏览器的地址栏输入URL并按下回车。浏览器查找当前URL是否存在缓存,并比较缓存是否过期。DNS 解析 URL 对应的 IP。根据 IP 建立 TCP连接(三次握手)。HTTP发起请求。服务器处理请求,浏览器接收HTTP响应。...

2021-06-22 21:41:54 180 2

原创 v-if与v-show的区别

1. 相同点都可以动态控制着dom元素的显示和隐藏。2. 区别v-if :控制DOM元素的显示隐藏是 将DOM元素整个添加或者删除。v-show : 控制DOM的显示和隐藏是 为DOM元素添加css的样式 display , 设置 node 或者是 block``, DOM元素还是存在的。2.1 性能对比v-if 有更高的切换消耗。v-show 有更高的初始渲染消耗。2.2 使用场景v-if 适合运营条件不大可能改变的场景下;v-show 适合频繁切换;...

2021-06-21 09:05:13 787 1

原创 Vue的双向数据绑定原理

vue.js是采用 数据劫持 结合 发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫持各个属性的 setter ,getter ,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。具体步骤需要 observer 的数据对象进行 递归遍历,包括子属性对象的属性,都加上 setter 和 getter 这样的话,给这个对象的某个属性 赋值,就会触发 setter ,那么就能监听到了数据变化。...

2021-06-16 19:02:21 468

原创 call,apply,bind三者用法和区别

定义:apply():调用一个对象的一个方法,用另一个对象替换当前对象,例如:B.apply(A,arguments);即A对象应用B对象的方法。call():调用一个对象的一个方法,用另一个对象替换当前对象,例如:B.call(A,args1,args2,···);即A对象调用用B对象的方法。bind()bind()方法会创建一个函数的实例,其 this 值会被绑定到传给 bind()函数的值。意思就是 bind() 会返回一个新函数。例如:window.color = "red"; va

2021-06-16 10:59:39 549

原创 iframe的优缺点

iframe 基本知识 标签规定一个内联框架。一个内联框架被用来在当前 HTML 文档中嵌入另一个文档。### 可选属性![在这里插入图片描述](https://img-blog.csdnimg.cn/20210611150114780.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NDE2NzMxMw==,size_16

2021-06-11 15:05:28 95

原创 elemeng-ui 中el-form 表单如何校验

elemeng-ui 中el-form 表单如何校验在面对项目中大量的表单提交以及规则验证,Element-ui Form 表单是我们最好的帮手。表单校验是注册环节中必不可少的操作,表单校验可以提醒用户填写数据规则以确保用户提交数据的有效性,也可以防止用户失误操作、填写错误数据或者恶意提交数据而占用服务器资源。ElementUI 校验规则ElementUI封装了组件el-form来收集、校验和提交数据,其中的rules属性就是用来做数据校验的。ElementUI提供了一些常用的表单验证规则,我

2021-06-07 20:03:20 1427 2

原创 vue打包上线流程,Nginx的安装

简单介绍Nginx 是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器。Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。安装步骤下载Nginx下载地址:http://nginx.org/en/download.html (Nginx官网)2、下载之后,解压到指定的目录,就可以看到以下的目录3、控制台(CMD)切换到Nginx目录下,输入start nginx ,然后

2021-06-07 11:21:05 223 2

原创 vue-router 鉴权 守卫

vue是单页面应用,各个页面的跳转需要路由支持,当然也可以通过v-if/v-show 来实现,但是实际开发中不现实。为一个项目做鉴权就可以用解决方案去vuex里面读取状态,根据状态来调用 vue-router的路由守卫来实现鉴权路由跳转。正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的,或者组件级的。记住参数或查询的改变并不会触发进入/离开的导航守卫。一、全局路由守卫所谓全局路由守卫,就是小区大门,整个小区就

2021-06-06 20:42:59 354 2

原创 webpack打包优化

前言原因:项目越做越大,依赖包越来越多,打包文件太大单页面应用首页白屏时间长,用户体验差目的:减少打包后的文件大小首页按需引入文件优化 webpack 打包时间一. 打包原理打包过程(1)读取入口文件,如项目中的main.js。(2)由入口文件,解析模块所依赖的文件或包,生成ATS树。(3)对模块代码进行处理:根据@babel工具转换ATS树(es6转es5、polyfill等)。(4)递归所有模块。(5)生成浏览器可运行的代码。打包优化在项目开始时配置 webp

2021-06-06 19:00:35 459 7

原创 vant-ui 按需引入

前言我们使用ui组件库的时候,分为全局导入和按需导入,全局导入使用起来更方便,但是在实际开发中,为了提升性能,都会需要我们使用按需导入。1. 安装通过 npm 安装npm install vant -S通过 yarn 安装yarn add vant -s2. 导入第一步:安装插件babel-plugin-import 是一款 babel 插件,它会在编译过程中将 import 的写法自动转换为按需引入的方式npm install babel-plugin-import -

2021-06-03 17:02:00 90

原创 axios封装与api接口管理

在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。axios的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。一. axios封装步骤1. 安装axios npm install axios; // 安装axios2. 目录创建一般我会在项目的src目录中,新建一个reque

2021-06-03 16:27:29 187 1

原创 数组常用方法 (es4,es5,es6)

ES5及以前数组的常用方法:1、concat( ):数组合并。该方法用于连接两个或多个数组。该方法不会改变现有的数组,仅会返回被连接数组的一个副本。var arr1 = [1,2,3];var arr2 = [4,5];var arr3 = arr1.concat(arr2);console.log(arr1); //[1, 2, 3]console.log(arr3); //[1, 2, 3, 4, 5]2、join( ):数组转字符串。该方法用于把数组中的所有元素放入一个字符串。元素是通

2021-06-03 11:52:50 147

原创 多环境变量配置

配置多环境变量package.json 里的 scripts 配置 serve、test、build,通过--mode xxx 来执行不同环境通过 npm run serve 启动本地,执行 development通过 npm run test 打包测试,执行 testing通过 npm run build 打包正式,执行 production"scripts": { "serve": "vue-cli-service serve --open", "test": "vue-cli-s

2021-06-02 20:54:21 122

转载 去哪儿项目开发过程

1. 确定项目技术栈vue2.0 + vue-cli3/4 + vue-router + axios + vuex + vant + rem + sass + webpack2. 搭建项目yarn,npm(cnpm)包管理工具yarn add axios -Scnpm install axios -S-S::–save-dev 生产环境的依赖(dependencies)-D: --dev 开发环境的依赖(devDependencies)2.1 准备工作指令vue creat

2021-06-02 20:39:25 89

原创 对于transtion的理解

通过过渡transition,可以让web前端开发人员不需要javascript就可以实现简单的动画交互效果。定义过渡transition是一个复合属性,包括transition-property、transition-duration、transition-timing-function、transition-delay这四个子属性。通过这四个子属性的配合来完成一个完整的过渡效果:transition-property: 过渡属性(默认值为all)transition-duration: 过渡持

2021-06-01 20:49:39 299 1

原创 对于keep-alive的理解

介绍keep-alive是vue内置的一个组件,而这个组件的作用就是能够缓存不活动的组件,我们能够知道,一般情况下,一个路由在切换时会被销毁,之前的数据全部丢失,下次再访问这个组件时,需要重新创建,重新调接口,重新渲染,为了提高性能我们可以使用 keep-alive 把组件缓存起来,这样在组件切换时,这个组件并没有被销毁,下次访问时,可以就可以显示出来,而且原组件中数据还在。把需要缓存的组件使用 keep-alive 套起来即可。比如:把所有路由页面都缓存起来,在切换时不销毁:<keep-ali

2021-06-01 20:34:17 969 1

原创 事件委托(事件代理)

如图所示,在瀑布流中,如果给每一个图片绑定点击事件,非常的繁琐而且很消耗内存。所以我们可以把每张图片上的点击事件委托给共同的父元素。定义事件委托,又名事件代理。事件委托就是利用事件冒泡,就是把子元素的事件都绑定到父元素上。如果子元素阻止了事件冒泡,那么委托也就没法实现了。为什么要用事件委托/代理?一般来说,dom需要有事件处理程序,那么我们直接给他设置相应的处理程序就好了,可是比如一个ul里面有好多个li需要每一个都设置点击事件,那么可能我们首先会想到利用for循环实现。代码如下:..

2021-05-30 20:09:04 213

原创 var let const 区别

什么是变量提升?JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。一)var声明变量存在变量提升,let和const不存在变量提升console.log(a); // undefined ===> a已声明还没赋值,默认得到undefined值var a = 100;console.log(b); // 报错:b is not defined ===> 找不到b这个变量let b =

2021-05-30 19:39:17 47

原创 JavaScript中闭包知识总结

闭包:定义 当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数的内部变量,且返回的那个函数在外部被执行,就产生了闭包.闭包是一个环境,具体指的就是外部函数--高阶函数 closure闭包的三个特性1:函数套函数2:内部函数可以直接访问外部函数的内部变量或参数3:变量或参数不会被垃圾回收机制回收 GC闭包的优点:1:变量长期驻扎在内存中2:避免全局变量的污染3:私有成员的存在闭包的缺点常驻内存 增大内存的使用量 使用...

2021-05-28 21:45:41 76

原创 arguments知识汇总

当不确定有多少参数传递的时候,用arguments来获取arguments其实是当前函数的一个内置对象arguments对象中存储了传递的所有实参Arguments的展示形式是一个伪数组,可以遍历伪数组有以下特点1 具有length属性2 按照索引的方式存储数据3 不具有数组的push,pop等方法...

2021-05-28 19:12:57 129

原创 作用域、作用域链、自由变量、变量提升

作用域定义:变量作用域:就是一个变量可以使用的范围。种类:js中首先有一个最外层的作用域,全局作用域;js中可以通过函数来创建一个独立作用域称为函数作用域,函数可以嵌套,所以作用域也可以嵌套;es6中新增了块级作用域(大括号,比如:if{},for(){},while(){}…) es6作用域,只适用于const,let ;作用域链自由变量的向上级作用域一层一层查找,直到找到为止,最高找到全局作用域,就形成了作用域链。自由变量​ 定义: 就是当前作用域未定义的变

2021-05-27 21:14:35 44

原创 this指向问题、new的过程

this指向问题1.普通函数中的this指向ES5中函数的this指向ES5非严格模式下,全局的this和函数的this都指向window,函数中的this指向undefinedES6函数中this和ES5下的严格模式一样,全局的this和函数的this都指向window,函数中的this指向undefined2.对象中的this指向var obj={ a:1, b:function(){ console.log(this);//th

2021-05-27 20:44:53 313

原创 this的指向问题

this与call/apply/bind的关系 在浏览器里,在全局范围内this指向window对象; 在函数中,this永远指向最后调用他的那个对象; 构造函数中,this指向new出来的那个新的对象; call、apply、bind中的this被强绑定在指定的那个对象上; 箭头函数中this比较特殊,箭头函数this为父作用域的this,不是调用时的this.要知道前四种方式,都是调用时确定,也就是动态的,而箭头函数的this指向是静态的,声明的时候就确定了

2021-05-26 21:55:52 48

原创 javascript原型与原型链

javascript原型与原型链1. prototype 每个函数都有一个prototype属性,被称为显示原型2. _ _proto_ _ 每个实例对象都会有_ _proto_ _属性,其被称为隐式原型 每一个实例对象的隐式原型_ _proto_ _属性指向自身构造函数的显式原型prototype 3. constructor 每个prototype原型都有一个constructor属性,指向它关联的构造函数。Funct...

2021-05-26 19:53:09 38

原创 数据类型判断

数据类型共有五种判断方法分别是:typeof、instanceof、constructor、Object.prototype.toString.call()、jquery.type()typeof typeof对于基本数据类型判断是没有问题的,但是遇到引用数据类型(如:Array)是不起作用的 typeof '123' // string typeof 1 // number typeof true // boolean ...

2021-05-24 21:31:28 161

原创 js数据类型

一. 数据类型js主要分为两种数据类型:基本数据类型(值类型):Number、String、Boolean、Undefined、Null、Symbol(es6新增的一种独一无二的值)和BigInt(es10新增),这些类型可以直接操作保存在变量中的实际值。引用数据类型:Object。包含Object、...

2021-05-24 20:50:01 1510

转载 深拷贝总结

什么是深拷贝深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。深拷贝复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制。 深拷贝后的对象与原来的对象是完全隔离的,互不影响, 对一个对象的修改并不会影响另一个对象。为什么要使用深拷贝?我们希望在改变新的数组(对象)的时候,不改变原数组(对象)内存模型JS内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。 其中栈存放变量,堆存放复杂对象,池存放常量。基本数据类型与栈

2021-05-23 21:57:15 82

原创 vue-router总结

vue-router是什么vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。路由模块的本质 就是建立起url和页面之间的映射关系。vue-router实现原理SPA(single page application):单一页面应用程序,

2021-05-23 21:37:13 164

原创 vuex

Vuex是什么?Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。使用步骤1 .安装Vuexnpm install vuex --save2 . 引用vuex,创建仓库store。 创建 store.jsimport Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)//数据const state={

2021-05-23 21:21:19 97

原创 vue生命周期

官网生命周期图:vue生命周期总共分为8个阶段。创建前/后,载入前/后,更新前/后,销毁前/后。创建前/后:⑴beforeCreate(创建前):执行时,data和methods中的数据都还没有初始化。var vm = new Vue({ el: '#app', data: { message: '今天是周一!!!' }, beforeCreate(){ console.group('beforeCreate 创建前状

2021-05-20 21:23:10 108

原创 uni-app封装uni.request请求方法

uniapp封装请求方法封装步骤1. 在项目的根目录创建目录结构如下:2. 封装的请求方法代码如下:Vue.prototype.$request=function(url,data=''){ // var that=this return new Promise((reslove,reject)=>{ uni.request({ url:this.apiUrl+url, method:"POST", header: { 'token': uni.

2021-05-19 21:47:54 895

原创 Vue组件通信

一. 父传递子如何传递(1)在父组件的子组件标签上绑定一个属性,挂载要传输的变量 ​(2)在子组件中通过props来接受数据,props可以是数组也可以是对象,接受的数据可以直 接使用 props: ["属性名"] props:{属性名:数据类型}1 . 父组件parent.vue代码如下: <template> <div class="parent"> <h2>{{ msg }}</h2> ...

2021-05-19 21:39:10 51

原创 小程序发布流程

小程序发布的具体流程一. 在发布之前,要在小程序公众平台的开发管理中的开发设置配置服务器域名白名单二.上传代码在小程序代码编写完毕后,在顶部的导航条找到【上传】输入版本号,项目备注,点击上传上传成功后,会有上传成功的提示到这里我们开发代码这块就完工了,剩下的就是去微信小程序平台发布了。三. 提交审核进入微信小程序的官网:https://mp.weixin.qq.com2.1.进入【版本管理】找到开发版本,点击【提交审核】首次提交审核,会弹出如下

2021-05-17 11:38:55 226

原创 小程序支付流程

支付流程1.微信支付哪些人 哪些帐号 可以实现微信支付 企业帐号 企业帐号的小程序后台中 必须 给开发者 添加上白名单 一个 appid 可以同时绑定多个开发者 这些开发者就可以公用这个appid 和 它的开发权限2 支付按钮先判断缓存中有没有token 没有 跳转到授权页面 进行获取token 有token 创建订单 获取订单编号 已经完成了微信支付 手动删除缓存中 已经被选中了的商品 删除后的购物车数据 填充回缓存 再跳转页面wx.requestPayment(

2021-05-16 21:43:06 74

原创 小程序授权登陆流程

由上图可看出:当需要登录时,前端需先调用微信方法wx.login()方法,此方法会返回一个临时的登录code 前端调用微信方法wx.request()方法将上一步生成的临时code传给开发者服务器 开发者服务器将前端传入的code以及appid和appsecret发给微信服务器 微信服务器回根据开发者服务传入的参数,返回seesin_key和openid 开发者服务器收到微信服务器的session_key和openid生成自己的登录态,发回给前端到这里登录流程结束。但此时并不是用...

2021-05-16 21:34:39 696

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除