blog
blog copied to clipboard
A personal blog
# Babel介绍 Babel 把用最新标准编写的 JavaScript 代码(ES6, ES7)向下编译成可以在今天随处可用的版本(ES3,ES5)。 这一过程叫做“源码到源码”编译, 也被称为转换编译。并且还可以支持React的JSX写法。 > 15 年 11 月,Babel 发布了 6.0 版本。相较于前一代 Babel 5,新一代 Babel 更加模块化, 将所有的转码功能以插件的形式分离出去,默认只提供 babel-core。原本只需要装一个 babel ,现在必须按照自己的需求配置,无需下载大量无用的依赖 ## 在命令行中使用 Babel 因为 Babel...
CommonJS 和 AMD 是用于 JavaScript 模块管理的两大规范,前者定义的是模块的同步加载,主要用于 NodeJS ;而后者则是异步加载,通过 RequireJS 等工具适用于前端。随着 npm 成为主流的 JavaScript 组件发布平台,越来越多的前端项目也依赖于 npm 上的项目,或者自身就会发布到 npm 平台。因此,让前端项目更方便的使用 npm 上的资源成为一大需求。 web 开发中常用到的静态资源主要有 JavaScript、CSS、图片、Jade 等文件,webpack 中将静态资源文件称之为模块。 webpack 是一个 module bundler (模块打包工具),其可以兼容多种...
Git是一个“分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过“回撤”这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用“回撤”是找不回来的。而“版本管理工具”能记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。 下面的内容就是列举了常用的Git命令和一些小技巧,可以通过"页面内查找"的方式进行快速查询:`Ctrl/Command+f`。 ## 开卷必读 *如果之前未使用过Git,可以学习[廖老师的免费Git教程](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)入门* 1. **一定要先测试命令的效果后**,再用于工作环境中,以防造成不能弥补的后果!**到时候别拿着砍刀来找我** 2. 所有的命令都在`git version 2.7.4 (Apple Git-66)`下测试通过 3. 统一概念: - 工作区:改动(增删文件和内容) - 暂存区:输入命令:`git add 改动的文件名`,此次改动就放到了‘暂存区’ - 本地仓库(简称:本地):输入命令:`git commit 此次修改的描述`,此次改动就放到了’本地仓库’,每个commit,我叫它为一个‘版本’。 - 远程仓库(简称:远程):输入命令:`git push 远程仓库`,此次改动就放到了‘远程仓库’(GitHub等) -...
> 关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限。 ## MongoDB常用命令 ``` > show dbs #显示数据库列表 > show collections #显示当前数据库中的集合(类似关系数据库中的表) > show users #显示用户 > use #切换当前数据库,如果数据库不存在则创建数据库。 > db.help() #显示数据库操作命令,里面有很多的命令 > db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 > db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) >...
开发时经常会出现以下场景 > 请把你当前分支与master 最新版本做一次rebase,我们在合并你的PR > 你把你几个commits squash成一个commit,避免git历史过于复杂和难看 > 你去把你commit 的message修改一下,使得commit 的信息让人更清晰易懂 上述的这些问题常见于PR下面的讨论,下面总结一下解决问题的方法 ## 重写最近的commit 的信息 在提交后, 如果你发现在其描述中发现typo,或者找到一个更好的方式来描述commit。要进行校正: ``` git commit --amend ``` 这时git将进入编辑模式,在这里你可以修改之前的commit 的相关信息 除了简单的编辑commit记录之外,你也可以单单修改coomit的author ``` git commit --amend --author="waltcow...
## 在写node的单元测试的时候我们常用的断言库有 - [should.js](https://github.com/shouldjs/should.js) - [expect.js](https://github.com/Automattic/expect.js) - [chai](http://chaijs.com/) ``` user.should.have.property('name', 'test'); user.enabled.should.ok; expect(5).to.be.a('number'); expect(res.body.data).to.be.deep.equal({}); ``` > 存在的问题 - API种类繁多,需要经常翻阅文档 - 出错时反馈的信息无法准确判断引起的原因,很多时候需要配合log,或者debug的工具 ## Power Assert in JavaScript > Power Assert in...
### ES5/6 object 方法整理 ## Object.assign() `Object.assign()` 用来复制源对象的所有可枚举属性复制到目标对象中,并且返回目标对象 > Object.assign(target, ...sources) ``` let target = {name: 'target'}; let source1 = {age: 23}; let source2 = {email: '[email protected]'}; // ... //...
## 常用的几种对象创建模式 > 使用new关键字创建 ``` var obj = new Object() obj.name = 'foo' obj.age = 24 obj.say = function() { console.log(`my name is ${this.name}, age is ${this.age}`) } ``` >...
### 基于prototype方式 ``` function Super(){ this.val = 1; this.arr = []; } function Sub(){ // ... } Sub.prototype = new Super(); var sub1 = new Sub(); var sub2 = new...