自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Taro小程序分享——taro搭载鸿蒙

上个月组里分享的一个东西,记录在博客里吧:参考链接:https://juejin.cn/post/7031826512126935076https://github.com/NervJS/taro/discussions/9639—————————————————————————————————————————————————————————————Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 /

2021-12-28 10:59:09 1766

原创 计算30天之前的日期

const ONE_MONTH = 24 * 60 * 60 * 1000 * 30;...getTime() { let time = new Date(new Date().setHours(0, 0, 0, 0)); time = new Date(time.getTime() - ONE_MONTH); const requestTime = Number(`${time.getFullYear()}${time.getMonth() + 1}${time.getDate(

2021-12-16 16:56:43 1115

原创 2021/09/19

好久没发博客了,就还挺迷茫的。也很久没有这样沉下心来思考了诶。见识到了大家一直说的‘风景’,一开始觉得很紧张,然后就觉得好像也就是这样。面对很多事情好像并不是很能提起兴趣。也没有那种大家刚毕业或者怎么那种对代码质量精益求精的态度。不知道要写啥了,就是觉得很久没写了应该冒个泡hhh。...

2021-09-19 22:03:59 528 1

原创 解决图片按照特定宽高比例显示被压缩的问题

  有这么一个需求:等宽两列瀑布流在渲染显示的时候,如果宽高比例width / height >= 1的时候显示为正方形,否则显示为height = width * 1.33;。这就导致了一个问题,没有按照原宽高比显示,图片是会被压缩的,这个时候我们需要裁剪才能保证图片的画质。纠结了好久智能裁图的问题。后来发现一个很妙的css属性:object-fit: cover;,用这个属性可以完美的解决这个图片被压缩的问题。当时也想过background-size: cover的属性,但是这个只是对背景

2021-01-06 13:48:18 1102

转载 批量请求数据,控制并发数

题目信息:批量请求可控制并发数全部请求结束,执行callbackfunction handleFetchQueue(urls, max, callback) { const urlCount = urls.length; const requestsQueue = []; const results = []; let i = 0; const handleRequest = (url) => { const req = fetch(url).then(res.

2020-12-27 01:30:11 610

原创 js判断是IOS还是安卓终端

var ua = navigator.userAgent;var isAndroid = ua.indexOf("Android") > -1 || ua.indexOf("Adr") > -1; //gvar isiOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

2020-12-12 16:20:46 411

原创 如何判断iPhone5 iPhone 5S iPhone6 iPhone6 plus?

  不同的机型设配真的是老大难的问题,IOS和安卓运行机制也有很多的不同。记录一下对Iphone机型的判断吧。  首先是要判断IOS还是安卓,然后判断IOS的各个机型的话,获取屏幕宽度就可以了。这边查到一段代码:主要用的是var events = navigator.userAgent; console.log(navigator.userAgent); console.log(navigator.appVersion); console.log(navigator) i

2020-12-09 23:27:17 451

原创 BFF了解

做了一个BFF的PPT,记录一下:~ 第一次做的PPT没有被说辣眼睛哈哈哈 ~

2020-11-27 20:13:45 464

原创 请求参数封装,让代码更优雅

  很久没有写博客了诶~  如果一个请求参数在多个方法里面有用到,例如:params = { avatar: '', follow_num: '', fan_num: '', like_num: '', nick: '', city: '', signature: '', gender: '' },可以统一封装一下:<script>const params = { avatar: '', follow_num: '',

2020-11-27 19:54:10 557

原创 查看某个项目第一次的commit

1.纯体力找2.代码找:首先git log --all,然后输入一个足够大的数字。:q退出。再git checkout 红框里面commit后面的那串就可以看到项目第一次提交的代码了。

2020-10-26 12:23:01 2484 1

原创 从零开始构建一个vue ssr的项目

文章目录一、ssr是什么?二、构建步骤1.初始化创建一个实例1)安装依赖2)构建模板文件3)node index.js查看效果2.总结一、ssr是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、构建步骤1.初始化创建一个实例初始化搭建可以参考这个博客:[https://www.jianshu.com/p/17bc00fc6993](https://www.jianshu.com/p/17bc00fc6993)1)安装依赖新建一个文件夹,输入

2020-10-22 20:49:14 809 2

原创 vue-ssr性能优化几种方法

vue-ssr性能优化:减少服务端渲染DOM数:1.结合vue的插槽系统、内置component组件的is,利用vue ssr服务端只会执行beforeCreate和created生命周期的特性,封装自定义组件,该组件在mounted的时候将包裹的组件挂载到component组件的js属性上。2.vue高级异步组件封装延迟加载方法,只有当模块到达指定可视区域时在加载。开启多进程。node.js是单进程,单线程模型。开启缓存:1.页面级缓存:在创建render实例时利用LRU-C

2020-10-21 11:49:32 2077 1

原创 《ECMAScript 6 入门》学习

09270928变量的解耦赋值数组的解构赋值只要等号两边的模式相同,左边的变量就会被赋予对应的值。ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。对象的解构赋值数组按次序,变量的取值由位置决定;对象没有次序,变量与属性同名获取正确的值。解构赋值的规则是只要等号右边的值不是对象或数组,就先将其转为对象。undefined和null无法转为对象,所以对它们进行解构赋值都会报错。但是undefined会触发函数参

2020-10-04 20:57:54 259

原创 利用Safari开发查询不到模拟器设备

  开发中遇到了一个问题,IOS模拟器已经打开了,但是Safari一直没有显示出来。打开浏览器的开发选项,发现模拟器并没有被识别出来。也就是红框部分的并没有显示。解决办法:先打开模拟器,再打开Safari。虽然只是简单的一个顺序问题,但真的也是够折腾人了。果然不能贪玩,一个月没碰电脑啥都忘记了。...

2020-09-25 10:29:03 1734

原创 SEO搜索引擎优化

还是翻翻以前的笔记,不知道啥时候学的精简代码(清除网页冗余代码,注释、空行都可以去掉,减少代码量,减少页面体积。)雪碧图 CSS sprites(图片合并,将网站中通用的一些小图片,合并到一张大图片上,减少http的请求量。)为图片指定宽度和高度(在页面中为每一个图片指定一个width和height属性,页面加载的时候,浏览器会预先留出既定的位置,图片下面的代码可以继续下载而不用等待,提高并行下载的速度,提高页面加载速度。)启用keep-alive属性(长连接)(在没有启用keep-alive属性

2020-09-15 09:06:39 530

原创 base64编码的原理

收拾东西发现以前的笔记,整理一下吧哈哈哈,其实完全不记得了我以前还写过那么多的笔记。  Base64编码要求把3个8位字节(3 * 8=24)转化成4个6位的字节(4 * 6=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’。即Base64字符是8个bit,但是有效部分只有右边的6个bit,左边两个永远是0....

2020-09-15 08:37:34 245

原创 腾讯微博

挺伤感的其实。之前的微博账号找不到了,用现在的QQ号重新注册了。心理安慰一下吧。也算是没辜负那么多深夜和微博“并肩作战”的日子哈哈哈。

2020-09-07 08:39:50 284 2

翻译 前端术语总结

SSR、物料库、渐进式、函数式、响应式、BFF、微前端、大前端、云端一体化、直出、运行时、编译时

2020-08-23 21:23:17 3323

原创 文本溢出截断

{ white-space: nowrap; text-overflow:ellipsis; overflow:hidden;}注释:white-space: nowrap; 文本强制不换行;text-overflow:ellipsis; 文本溢出显示省略号;overflow:hidden; 溢出的部分隐藏;

2020-08-03 20:49:48 491 2

原创 vue中UI与逻辑分离,抛出事件进行统一封装

如果一个.vue中有很多的事件都要进行emit抛出去,进行多次emit不如封装一下一次性抛出去。方法如下:vue中template部分:<div @click.stop="onClickHandler($event, 'yourEvent')"></div>// 优雅一点的写法,可以将string类型的事件命名为数字,一个数字代表一个事件。js部分: onClickHandler: debounce(function (e, eventType, subComme

2020-07-25 16:35:35 904

原创 根据id进行数组的去重

一开始用…New set,但是这种方式只对[1,2,2,3,4]这种形式的数组生效。对数组里面全是对象的话就不生效了,所以取数组里面每个对象对应的id值进行filter处理。如下:aaa() { // 二级评论数组去重 const idMap = {}; return this.comInfo.aaa.filter((item) => { if (!idMap[item.id]) { idMap[item.id] = tru

2020-07-25 16:25:59 1584 1

原创 js时间戳转化函数封装

将时间戳转化成「时间:分钟」的形式:time(first) { const date = new Date(first * 1000); // this.commentTime = date.toLocaleString(); const hour = date.getHours() < 10 ? `0${date.getHours()}` : date.getHours(); const minute = date.getMinutes() &lt

2020-07-25 16:20:43 643

原创 npm link使用

应用场景:  两个项目文件,一个是需要被调试的项目,一个是封装的组件项目。这里要做的是把组件项目设为全局,然后在调试项目里link再进行调试。做法:打开组件文件,拖到命令行里面复制路径(也有别的方式,但命令行绝对是最快最准确的)打开组件的项目,cd 你复制的路径,运行npm link。(如果是刚刚拉取下来的项目需要npm install一下)找到组件项目的package-lack.json文件,看第二行:’name’:’要复制下来的名字’打开要调试的项目,输入npm link 刚刚复制下来的

2020-06-24 14:06:22 3463

原创 js基础练练手(二)

不定项选择题: 以下能对一维数组 a 进行正确初始化的语句是() A. int a[10]={0, 0, 0, 0, 0}; B.int a[10]={ }; C.int a[]={0}; D.int a[10]={10*a};解答: 数组的初始化: 1、a[10] = {1,2,3};//随后元素补零 2、a[] = {1,2}//编译器自动计算元素个数,相当于a[2] = {1,2}; 3、a[10] = {}//编译器自动将所有元素置零apply,call,bind..

2020-06-20 21:20:03 321

转载 setState

nextState可以为一个对象,包含0个或多个要更新的key。最简单的用法为:this.setState({ key1: value1, key2: value2});这种方式能应付大部分的应用场景,但是看看下面这种情况:this.setState({ count: this.state.count + 1});this.setState({ count: this.state.count + 1});最后得到的count却是不可控的。因为setState不会立即改变

2020-06-18 22:14:52 270

原创 很可的设计,好看

以下的图片都是浏览网页看见的,然后截图下来的~侵删

2020-06-11 20:10:44 278

翻译 BigPipe

官方定义BigPipe是一个重新设计的劢态网页服务体系。将页面分解成一个个Pagelet,然后通过Web服务器和浏览器之间建立管道,进行分段输出(减少请求数)。BigPipe不需要改变现有的网络浏览器或服务器。分段传输:http1.1中引入了一个http首部,Transfer-Encoding:chunked。这个首部标识了实体采用chunked编码传输,chunked编码可以将实体分块儿进行传输,并且chunked编码的每一块内容都会自标识长度。这给了web开发者一个启示,如果需要多个数据,

2020-06-10 10:03:09 1036

原创 Deno初识

  Deno的出现,也让很多人调侃“论四个字母有多少种组合方式”。deno 这个名字就是来自 Node 的字母重新组合(Node = no + de),表示"拆除 Node.js"(de = destroy, no = Node.js)。什么是Deno?Deno的创作者是Node.js之父Rean Dahl(瑞安·达尔)Deno是一个基于V8引擎的简单、现代的JavaScript和Typescript安全运行环境。采用Rust语言编写而成(最初用的是Golang)No package.json

2020-06-10 08:46:45 810

原创 js基础练练手(一)

function f() { var a = 10; return function g() { var b = a + 1; return b; };}var g = f();g();// 结果是11// 原因:闭包。// g()在内部访问的外部定义的a变量。导致f()执行完毕a()并没有被释放。所以整个结果是11...

2020-06-09 22:03:00 357

原创 Demo( the fourth week)

React NativeHooksTypescriptNginxnode.js性能优化安卓客户端算法基础

2020-06-08 11:13:31 260

原创 test

在这里插入图片描述

2020-06-01 18:56:46 215

原创 使用h5的video标签优化Web的GIF

<video autoplay loop muted playsinline poster="original.jpg"> <source type="video/webm" src="original.webm"> <img src="original.gif"></video>  GIF上使用的无损压缩算法未经优化,以至于MP4或WebM之类的视频格式将提供比GIF图像小的文件大小。因此,解决GIF性能问题的一种方法是完全不使用GIF

2020-05-21 06:31:13 1322

原创 webpack打包

开发环境: webpack ./src/index.js -o ./build/built.js --mode=development 含义:webpack会以./src/index.js 为入口文件开始打包,打包后输出到 ./build/built.js 整体打包环境,就是开发环境。 生产环境: webpack ./src/index.js -o ./build/built.js --mode=production (生产环境会将代码全部压缩)...

2020-05-17 09:54:55 662

翻译 前端架构设计了解

读书《vue企业开发实战》  前端开发为什么要进行架构设计呢?使用原始的方式进行开发有什么问题呢?首先看一下原始开发存在的以下问题。➢ 难以维护➢ 加载缓慢➢ 体验差➢ 重复编码➢ 扩展困难➢ 前后端耦合度高分层架构  在这里使用的是类MVVM的分层架构方式,但还不完全是 MVVM 的分层架构方式。分层架构的主要优势在于:易维护、可扩展、易复用、灵活性高.项目分离  项目分离中又有三种方式:不分离部分分离完全分离不分离:前后端共用同一个项目目录,本地开发环境搭建成本高,项目比

2020-05-16 13:50:08 696

原创 js-最长不含重复字符的子字符串

题目:解答:/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function (s) { const set = new Set(); let i = 0, j = 0, maxLength = 0; if (s.length === 0) { return 0; } for (i; i < s.length; i++) { if (

2020-05-14 07:12:05 616

原创 Node.js—RPC通信

Remote Procedure Call —— 远程过程调用与ajax的相同点:1.都是两个计算机之间的网络通信2.需要双方约定一个数据格式与ajax的不同点:不一定使用DNS作为寻址服务(RPC一般是在内网里面互相请求)应用层协议一般不使用http(RPC使用二进制协议)基于TCP或UDP协议...

2020-05-12 10:46:23 1122

翻译 运行一个node.js程序——剪刀石头布(二)

继续上一篇文章的代码升级。利用commenjs来改造:index.js文件夹部分的代码:var playerAction = process.argv[process.argv.length - 1];const game = require('./lib')// const result = game(playerAction);// console.log(result);...

2020-05-08 16:39:56 303

翻译 node—CommonJS规范

安装node环境后,建立文件夹目录结构如下:lib.js代码如下:console.log("hahhahhah");exports.hello = "world"; // 指定被引用的js的输出 (挂载一个字符串)// 挂载一个函数exports.add = function (a, b) { return a + b;};// 挂载一个对象exports.huanyu...

2020-05-07 11:27:45 229

转载 js:循环遍历数组,替换数组中的字段名

新数组名 = 旧数组名.map(iterator => { return { 新字段名1: iterator.旧字段名1 新字段名2: iterator.旧字段名2 }}) 例子:

2020-05-04 08:07:00 4451

原创 三级联动的级联回调

  PM的需求是点击用户的×,删除当前用户名下所有的库和表。就即进行一个级联回调的操作。如下图:  主要做法就是利用map的k v键值对的方式。map键值对的知识点: var m = new Map(); m.set("edition", 6) // 键是字符串 m.set(262, "standard") // 键是数值 m.set(undefined, "nah") ...

2020-05-03 19:42:26 437

空空如也

空空如也

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

TA关注的人

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