git命令
导航 — 跳到之前的分支git checkout -
查看历史# 每个提交在一行内显示git log --oneline# 在所有提交日志中搜索包含「homepage」的提交git log --all --grep='homepage'# 获取某人的提交日志git log --author="Maxence"
回退操作# 获取所有操作历史git reflog# 重置到相应提交git reset HEAD@{4}# ……或者……git reset --hard <提交的哈希值>
清理仓库git fetch origingit checkout mastergit reset --hard origin/master
查看我的分支与master的不同git diff master..my-branch
编写干净的JavaScript
我们应该编写不言自明、易于理解、易于修改或易于扩展新功能的代码。因为代码常常需要被阅读,这就是为什么如此强调干净代码的原因。
我们的源代码可读性越强,则:
越容易维护新开发人员理解代码所需的时间越少越容易发现哪些代码可以重用在这篇文章中,我将分享一些通用的干净编码原则以及一些特定于JavaScript的干净编码实践。
命名不要把命名变成猜谜游戏。变量和函数的名称最好能够揭示最初创建的意图。如此一来,即使有新的开发人员加入团队,也不至于需要像看天书一样艰难地理解代码。Bad 👎let x = 10;let y = new Date().getFullYear();if (x > 30) { //...}if (y - x >1990) { //...}
Good 👍let userAge = 30;let currentYear = new Date().getFullYear();if (userAge > 30) { //...}if (currentYear - userAge & ...
跨域问题
什么是跨域浏览器有一个重要的安全策略,称之为[同源策略]其中,源=协议+主机+端口源=协议+主机+端口源=协议+主机+端口,两个源相同,称之为同源,两个源不同,称之为跨源或跨域。
比如:| 源 1 | 源 2 | 是否同源 || —- | —- |—-|| www.baidu.com | www.baidu.com/news | 是 || http://www.baidu.com | https://www.baidu.com | 否 || http://localhost:5000 | http://localhost:7000 | 否 || http://localhost:5000 | http://127.0.0.1:5000 | 否 || www.baidu.com | baidu.com | 否 |同源策略是指,若页面的源和页面运行过程中加载的源不一致时,出于安全考虑,浏览器会对跨域的资源访问进行一些限制同源策略对 ajax 的跨域限制的最为_凶狠_,默认情况下,它不允许 ajax 访问跨域资源所以,我们通常所说的跨域问题,就是同源 ...
七个JavaScript的简写方法
多字符串检查通常,如果我们需要检查字符串是否等于多个值中的一个,往往很快就会觉得疲惫不堪,性欲的是,JavaScript有一个内置方法帮助你解决这个问题
// 普通写法const isVowel = (letter) => { if ( letter === "a" || letter === "e" || letter === "i" || letter === "o" || letter === "u" ) { return true; } return false;};// 简写方法const isVowel = (letter) => ["a", "e", "i", "o", "u"].includes(letter);
For-of和For-in循环For-of和For-in循环是迭 ...
JS对象复制
我们知道,赋值运算符不会创建对象的副本,只会分配对它的引用,请看以下代码:
let obj = { a: 1, b: 2,};let copy = obj;obj.a = 5;console.log(copy.a);// Result // a = 5;
obj变量是初始化的新对象的容器。copy变量指向同一个对象,并且是该对象的引用。所以基本上这个{ a: 1, b: 2, }对象是在说现在有两种方法可以访问我:通过obj变量或copy变量以任何一种方式传递给我,并且你通过这些方式对我所做的任何操作都会影响我。
此方法消除了任何形式的不变性,如果原始对象被代码的另一部分使用,可能会导致bug。
复制对象的简单方法复制对象的简单方法是遍历原始对象并一个接一个地复制每个属性。让我们看一下这段代码:
function copy(mainObj) { let objCopy = {}; // objCopy will store a copy of the mainObj let key; for (key in mainObj) ...
腾讯云_宝塔面板部署hexo
前提
已经搭建好hexo博客,并将hexo 部署到GitHub
已经购买好云服务器
已经购买好域名(没有的也可以用IP 地址访问)安装宝塔面板
可以在服务器预装系统选择 宝塔面板
或者对服务器进行重装系统重装完成建议 重置一下服务器登录密码进入腾讯云的控制台输入 sudo /etc/init.d/bt default 可以查看宝塔控制面板地址,下方有账号密码,最好记录下来
进入宝塔 登录输入刚刚的账号密码进入之后 直接点击一键安装默认推荐的软件
安装并配置git仓库在远程服务器上配置好 Git 仓库后,才能将本地的 hexo push 到远端。
打开服务器控制台若当前账号不是root 则通过sudo su root命令切换到root
安装gityum install git
创建Git账户
adduser gitchmod 740 /etc/sudoers
编辑/etc/sudoers文件
vim /etc/sudoers
按i键进入编辑模式, 找到root ALL=(ALL) ALL 在其下方加入
git ALL=(ALL) ALL
输入完成后按esc,再 ...
Vue2 笔记
笔记脚手架文件结构├── node_modules
├── public
│ ├── favicon.ico: 页签图标
│ └── index.html: 主页面
├── src
│ ├── assets: 存放静态资源
│ │ └── logo.png
│ │── component: 存放组件
│ │ └── HelloWorld.vue
│ │── App.vue: 汇总所有组件
│ │── main.js: 入口文件
├── .gitignore: git版本管制忽略的配置
├── babel.config.js: babel的配置文件
├── package.json: 应用包配置文件
├── README.md: 应用描述文件
├── package-lock.json:包版本控制文件
关于不同版本的Vue
vue.js与vue.runtime.xxx.js的区别:
vue.js是完整版的Vue,包含:核心功能 + 模板解析器。
vue.runtime.xxx.js是运行版的Vue,只包含:核心功能;没有模板解析器。
因为 ...
Promise.all() 的小技巧
Promise 在处理异步操作时很有用。JavaScript 提供了一个辅助函数Promise.all(promisesArrayOrIterable)来同时并行处理多个 promise,并在单个聚合数组中获取结果。让我们看看它是如何工作的。
Promise.all()Promise.all() 接受一组 promises(或通常是一个可迭代的)。该函数返回一个 promise:
const allPromise = Promise.all([promise1, promise2, ...]);
然后您可以使用 then-able 语法提取 Promise 解析的值:
allPromise.then(values => { values; // [valueOfPromise1, valueOfPromise2, ...]}).catch(error => { error; // rejectReason of any first rejected promise});
或 async/await语法:
try { ...
回溯算法题
输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"]
/** * @param {string} s * @return {string[]} * 全排列算法: * 固定位置依次递归交换位置穷举出所有的可能性。 */var permutation = function(s) { const char = s.split(''); const res = []; const dsf = function(n) { // 递归的出口,如果是遍历到最后一个位置此方法就解了 if( n === char.length) { res.push(char.join(' ...
html的小技巧
使用capture属性打开设备摄像头正如input标签具有email、text和password属性一样,我们也可以通过一些属性打开移动设备的摄像头以捕获图像。那就是capture属性,属性值有两个:
user用于前置摄像头
environment用于后置摄像头<input type="file" capture="user" accept="image/*">
网站自动刷新你可以在head标签中将网站设置为定时刷新!<head> <meta http-equiv="refresh" content="10"></head>
激活拼写检查你可以使用HTML的spellcheck属性并将其设置为true以激活拼写检查。使用lang属性指定待检查的语言。<input type="text" spellcheck="true" lang="en">
指定要上传的文件类 ...