前端网站推荐
个人收藏夹推荐
panjiachen by 花裤衩
编程导航 by 程序员鱼皮
编程自学之路 by 程序羊
前端知识图谱+B站资源整合 by 技术胖
大圣编程自学网 by 大圣
开发者武器库
工具大全
::: center关注公众号[有趣研究社],回复前端资源,获取 前端学习资料:::
文档
MDN | MDN-JS标准内置对象 Web技术权威文档
DevDocs Web 开发技术文档,非常不错的学习手册!
现代JavaScript教程 以最新标准为基准的JS教程
ES5教程 阮一峰的JS教程
ES6教程 阮一峰的ES6教程
Bash 脚本教程 阮一峰编写
ECMA ECMA官网
菜鸟教程 涵盖多种语言的初级教程
腾讯云开发者手册
社区
Github 程序员同性交友社区
掘金 一个帮助开发者成长的社区
简书 有很多频道的创作社区
思否 解决技术问题的社区
stack overflow 同上,外网的
InfoQ 促进软件开发及相关领域知识与创新的传播
V2EX 创意工作者们的社区
鱼塘热榜 划水网站,收集了很多网站,当天热门文章
码力全开资源库 很全很强大,独立开发者/设 ...
Git变基合并
rebase分支合并说明以下 v2 是某个需求的开发分支, dev是总的开发分支,v2 是基于dev分支签出的。
当完成v2的开发后,需要把代码合并到dev,我们可以使用rebase进行合并:
12345678910111213141516171819202122232425262728# 首先将 v2 push到远程仓库git add .git commit -m 'xxx'git push origin v2# 切换到 dev 拉取最新代码git checkout devgit pull origin dev# 切换到 v2git checkout v2git rebase dev # 将 v2 的所有[commit] 变基到(应用到) dev# 切换到 devgit checkout devgit merge v2 # 将 dev分支 快进合并 (此时 (HEAD -> dev, v2) [commit] 两个分支指向同一个提交)# 查看 原v2的[commit]记录 是否在dev分支的最前面(变基成功会把v2的提交记录应用到dev分支的最前面)git ...
常用Git命令清单
常用Git命令清单一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。
下面是一些常用 Git 命令清单。几个专用名词的译名如下。
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
一、新建代码库12345678# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]
二、配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
123456789# 显示当前的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--g ...
GitHub加速下载项目的方法
GitHub加速下载项目的方法国内在github上克隆项目总是异常的慢,据我多次克隆观察,下载速度最快就20k/s左右,特别是在克隆比较大的项目时简直慢得无法忍受!下面介绍一种加载克隆项目的方法。
利用码云来转接做下载加速
首先你得有一个 码云 的账号
登录码云之后在页面右上角的加号选择从GitHub/GitLab导入项目
选择从URL导入,粘贴从GitHub复制来的仓库地址,然后导入,这个导入过程一般是很快的。
从码云克隆刚导入的这个项目,克隆速度会快很多,网速好的能达到几兆每秒(具体速度就看你的网速了,吐槽一下我家网速,总在关键时刻显示”视频加载中”….)
另外要注意的一点,克隆下来的项目关联的是码云的仓库,如果你需要关联github仓库需要更改远程仓库。
123git remote -v # 查看关联的远程仓库git remote rm <仓库名> # 删除远程仓库git remote add <仓库名> <远程仓库地址> # 关联远程仓库,仓库名一般使用origin
这个方法适合用于克隆比较大的项目,如果克隆小项目,20 ...
Vue大合集
脚手架文件结构├── 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,只包含:核心功能;没有模板解析器。
因为vu ...
文字在一行或多行时超出显示省略号
文字在一行或多行时超出显示省略号一行超出显示省略123overflow: hidden;white-space: nowrap;text-overflow: ellipsis;
两行(多行)超出显示省略号123456overflow: hidden;white-space: normal;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;
显示的行数由line-clamp样式的值决定。
JS判断是否显示了省略号有时候我们需要知道是否已经溢出,显示了省略号,可以用到clientHeight和scrollHeight的知识:
1234567let cHeight = noWrapDiv.clientHeight;let sHeight = noWrapDiv.scrollHeight;if (sHeight > cHeight) { console.log("已经溢出显示省略号");} el ...
JS获取和修改url参数
JS获取和修改url参数获取url参数123456789101112/** * 获取url里的参数 * @param arg 参数名 * @returns */function getURLString(arg) { var reg = new RegExp("(^|&)" + arg + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null;}
修改url参数12345678910111213141516171819202122/** * url地址修改 * @param url 待修改url * @param arg 修改的参数名 * @param arg_val 修改的具体值 * @returns {String} */ ...
new命令原理
new命令原理 使用new命令时,它后面的函数依次执行下面的步骤:
创建一个空对象,作为将要返回的实例对象。
将这个空对象的原型,指向构造函数的prototype属性。
将这个空对象赋值给函数内部的this关键字。
开始执行构造函数内部的代码。
如果构造函数内有返回值且为对象类型,则返回该对象,否则返回上面创建的实例对象。
12345678910111213141516171819202122232425262728293031323334353637383940414243// 构造函数function Person(name,age){ this.name = name this.age = age}// 自定义_newfunction _new() { // 将 arguments 对象转为数组 var args = [].slice.call(arguments); // 取出构造函数 var constructor = args.shift(); // 创建一个空对象,继承构造函数的 prototype 属性 va ...
多种数组去重性能对比
多种数组去重性能对比测试模板1234567891011121314151617181920212223// 创建一个 1 ~ 10w 的数组,Array.from为ES6语法let arr1 = Array.from(new Array(1000000), (x, index) => { return index})let arr2 = Array.from(new Array(500000), (x, index) => { return index + index})let start = new Date().getTime()console.log('开始数组去重')// 数组去重function distinct(a, b) { let arr = a.concat(b); // 去重方法}console.log('去重后的长度', distinct(arr1, arr2).length)let end = new Date().getTime()cons ...
将一维数组按指定长度转为二维数组
将一维数组按指定长度转为二维数组将一维数组按指定长度转为二维数组
12345678910111213141516function pages(arr, len) { const pages = [] arr.forEach((item, index) => { const page = Math.floor(index / len) if (!pages[page]) { pages[page] = [] } pages[page].push(item) }) return pages}// 使用const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]console.log(pages(arr, 3)) // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]console.log(pages(arr, 8)) // [[1, 2, 3, 4, 5, 6, 7, 8], [9]]
...