WishMeLz

生活其实很有趣

JS罗马数字转整数

let obj = { "I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000 } function fn(v) { let res = 0; for (var i = 0; i < v.length; i++) { let front = v[i]; let back = v[i + 1]; if (obj[back] > o...

RN-useReducer-Context

app页面定义-->中间文件(LoginContext)-->使用的页面中间文件: import React from 'react'; export default React.createContext();app页面: 先定义: const initiaState = { logined: false, }; function reducer(prevState, action) { let clone = JSON.parse(JSON.stringify(prevState)); switch (action.type) { ...

RN

图标组件库下载:npm i react-native-vector-icons配置:修改文件:android/app/build.gradle添加:apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"引入:import Icon from 'react-native-vector-icons/[class]'; // class为分类目录使用:<Icon name="rocket" size={30}&...

JS笔记

直接返回时间戳:Date.now();当前时间 let newDate = new Date(); let strData = `${newDate.getFullYear()}-${newDate.getMonth() + 1}-${newDate.getDate()} ${newDate.getHours()}:${newDate.getMinutes()}:${newDate.getSeconds()}` console.log(strData);VIDEO倍速:playbackRate

原生AJAX

封装 function ajax() { var ajaxData = { type: arguments[0].type || "GET", url: arguments[0].url || "", async: arguments[0].async || "true", data: arguments[0].data || null, dataType: arguments[0].dataType || ...

随意修改页面内容

document.designMode = "on"; 可以随意编辑页面内容,任何元素支持contentEditable属性的袁术均可以编辑。

NodeJs定时任务

const schedule = require("node-schedule"); let j = schedule.scheduleJob('50 * * * * *', function(){ console.log('1'); }); //取消 // j.cancel()比如实现监控网站运行状况:https://github.com/WishMelz/NodeJsSetIntervalvar later = require('later'); var basic = {h:[9],m:[41]}; var com...

JS随机打乱数组

function randomArr(arr) { for (var i = arr.length - 1; i >= 0; i--) { let index = Math.floor(Math.random() * i); let temp = arr[index]; arr[index] = arr[i]; arr[i] = temp; } return arr } 倒着遍历,生成0-i之间的随机数,互换位置。

Git

git config --global user.name "username" // 设置用户名 git config --global user.email useremail@qq.com //设置邮箱 ssh-keygen -t rsa -C "useremail@qq.com" //设置秘钥 按3次Enter cat ~/.ssh/id_rsa.pub //查看公钥 秘钥地址:C:\Users\Administrator\.ssh查看分支:git branch -a 创建分支:git checkout -b 分...

监听DOM节点变化

VueVue组件加载时会解析template模板中的代码生成一个虚拟DOM对象,保存到内存中。每当函数发送改变时,就会重新解析template中的模板生成新的虚拟DOM对象,然后使用dff算法来对比新的DOM树和原DOM树的区别,找出不同点。然后通过DOM操作来只更新不同的DOM元素。原生JS function changDiv(){ console.log('修改了!~~~'); } let app = document.querySelector('#app') ...

Nodejs托管vue打包文件模版

const express = require('express') const app = express(); var history = require('connect-history-api-fallback'); app.use(history()); app.use(express.static('./dist')) app.listen(9091,()=>{ console.log('http://127.0.0.1:9091'); })

JS二分法寻找数组元素

var arr = [3, 5, 9, 12, 18, 35, 45, 50, 62, 68, 79, 93]; function searching(target) { // start 开始位置 // end 结束位置 // middle 中间位置 // ele 中间的元素 var start = 0, end = arr.length - 1, middle, ele; while (start <= target) { middle = Math.f...

移动端切换背景图片闪烁

var onImg = new Image(); var upImg = new Image(); // 缓存图片 防止卡顿 onImg.src = './images/btnup.png'; upImg.src = './images/btnon.png';

Nginx配置SSL

server { listen 443 ssl; ssl_certificate cert/3652690.pem; # 当前配置文件所在的路径。相对路劲 ssl_certificate_key cert/3652690.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TL...

JS同异步

js在执行代码的过程中,会由上至下。同步在主线程中运行。异步在另外的任务队列中执行。当主线程空闲后,会去看任务队列的内的任务是否完成,完成的推入主线程。在JS中不纯在异步,只能自上而下执行,万一上一行解析时间很长,那么下面的代码就会被阻塞,这就意味着卡死。

Vue双向绑定原理

利用Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现在Vue3.0中使用Proxy替换Object.definePropertyObject.defineProperty 无法监控到数组下标的变化,导致直接通过数组的下标给数组设置值,不能实时响应Object.defineProperty只能劫持对象的属性,需要每个属性每个对象进行遍历。在2.x中,是通过递归和遍历data对象来实现数据监控。如果能直接劫持一个完整的对象更好Proxy可以劫持整个对象,但是Proxy是ES6的...

Vue监听器

watch:{ // 参数一:修改后的值; // 参数二:修改之前的值 参数名字:function(newValue,oldValue){ // 操作 } }比如监听每次跳转的路由watch:{ $route(to,from){ console.log(to.path); } }, OR watch: { $route: { handler: function(val, oldVal){ console.log(val); }, // 深度观察监听 ...