持续更新
esm
ES module的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。
esm特点
- 存在模块作用域,顶层变量都定义在该作用域,外部不可见
- 模块脚本自动采用严格模式
- 模块顶层的
this关键字返回undefined - esm 是编译时加载,也就是只有所有
import的模块都加载完成,才会开始执行 - 同一个模块如果加载多次,只会执行一次
esm使用
- ES6模块导入使用import...from...,{}里存放导入的方法
- 可以一起导入,也可以分开导入
- named as myName中的as为重命名
- import * as mylib from 'src/lib' 把模块里定义导出的所有方法,绑定到mylib对象上
- import 'src/mylib'代表只是把文件模块加载进来,没有调用相关方法
commonjs 和 esm 的主要区别:
- 输出拷贝 vs 输出引用
- esm 的 import read-only 特性
- esm 存在 export/import 提升
git提交
格式
type(scope) : subject
1.type(必须)
commit 的类别,只允许使用下面几个标识:
- feat : 新功能
- fix : 修复bug
- docs : 文档改变
- style : 代码格式改变
- refactor : 某个已有功能重构
- perf : 性能优化
- test : 增加测试
- build : 改变了build工具 如 grunt换成了 npm
- revert : 撤销上一次的 commit
- chore : 构建过程或辅助工具的变动
2.scope(可选)
用于说明 commit 影响的范围:
- all :表示影响面大 ,如修改了网络框架 会对真个程序产生影响
- loation: 表示影响小,某个小小的功能
- module:表示会影响某个模块 如登录模块、首页模块 、用户管理模块等等
3.subject(必须)
commit 的简短描述,不超过50个字符。
Git hook
和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。通过其对git提交进行检查,可以将不规范的git提交操作打回。
BEM命名规范
规范
block 代表了更高级别的抽象或组件
block__element 代表 block 的后代,用于形成一个完整的 block 的整体
block--modifier代表 block 的不同状态或不同版本
样例
.b_m :
<div class="b b_m"></div>
.b_m1._m2:
<div class="b b_m1 b_m2"></div>
.b>._m:
<div class="b">
<div class="b b_m"></div>
</div>
.b1>.b2_m1>.-e1+.--e2_m2:
<div class="b1">
<div class="b2 b2_m1">
<div class="b2__e1"></div>
<div class="b1__e2 b1__e2_m2"></div>
</div>
</div>
参考文章: