- 博客(72)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注

原创 JavaScript 笔记
暂停 JavaScript 执行:function sleep(ms) { for(var t = Date.now();Date.now() - t <= ms;); } sleep(200);
2021-07-14 21:53:24
79

原创 新一代 node.js web 开发框架 Koa 零基础入门学习笔记
目录Koa搭建服务器node 初始化 package.json安装 Koa 模块创建应用入口文件 app.js最简实现上下文Request 别名Response 别名启动服务器服务器自动重新部署Node.js 开发辅助工具 nodemon中间件洋葱模型Koa 中间件的实现重点Koa 路由配置Koa新一代 node.js web 开发框架。搭建服务器node 初始化 package.jsonnpm init -y参数:-y 全部使用默认选项设置,不再一步一步确认。{ "name": "Ry
2021-05-13 20:03:12
326
10

原创 asp.net core 修改 HTML 而不需要重新 run 的方法
安装:https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation/命令:dotnet add package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation --version 3.1.0然后修改Startuppublic void C...
2020-01-01 09:34:33
840

转载 Markdown编辑器使用方法技巧
这里写自定义目录标题Markdown编辑器使用方法技巧新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Mark...
2019-03-07 18:13:37
303
转载 canvas 利用前端技术生成图片相似度 hash (裁剪图片只要图像内容去除四周空白区域)
正常对比,我们会依次对比数组每一个对应的位置,比如200和202做对比,100和102做对比,300和310做对比,正常情况下,如果两个值小于一定的误差比如2,我们就认为是相似的,但是这样计算的话我们需要将数组遍历完才能知道是不是相似的,如果引入突变,假如我们设定突变的临界值为5,如果某族特征值大于5,那么我们直接判定为不相似,直接返回,比如上面的情况,a和b的第一组数字间隔为10大于图标临界值5,数组后面的内容我们就不需要再对比了,直接返回。1、对比特征数组的长度,如果不相等,那么图片不相似,直接返回。
2023-11-03 07:35:18
364
原创 JavaScript 避免全局定义变量和函数
如上所提供的函数表达式的名称的作用域仅仅是该函数自身。这允许引擎去做更多的优化,并且这种实现更可读、友好。该名称也显示在调试器和一些堆栈跟踪中,节省了调试时的时间。
2023-06-07 00:54:42
267
1
原创 微信小程序开发:选择图片并转为base64
如果 data 中包含大数据字段(建议临界值 100KB),建议使用 wx.cloud.CDN 标记大数据字段,标记后在调用云函数时,该字段的内容将会上传至临时 CDN,然后在云函数中接收到的该字段值将是 CDN url,可在云函数中下载访问。通过这种方式,可以避免大数据传输造成的性能问题、及避免触及调用链路的传输大小限制。向自有服务器存储应该没问题,但是如果使用微信云开发,调用云函数传递数据有大小限制(本地云函数调试时总是报错),
2023-05-11 17:16:51
425
原创 网页置灰的方法(兼容IE)
通过 css 滤镜可以非常方便的给网页完成置灰。HTML 添加一个统一的滤镜即可。但为了兼容 IE,就需要借助插件。如果需要保留特殊元素不被置灰,那就使用选择器:其它的几种置灰方式:使用 SVG 滤镜使用 backdrop-filter 实现首屏置灰遮罩借助混合模式实现网站置灰但是,IE 对以上方式无效借助插件:注意,这里又是为了兼容性,最好使用 jquery,用选择器的时候能免去不少麻烦。cd…
2022-12-04 01:27:02
1245
原创 Vue3 起步简单示例
以下是最简单的使用语法:<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width
2022-05-12 22:36:19
728
原创 JavaScript 使用 .replace(正则, 函数) 获取地址参数妙不可言的用法
在阅读一段源码时,看到这么一段代码,可以获取到地址中所有的参数:function getUrlVars(href) { var vars = {}; var parts = href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) { vars[key] = value; }); return vars;}这里重点要说的就是
2022-05-10 21:34:38
1471
原创 常用 CSS 笔记
css grid 常用属性用法记录display: grid;grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));grid-template-rows: 140px 140px;gap: 10px;overflow: hidden;grid-template-areas:“a b c d e”“f f g h i”;
2022-04-21 09:39:32
191
原创 node.js 遍历目录
var fs = require("fs")var path = require("path");// 当前路径var root = path.join(__dirname)let parentObj = { title: "目录", children: []}// 调用readDir(root, "", parentObj);// console.log(JSON.stringify(parentObj, null, 2));fs.writeFileSync(path
2022-04-19 20:21:14
788
原创 JavaScript 字符串 split 使用技巧(如何保留分割符)
// 不保留分隔符"A、B、C".split("、") == ["1", "2", "3"]// 保留分割符"A、B、C".split(/(、)/g) == ["1", "、", "2", "、", "3"]"A、B、C".split(/(?=、)/g) == ["1", "、2", "、3"]"A、B、C".split(/(?!、)/g) == ["1、", "2、", "3"]"A、B、C".split(/(.*?、)/g) == ["", "1、", "", "2、", "3"]//
2022-03-27 09:40:27
4355
原创 如何在微信小程序中实现文本换行?
description: “如何在微信小程序中\n实现文本换行?” <text class="text-white" space="ensp" decode="{{true}}">{{description}}</text>
2022-02-15 15:42:16
2192
原创 JavaScript 创建下载
/** * 生成下载 * @param {string} fileName 文件名 * @param {string} fileType 文件后缀名 * @param {string} content 文件内容 */makeDownload(fileName, fileType, content) { var pom = document.createElement('a'); pom.setAttribute('href', 'data:text/plain;charset=u
2021-10-09 15:04:57
352
原创 正则表达式笔记
获取文件名需要注意:文件名的命名是以字母、数字或下划线组成的\w*(?=\.(png|jpg|jpeg|mp3))获取文件名及后缀\w*\.(png|jpg|jpeg|mp3)
2021-09-25 10:55:02
140
原创 jQuery 获取页面地址参数
// 获取页面 url 参数$.getUrlParam = function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null;}// 使用$.getUrlPar
2021-09-13 12:48:54
1059
原创 推荐音频转文字、字幕制作软件
字幕制作Beslyric这东东,除了可以制作字幕打点时间线,居然可以用来下载歌曲!音频转文字网易见外工作台https://jianwai.youdao.com/在线制作,完全免费,除了音频转文字,也可以自动转歌词(带有时间打点)...
2021-09-03 21:48:12
631
原创 配置 Koa 静态资源支持断点续传 Accept-Ranges 和 Content-Range
Koa 入门请访问:新一代 node.js web 开发框架 Koa 零基础入门学习笔记需求情景有一些内容作为静态资源,被其它程序访问,比如微信小程序。比较特殊的资源就是音频和视频,用户端通常不会一次全部下载完成后播放,都是边看边加载,这时我们就需要配置静态资源支持断点续传。微信小程序对不支持断点续传的音频文件,使用时有两个问题:不能顺利获取音频长度:InnerAudioContext.duration使用 InnerAudioContext.seek 跳转会失效Koa 服务器配置断点
2021-09-02 22:23:22
871
原创 JavaScript 计算相隔日期之间的天数、小时数、分钟数、秒数
// 起始日期到现在相差秒数let second = parseInt(new Date().getTime() / 1000) - parseInt(new Date('2021-08-4').getTime() / 1000)// 相差天数let day = parseInt(second / 60 / 60 / 24); // 相差小时let hour = parseInt(second / 60 / 60); // 相差分钟数let minutes = parseInt(second
2021-08-11 21:15:02
1895
原创 JavaScript 如何复制数组而不是引用
方法1const arr1 = ['a', 'b', 'c']const arr2 = arr1.concat()console.log(arr2) // ['a', 'b', 'c']arr2.push('d')console.log(arr1) // ['a', 'b', 'c']console.log(arr2) // ['a', 'b', 'c', 'd']方法2const arr1 = ['a', 'b', 'c']// 写法一const arr2 = [...a
2021-07-11 18:27:43
254
原创 微信小程序开发:动态预加载 swiper-item 中的图片(延迟加载)
在使用 swiper 时,有些场景需要一次载入的图片太多,消耗资源的同时也会影响用户体验。自己的解决方法是这样的:创建图片【地址数组】根据需要展示图片的总数创建一个空的数组,即用来页面绑定的【页面数组】初始化【页面数组】,为第 1、2 项赋值当向右滑动时,接着为【页面数组】的第 3 项赋值直到全部展示完毕如果用户提前离开,就能避免未展示项图片的加载。代码如下:<view class="s-page"> <swiper class="s-swiper"
2021-07-07 14:42:49
2675
1
原创 解决小程序搜索框输入时的闪动问题
解决思路:由于在用户不断输入的同时,会不断的触发搜索事件。所以设置一个定时器,延缓搜索的执行,等待用户停止输入的时候再进行查询。let timer = null// 搜索框searchContentChange: function (e) { let keyWords = e.detail.value ? e.detail.value : null let that = this // 清除,定时器 if (timer) { clearTimeout(t
2021-07-05 14:07:33
865
原创 mac os 禁用 Spotlight
聚焦功能禁用:sudo mdutil -a -i off如果需要再次使用,可以通过以下命令重新开启。sudo mdutil -a -i on
2021-07-02 16:02:29
3135
原创 Node.js 使用 got.stream 下载文件
got 是 node.js 完成 HPPT request 的模块。要对 API 完成一次请求非常简单:const got = require("got");got(url) .then(response => console.log(response.body)) .catch(error => console.log(error.response.body));下载文件可以使用 got.stream 方法,或设置 got 请求参数 isStream: truegot.s
2021-06-13 10:18:10
2486
2
原创 NodeJS stream.pipeline 读写文件那些事
Node 最简单的 stream 用法就像下边这样:const fs = require('fs')const zlib = require('zlib')fs.createReadStream(inputPath).pipe(zlib.createGzip()).pipe(fs.createWriteStream(outputPath))更好的方式是使用 stream.pipelineconst stream = require('stream')const util = requir
2021-06-10 17:42:07
927
1
原创 一个示例「run」清楚 JavaScript 的 async 和 await
看不少教程,也一直在用,就是云里雾里的。借鉴别人的一段代码,自己跑跑看,终于清爽很多。async 和 await 都一个修饰符,都是获取返回的 promise 内容。async 修饰的函数会返回一个 promise 对象await 放在调用返回值为 promise 对象的函数前使用await 关键字仅在 async 函数中有效。如果在 async 函数体外使用 await ,你只会得到一个语法错误。如果在循环中使用 await 语句,就要使用 for 循环,其它的如 each 中不起作用as
2021-06-09 20:00:18
191
原创 Node.js 初学者入门学习笔记
安装 Node.js使用 nvm 安装 Node.js,可以方便的管理 Node.js 版本并切换https://github.com/nvm-sh/nvmVS code 编辑器智能提示安装:cnpm install @types/node --save-dev安装成功之后,在使用 VS code 时就会有相关代码提示:创建第一个 Node.js 应用:// 文件 server.jsvar http = require("http");http.createServer( fu
2021-04-17 19:00:33
154
原创 Chrome Unable to add filesystem: <permission denied>
我是向在本地重写 CSS 的时候,添加本地文件夹,控制台提示:Chrome Unable to add filesystem: 如图:解决方法是在地址栏输入:chrome://inspect/#devices允许即可
2021-03-15 19:16:11
3055
原创 微信小程序云开发:云函数实现简单的路由
内容比较简单,直接上代码。使用很方便,免得安装依赖。// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数exports.main = async (event, context) => { const wxContext = cloud.getWXContext() // 定义简单的路由 if (event.action && routeHelper[even
2021-03-06 13:23:11
559
GNU-make-cygwin-setup-x86_64.zip
2020-04-21
SQLite3 Tool and Browser3(含Windows和Mac)
2020-02-09
CheatEngine(CE修改器)修改版本
2020-02-03
Vue CLI 如何引入第三方js文件
2019-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人