零宽字符
零宽度字符是一种字节宽度为0的不可打印的Unicode字符,简而言之,他是一种不可见的字符
123let a="我有字符"let b="我有字符"console.log(a===b) //false
上述代码出现的原因 就是因为这个零宽字符的出现当你去打印这两个变量的长度时,他们的长度是不相等的想要见到这些零宽字符 可以使用vim编辑器
那如何解决上面的问题 我们可以通过正则进行处理
1234// 封装成函数clean_zero=(text='')=>{ text.trim().replace(/[\u200B-\u200D\uFEFF]/g, ""); }
零宽字符的用处:1.数据防爬 将零宽度字符插入关键词文本中,使得匹配关键字时不能正确匹配,但是不影响用户的正常阅读2.信息隐藏(可做水印)
总结这是个不常遇到的问题,且遇到后处理起来也较为麻烦,如果不知道零宽字符的概念,挺难找出问题所在,在此记录一下
微信小程序实现watch
原理:小程序是没有watch功能的,所以我们要手动通过object.defineProperty()方法来实现
1.首先创建一个watch.js文件123456789101112131415161718192021222324252627282930313233343536373839404142// watch.jsconst observe = (obj, key, watchFun, deep, page) => { let oldVal = obj[key] // 如果监听对象是object类型并且指定deep(深度监听) if (oldVal !== null && typeof oldVal === 'object' && deep) { // 递归子集,依次执行observe() Object.keys(oldVal).forEach(item => { observe(oldVal, item, watchFun, deep, page) ...
微信小程序实现computed
原理小程序的计算属性和Vue.js的不太一样——小程序在.wxml(不是.js)文件中定义(其实是借用wxs标签实现的) 例如:
123456789101112<view class="container"> <wxs module="fn"> module.exports = { getSearchList: function (searchList) { searchList[2].hidden = !searchList[1].value searchList[4].hidden = !searchList[3].value return searchList.filter(function (item) { return !item.hidden }) }, } </wxs> <text wx:for="{{fn.getSearc ...
下载的几种方式
方案一:a 标签加 download 属性这种情况下,必须保证 url 是处于同源的情况下,跨域时 download 属性是不生效的。download 属性指示浏览器该下载而不是打开该文件,同时该属性值即下载时的文件名;例:12<a href="url" download="filename"/>
方案二:通过后端设置,设置下载的请求头为 Content-Disposition 使其强制让浏览器进行下载,这种方式不受跨域的影响 例:Content-Disposition: attachment; filename=”filename.jpg”在常规的 HTTP 应答中,该响应头的值表示对响应内容的展现形式:1.inline 表示将响应内容作为页面的一部分进行展示2.attachment 表示将响应内容作为附件下载,大多数浏览器会呈现一个“保存为”的对话框3.filename(可选) 指定为保存框中预填的文件名这种情况下 使用 window.open()或者 a 标签不设置 download 属性都是可以让浏览器直接下载的方案三:通过 ...
js文件全局添加页面水印
1.首先封装页面水印 js 文件,可自行根据需求进行相应修改123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566let strArr=[]let setting = () => { let id = '1.23452384164.123412415' // 判断是否之前有添加过,此次添加先删除原有的 if (document.getElementById(id) !== null) { document.body.removeChild(document.getElementById(id)) } // 创建canvas标签 let can = document.createElement('canvas') can.width = 270 c ...
git指令
Git 指令操作基本操作:初始化环境:git init管理文件:git add .查看状态:git status提交文件:git commit -m ‘’查看历史:git log回到某次代码 :git reset –hard id 值上传代码 :git push 路径 分支名(路径和分支名不传默认推送到当前分支的远程代码)克隆代码(下载代码到本地):git clone 路径下载代码:git pull 路径 分支名 (路径和分支名不传默认拉取当前分支的远程代码)
分支操作:git branch 查看所有分支git branch name 创建分支git checkout name 切换分支git checkout -b 创建并进入到一个新分支git checkout -D 删除一个分支git merge 分支名 合并分支
特殊操作:git stash 隐藏当前工作环境git stash list 查看隐藏的工作环境①git stash apply 恢复工作环境; 再使用 git stash drop 来删除 stash 内容②git stash pop,恢复的同时把 stash 内容也删 ...
qq转发微信转发h5页面
1.首先 npm 下载微信 sdk1npm install weixin-js-sdk
2.通过 config 接口注入权限验证配置;这是最关键的,首先这个你需要后台给你返回 config 接口所需要的参数:timestamp、noncestr 和 signature。
为了增加复用性,创建一个 js 文件引入以下代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import wx from 'weixin-js-sdk'/* * 微信分享 * 获取微信加签信息 * @param{data}:获取的微信加签 * @param{shareData}:分享配置参数 */export const wechatShare = (data, shareData) => { // var wx = re ...
vue双向绑定实现原理
vue 官方解释 v-model 本质123456789101112<div id="app"> <input type="text" :value="message" @input="message = $event.target.value"> <span>{{message}}</span></div><script> var app2 = new Vue({ el:'#app', data:{ message:"Hello Vue" } });</script>
自定义组件实现 v-model(原生和 element 都可实现)子组件1234567891011121314151617181920212223242 ...
Hexo的基础使用
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment


