esm等常用规则整理

449 阅读2分钟

持续更新

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>

参考文章:

javascript中的esm