Create your own project template

2016-07-26

什么是 project template

这个其实也叫 scaffold,通过它你能够快速搭建起你的项目的脚手架。比如说你可以使用 bundle 来快速生成一个 gem 的基本结构 bundle gem yourgem ; 使用 rails 开发项目的时候, 也可以使用 rails new new_project 来快速搭起脚手架。

而本文即将要说的是如何自己来写这样的一个 template,方便重复使用和快速开发。 我们要用的是 cookiecutter ,类似思想的项目还有很多,比如说 yeoman .

如何使用我们的 project tempalte

其本质思想,简单总结为“填空题”,按照你的配置文件或一定的规范,把你的配置填入 template 的预留空位, 生成一个简单的项目基础,让你可以马上开始动手开发。

对于本次要使用的 cookiecutter , 你可以使用命令:

$ cookiecutter path/to/project-template --config-file /path/to/cookiecutter.json

cookiecutter.json 里面是你项目的一些配置信息,比如项目名字,项目作者等。 这样一个简单的 template 就已经生成好了。

为什么我们要自己写个 project template?

Do Not Repeat Yourself

如果你平时是一个写库写的挺多的人,你可能需要一遍遍地重复一些一份相同的动作, 创建类似的项目结构。那么为什么不写个 template 然后一劳永逸呢。以后不仅可以重复使用, 吃自己的狗粮,还能避免一些 typo 带来的低级错误呢。比如你如果也写一些 rails 的程序, 我个人强烈建议你使用 cli 来生成,而不是手工写,命名带来的 typo 错误,你可能要排查许久才能发现。

“纸上得来终觉浅,绝知此事要躬行”

注意这里我强调了你要自己写自己的,而不是找个用的比较多的然后使用它。对于这个我的想法是这样的, 我个人不太建议新手直接使用现成的 template,理由是它背后的 context 实在太多了,它背后的许多细节你其实都不理解, 我觉得你真的要认真做,比如说 python 的开发,这种事还是自己摸一遍好,我自己也是这么做的。 当然你临时性地用来耍耍,不需要深究,那直接用现成的也未尝不可。

这里还有个问题,你要什么时候自己动手,自己“躬行”呢。我个人的想法是,前期可以不用急着开始动手写自己的 template, 你可以去看看人家怎么写,摸索摸索经验, 可以多试试,这时候你的风格有时很多变,还没有稳定下来。你一旦写的多了, 有感觉了并且风格都差不多确定下来了,那么差不多可以动手写自己的了。

Best practice

写得多了,看得多了,慢慢便有了经验和想法。看看大家的 python 项目结构是怎样的,为什么人家这么组织?人家用到了哪些工具, 为什么他们要用呢,有什么好处?不断总结和思考,搞出一套适合自己的 best practice。

这里我觉得要提醒一下,有了自己的 template 以后不能不思进取,就不去看了,这样你的 template 还是陈旧而落后的, 还是要学习一个的。

碎碎念

“只要你爱学爱问爱动脑,天地间奇妙的问题你全明了~”。这首蓝猫的歌是我写这篇博客时脑海中的 BGM。

Til next time,

lord63 at 22:07