• 喜欢用 Git 做的一些小事

    作者:@csswizardry

    原文:Little Things I Like to Do with Git

    随便说点:这篇文章主要从管理者的角度谈论了使用 git 的心得,使用大量篇幅介绍 git log 的一些方法和技巧。

    同样地,发现很多人其实并没有深入全面地去了解过 git 的用法,作为一名开发人员,大多数时候只要会使用 git pullgit addgit commitgit push 似乎就足够,还有很大一部分人只使用特定的图形化工具。但事实上真的是这样吗,可能在遇到某个稍微高级一点的问题或者需求就手足无措。对于某个特定个体而言,很多场景我们未必会遇到,即使碰到也可以现场寻求搜索工具的帮助,这也是一种学习方式,无意否定这种方式,但最大的问题就是只见一叶而难以窥见森林。在这里推荐一个小工具 githug,通过一种比较轻松的游戏的方式来一探全貌。

    在跟我的朋友 Tim 聊天的时候,谈到我有多喜欢 Git。作为经常使用的一个工具,它强大而优雅。在这里,介绍一下我个人使用得最多,同时也是最有用的一些小技巧。

    管理者面板

    无论你认为在工作中的游戏化(gamification)和竞争是好是坏,对于这个话题在不同的时间可能是完全不同的结论。但如果你对团队成员在项目中的提交数量感兴趣,使用 shortlog 就可以找到答案:

    (请忽略我)

    (我只是占位的)


  • 移除在 ESM 模式生成的严格模式

    起源

    项目升级构建方式,以前的代码采用 AMD 风格组织代码,并使用 r.js 完成打包优化工作。后续成员选择采用 ES6 的风格编写代码,然后 webpack + babel 完成打包构建。迁移工作并不如想象中那么容易,终于完成各种配置,测试时候发现问题:抛出一个语法错误。错误很快被定位,属于历史代码的不规范写法,之所以现在暴露出来是因为新的构建方式会加入 "use strict"

    严格模式

    在编写代码的过程中,我们使用 strict mode 是一种很好的方式,严格模式会将 JavaScript 陷阱直接变成明显的错误,比如未声明导致的全局变量,可以让我们开发过程中就发现错误。

    众所周知,JavaScript 这门语言之前存在大量不好的设计,使用严格模式意味着在采用一种限制性更高的方式编写代码,同时更 “安全”。但这里所谓的安全在生产环境又可能是另外一回事,尤其是对于那些上了年纪的历史代码,我们更倾向于在生产环境去除严格模式。

    ES2015+

    现在大部分人已经在使用更强大,更具有表现力的 ES2015+ 编写代码。可能还会使用到 babel 来转化成用于生产环境运行的代码,在使用 preset es2015 时,会自动加入 “use strict”

    babel 的处理方式是将 ES2015 模块转换成 CommonJS 格式的,然后再统一处理,即 transform-es2015-modules-commonjs,这个插件位于 preset es2015 中,并且依赖于 transform-strict-mode

    也许你会想去掉严格模式

    也许你会想去掉严格模式,毕竟对于一些历史代码,很难预测加入严格模式会导致什么异常。

      ...


  • 编写现代 JavaScript 代码

    原文作者:Sébastien Castiel

    原文链接:Writing modern JavaScript code

    说点什么:这是一篇很朴素的文章,讲的道理都懂,但实际上,在工作中遇到类似的情形却未必如此,编写可维护,可阅读,更安全的代码是我们应有的责任。

    是不是还认为 JavaScript 是一门用于在光标悬浮时改变页面元素的语言?这些日子已经不复存在,每一种语言都在随着时间推移而发展,我们使用语言的方式同样也在发展。看一下你一两年前写的代码:会感到羞愧吗?如果是的话,这篇文章应该很适合你。

    这里会列出一些所谓的最佳实践,目的是让你的 JavaScript 代码更容易编写,阅读和维护。

    使用可格式化代码的 linter

    第一个建议是使用 linter 工具,可以帮助你检查在不同文件是否遵守一致的规则,尤其是当不同开发人员在同一个项目上工作:缩进,括号中的空格,替换 =====

    但更重要的是,尽可能使用 linter 工具自动修复代码。ESLint 就做得很好(带有 --fix 选项),而且与所有主流 IDE 完美集成,可以在保存时自动修复文件。

    还可以使用 Prettier,不过这款工具更注重格式化而不是静态检查,但处理后的结果基本相同。

    下一步将介绍与 linter 工具一起使用的规则:

    为你的 linter 定制现代化的规则

    如果不知道你的代码需要什么样的规则,可以参考:


  • ELSE 技术周刊(2017.06.02期)

    业界动态

    Node 8 Released

    Node 8 已经发布,带来一系列重大变化和更新,同时 NPM 也更新到 5.0.0。

    What are the differences between the lockfiles of Yarn and npm 5?

    NPM 5 重新设计 shrinkwrap,命名为锁包,跟 Yarn 的锁文件有什么区别呢?

    TIOBE Index for May 2017

    值得关注的是 Go 的排名,从前一年的第 42 名上升到第 16 名!

    技术纵横


  • JavaScript 模块化现状

    原文作者:Johannes Ewald @Jhnnns

    原文链接:The state of JavaScript modules

    已获原作者授权翻译及发布

    ESM, CJS, UMD, AMD — 到底应该选择哪一个?

    最近 在 twitter 上有很多关于 ES Module 现状的讨论,尤其是在 Node.js 上,他们计划引入新的文件扩展名 *.mjs。人们有足够理由对此感到 担忧和不确定,因为这个话题异常复杂,接下来会尽力阐述清楚问题。

    来自远古的恐惧

    大多数前端开发者应该还记得 Javascript 依赖管理的黑暗时期。那个时候,你需要把一个库复制粘贴到 vendor 文件夹,然后作为一个全局变量引入,要自己去按次序组合所有东西,可能还要管理命名空间。

    在过去的那些年,我们能深刻体会到公共模块格式化和中央模块管理的价值。

    在今天,不管是发布还是使用一个库都要容易得多,只需要使用 npm publishnpm install...