自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 leetcode(js)-每日一练之 存在重复元素 题库编号217 219

leetcode(js)-每日一练之 存在重复元素I IIvar containsDuplicate = function(nums) { const set = new Set(); for(let i =0;i<nums.length;i++) { if(set.has(nums[i])) { return true } set.add(nums[i]);

2020-05-27 23:09:58 141

原创 leetcode(js)-每日一练之 岛屿数量 题库编号200

leetcode(js)-每日一练之 岛屿数量主要思路:先遍历二维数组,遇到数字为1,计数器count++然后用‘沉没’(dfs深度优先搜索)的方式把其周围的1换成0,并把其周围的1周围的1换成0,直到周围都是0,停止var numIslands = function(grid) { let count = 0; function dfs(row,col) { if(row<0||row>=grid.length||col<0||col

2020-05-26 16:28:25 212

原创 Mock(虚拟数据)设置

Mock(虚拟数据)设置一.为什么要设置:开发阶段,为了高效率,需要提前Mock减少代码冗余,灵活插拔减少沟通、减少接口联调时间(前端工作主要两个方面:网页开发和交互)二. 三种方案1》本地创建json2》easy-mock平台3》集成Mock API三.详讲三种方案:(一)本地创建json文件1》创建一个静态的json文件,在public—mock—login.json2》在app.vue中 本地加载请求静态json文件的形式 export default

2020-05-26 12:01:09 1236

原创 leetcode(js)-每日一练之 打家劫舍 题库编号198

leetcode(js)-每日一练之 打家劫舍又是一道动态规划的题用memo[i]储存i角标的位置偷窃的最大值var rob = function(nums) { if(nums.length===0) { return 0; }; if(nums.length===1) { return nums[0] }; const memo = []; memo[0] = nums[0]; memo[1]

2020-05-26 00:02:32 155

原创 接口环境设置

接口环境设置(理解不太好,希望以后会慢慢理解)一.总体思路:开发上线的不同阶段,需要不同的配置(做一个项目,需要经历很多阶段,比如开发,测试,预发布,线上等等,不同阶段,调用的后台接口不同,需要不同的配置)不同的跨域方式,配置不同打包的时候统一注入环境参数,统一管理环境,输出不同的版本包二.写代码:1》在main.js中,如果使用的是代理跨域axios.defaults.baseURL = '/api';即可若在代理跨域的条件下,有不同的请求,直接修改vue.config 里面的tar

2020-05-25 18:09:28 600

原创 接口错误拦截设置

接口错误拦截设置一.错误怎么提示,取决于后台的架构,后台分底层和业务层,后台把底层的错误抛出来,给业务层,业务层把开发者编写的错误,封装成用户能看懂得错误。前端负责把错误展示给用户二.接口错误拦截得种类:统一报错未登录同意拦截(在未登陆前,不允许加订单,购物车)请求值,返回值统一处理三.axios一个小知识点:同时发送多个请求:axios.all 或者 promise.all四.代码设置:在main.js中:import axios from 'axios'import Vue

2020-05-25 15:48:30 998

原创 Storage封装

Storage封装一.cookie,localstorage,sessionstorage三者区别:存储大小:Cookie 4K Storage 5M有效期:Cookie拥有有效期,localstorage永久存储,sessionstorage储存在内存中,随浏览器关闭而消失Cookie会发送到服务器端,存储在内存中(为什么浏览器和服务端会认识你呢?张三登录获取张三自己的用户信息,为什么能把张三的用户信息返回给张三呢,因为我们前端把cookie发送给服务器端,告诉他们我是张三)sessions

2020-05-25 12:36:32 510

转载 CSS 动画点:反弹动画

CSS 动画点:反弹动画原视频链接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> <link rel="

2020-05-24 01:15:39 412

原创 路由的封装注意点

路由的封装注意点每个组件的export default 里面一定要写name,代表这个组件children: [{ path: 'list', name: 'order-list', component: OrderList }设置子路由的时候,path:‘里面不要写/’,父路由要加3. 重定向:path: '/', name: 'home', component: Ho

2020-05-24 00:22:23 310

原创 基本插件安装

基本插件安装轮播 :swiper,vue-awesome-swipercss预处理器:(此项目选择sass)node-sass sass-loader图片懒加载:vue-lazyloadelement-uicookie:vue-cookie还有之前安装的axios,vuex,vue-routernpm i vue-lazyload element-ui node-sass sass-loader swiper vue-awesome-swiper vue-axios vue-cookie

2020-05-23 21:29:44 97

原创 leetcode(js)-每日一练之 寻找旋转排序数组中的最小值 题库编号153

leetcode(js)-每日一练之 寻找旋转排序数组中的最小值主要思路:主要运用二分法如果数组长度为1,返回唯一的一个数定义两个指针,第一个left指向数组开头,第二个right指向数组结尾检查数组是否被翻转,如果没有,则返回数组里的第一个数当left小于right时,取中间值作为mid进行二分搜索,如果mid的左边一个数大于mid,则返回mid,或者mid的右边一个数小于mid,则返回mid+1否则的话,如果left所在的数小于mid,则将left右移至mid+1位置(砍掉左半边)否

2020-05-23 17:45:32 136

原创 项目基础架构搭建

项目基础架构搭建一.文件夹和文件插入静态资源文件夹:resource文件夹(后台接口等)public文件夹:存放大图片和mock数据src----assets文件夹:存放小图片,如icon图片,css图片等App.vue为根组件,不动,放一个<router-view></router-view>,嵌套其他组件src----api文件夹----index.js 承载整个项目api请求,把地址统一管理src----util文件夹----index.js 公共机制(金额格式

2020-05-23 01:03:07 481

原创 做项目之前前端需要做的需求分析

做项目之前前端需要做的需求分析熟悉文档、查看原型、读懂需求了解前端设计稿-设计前端业务架构了解后台接口文档-制定相关对接规范协调资源搭建前端架构

2020-05-22 21:37:02 3132

转载 用 HTML 和 CSS 制作的五角星评分小部件

使用 HTML & CSS 制作左侧滑动导航条

2020-05-22 20:16:09 680

原创 leetcode(js)-每日一练之 乘积最大子数组 题库编号152

leetcode(js)-每日一练之 乘积最大子数组这道题部分思路跟最大子序和这道题类似,刚开始做的时候,我觉得先把最大子序和的加号变成乘号试试var maxProduct = function(nums) { let memo = []; memo[0] = nums[0]; let max = nums[0]; for (let i = 1; i < nums.length; i++) {

2020-05-22 16:33:24 200

原创 前端常用的跨域解决方案

前端常用的跨域解决方案跨域是浏览器为了安全而做出的限制策略。浏览器请求必须遵循同源策略:同域名、同端口、同协议。【三种解决方式】:1、CORS跨域; 2、JSONP跨域; 3、代理跨域。一.CORS跨域:(主要修改后端代码实现)服务端设置,前端直接调用(说明:后台允许前端某个站点进行访问)Response Headers中:Access-Control-Allow-Credentials:true 如后端取不到你的Cookie,前端发请求时一定要设置这个选项为true。

2020-05-21 22:46:01 463 1

原创 Vue-DevTools的安装使用

Vue-DevTools的安装使用点击谷歌浏览器右上角更多工具-----扩展程序-----谷歌商店-----找到Vue-DevTools安装即可这种方法必须翻墙,如果可以翻墙很简单,要是不能,我们可以换一种方法https://github.com/vuejs/vue-devtools/tree/master①.可以直接download到本地解压后,到vue-devtools-master文件夹中,执行 npm install 这个过程很慢很慢 要慢慢等 不要着急②.然后 执行 npm r

2020-05-21 19:55:12 124

转载 使用 HTML 和 CSS 实现按钮闪烁悬停效果

使用 HTML 和 CSS 实现按钮闪烁悬停效果原视频连接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> &l

2020-05-21 16:20:26 917

原创 leetcode(js)-每日一练之 加油站 题库编号134

leetcode(js)-每日一练之 加油站首先看到这道题的第一思路是,从0号加油站出发,按0-1-2-3-4-0的方向行驶,若中间没油了,则说明从0号加油站出发这种方案是不可行的,我们再改用从1号加油站出发的方案,。。。。。。一个一个试,直到某号加油站可以循环一周,我们最终的答案就是这号加油站,但是这样做有点暴力,不是最优解。接下来说一下比较完美的解法把,空间复杂度o(n),开始跟暴力解法相同,从0号加油站出发,向前走,直到行不通,接下来的做法与暴力解法不同了!!!注意!!!,行不通之后,

2020-05-21 12:00:50 208

转载 使用 HTML & CSS 制作左侧滑动导航条

使用 HTML & CSS 制作左侧滑动导航条原视频连接HTML:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Slide Menu Bar</title> <link rel="stylesheet" href="style.css"> <link rel="styleshe

2020-05-20 23:35:43 4374

原创 leetcode(js)-每日一练之 验证回文串Ⅱ 题库编号680

leetcode(js)-每日一练之 验证回文串Ⅱ主要思路:首先跟题库编号125 验证回文字符串的思路相同在left(++)和right(–)指针行进过程中,若比较后发现不同,给一次机会,把left++与right 比较 或 right-- 与left 比较,如果有一个返回true,则次字符串珍惜了这次机会,是一个回文字符串,否则仍不是回文字符串为什么不left-- right++呢 ,因为在每次比较 都要确定左右两边的字符数相同,才符合题意 var validPalindro

2020-05-20 15:00:18 138

原创 ES6(七)------函数拓展

ES6(七)------函数拓展一.函数参数的默认值function fn(obj = xx)xx可以是数组,字符串,对象。。。1.ES6之前:function fn (obj){ var obj = obj || {}; obj.userName = '张三'; return obj.userName ; }2.ES6:function fn (obj = {}){ obj.userName = '张三'; return obj.userName ;}----------

2020-05-20 00:30:34 94

原创 git常见的命令行

git常见的命令行

2020-05-19 22:15:05 118

原创 使用vscode操作git的几种方法

vscode操作git一.首先安装两个插件:git history diff (看git操作的历史记录,谁干了什么)vue二.用vscode创建新分支:1.点击左下角分支:2.点击 create new。。然后输入名称(demo2) 就能创建成功3.点击小云朵:点击之后,git仓库 就多出来一个分支三.合并分支:加入要把master 合并到demo2 分支中先使左下角设定为demo2分支,然后ctrl+shift+p 上方弹出命令行点击然后左下角 白色圈圈旁边有个1 点击

2020-05-19 21:37:24 1279

原创 git仓库 与vscode连接 与ssh密钥的相关配置

github 与vscode和ssh密钥的相关配置一.vscode 连接github1.首先用vscode打开一个有.git的项目文件,打开编译器设置2.找到git.path 点击 settings.json3.把gitpath路径改为自己git.exe的安装路径4.这样就可以连接了,可以直接推送文件到git仓库中重启一下vscode编译器----------------------------------------------------------------------------

2020-05-19 20:31:06 10018

转载 CSS 按钮悬停效果

CSS 按钮悬停效果原视频链接鼠标放入或点击按钮获得焦点后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>

2020-05-19 16:23:08 2109

原创 leetcode(js)-每日一练之 验证回文串 题库编号125

leetcode(js)-每日一练之 验证回文串一.格式化 + 双指针夹逼:格式化:去除非字母,非数字,并都改成小写 var isPalindrome = function(s) { let k; k = s.toLowerCase().replace(/[\W]/g, ''); if (k.length < 2) { return true; }

2020-05-19 14:52:43 166

原创 ES6(六)------数值拓展

ES6(六)------数值拓展一.与之前的不同:在ES6之前,parseInt()parseFloat()都是在全局对象(window)下的,而ES6为Number.parseInt()Number.parseFloat()逐渐模块化二.Number对象新增方法:(1)Number.isFinite() :检测一个数值是否有限console.log(Number.isFinite(3));//trueconsole.log(Number.isFinite(NaN));//falseconso

2020-05-19 00:06:51 106

转载 HTML+CSS 制作联系人页面(可自适应)

HTML+CSS 制作联系人页面原视频链接HTML:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta content="width=device-width,initial-sca

2020-05-18 20:39:49 48786

原创 leetcode(js)-每日一练之 买卖股票的最大利润 题库编号 121

leetcode(js)-每日一练之 买卖股票的最大利润主要思路:1.注意股票的买卖方式:卖出点在卖入点的后面2.找每个点在左半区域的最低点,计算每个点所能获得的最大利润3.找其中的最大值,就是股票的最大利润 var maxProfit = function(prices) { if (prices.length == 0) { return 0; } let minPoint

2020-05-18 16:23:28 302

转载 js 设计模式 ----- 观察者模式原理和实现

js 设计模式 ----- 观察者模式(一)基本概念1》观察者模式(订阅模式)发布===>订阅理解:定义了一个对象一对多的关系,让多个观察者同时监听一个大对象,当一个大对象发生变化时,所有的依赖他的对象都得到了通知<script> var obj = {};//发布者 obj.list =[];//发布列表 obj.listen = function(fn){//增加订阅者 ..,fn是一个回调函数 obj.list.push(fn);

2020-05-18 01:05:22 157

转载 使用 HTML & CSS 制作菜单悬停效果

使用 HTML & CSS 制作菜单悬停效果原视频链接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>

2020-05-18 00:45:45 853

原创 leetcode(js)-每日一练之 矩阵置零 题库编号 73

leetcode(js)-每日一练之 矩阵置零1.检查并标记第一行和第一列是否有0(firstColHasZero和firstRowHasZero)2.忽略第一行第一列,若其余行列含有0,将其所在的行列的最左边和最上面置为0(在第一行第一列上)3.接下来,利用第一行和第一列的标0情况,将matrix的数字标04.最后,处理第一行和第一列如果firstColHasZero 等于true,将第一列全设为0如果firstRowHasZero等于false ,将第一行全设为0var setZer

2020-05-17 21:40:34 168

原创 js 设计模式 ----- 单体模式(二)实际使用

js 设计模式 ----- 单体模式(二)实际使用一.用一个函数创建div节点,放入到body中, 函数===>专一,创建div var CreateDiv = function(html) { this.html = html; this.init(); }; CreateDiv.prototype.init = function() { var oDiv = docum

2020-05-16 23:14:53 84

原创 js 设计模式 ----- 单体模式(一)基本概念

js 设计模式 ----- 单体模式(一)基本概念1》单体模式理解:单体模式是提供了一种代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一变量进行访问。优点:a)可以划分命名空间b)使代码阅读性,维护性更好c)可以实例化(new),但是只能实例化一次第一种写法: function Obj(){ this.name = "张三"; this.run = null; } Obj.prototype.getName = functi

2020-05-16 21:06:55 148

原创 leetcode(js)-每日一练之 反转链表 题库编号 206 反转字符串 344

leetcode(js)-每日一练之 反转链表和反转字符串(一)反转链表:1.迭代:开始让 null 作为上一节点,从头结点开始,顺着链表,让当前节点的 next 指针指向上一节点,直到走到链表尾。整个链表就反向了。图解 var reverseList = function(head) { let prev = null; let curr = head; while (curr) {

2020-05-16 18:26:47 126

原创 leetcode(js)-每日一练之 爬楼梯 题库编号70

leetcode(js)-每日一练之 爬楼梯这也是一道经典的(一维)动态规划的问题:一维动态规划的思路是:

2020-05-16 15:06:13 136

原创 js 简易封装jquery

js 简易封装jquery(一).引入‘$’符号HTML:<body> <script src="myjq.js"></script></body>JS:;//防止受到别的js文件影响(function() { var jQuery = function() { return 111; }; window.jQuery = jQuery; window.$ = window.jQ

2020-05-16 00:51:04 418

原创 H5 -----WebStorage 案例------模仿收藏夹

H5 -----WebStorage 案例------模仿收藏夹<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <s

2020-05-15 15:59:32 203

原创 H5 -----WebStorage 基础用法

H5 -----WebStorage 基础用法一. 分类1》localStorage2》sessionStorage二.基础语法设置:xxx.setItem(key,value)xxx.name1 = ‘李四’;xxx[‘name2’] = ‘王五’;<script> //localStorage.setItem('name','zhangsan');//sessionStorage.setItem('pwd','123456');localStorage.

2020-05-15 01:35:26 179

空空如也

空空如也

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

TA关注的人

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