前端开发:工具和流程

在dailyReport项目中,我通过SpringBoot + Mongodb + Redis构建了后端RESTful接口,现在需要客户端展现了,但是我的web和移动开发都是初学者,只能从头学起。

在谷歌上浏览资料过程中,偶然遇到ThoughtWorks的这篇文章:我们真的缺前端工程师么? 认真读下来,首先佩服文中作者的学习能力,然后欣赏ThoughtWorks这种以feature为单位的团队组建方式。文章的核心观点在于:我们不是缺前端工程师,我们是缺优秀的前端工程师。

我再激进一点,我的观点是:我们不是缺前端工程师,我们是缺优秀的具备匠心的工程师。原文引用了《肖申克的救赎》中的一段话来说明环境对人的限制和塑造,我也放在这里,提醒我的读者:不要轻易给自己设限。

These walls are kind of funny like that. First you hate them, then you get used to them.Enough time passed, get so you depend on them. That’s institutionalising.

我在阅读上文的时候,文中提到《3周3页面》这本电子书,于是我在selfstore上买来看了,本文的内容算是我的读书笔记。我们今天的主题是:当下前端开发的工具以及开发流程。

开发工具

1. Compass/Sass

Compass*是一个Sass到Css的预编译工具,它还包括一些使用了Sass的库,将很多样式打包成一些模块,可以在自己的项目中使用这些模块。

Sass是一个CSS3的扩展语言,提供了丰富的特性使得编写样式更容易(呵呵,CSS的基础知识还是得学,设定的曲线平缓一点,慢慢来)。sass提供几个主要功能来改进css的代码结构:可嵌套、变量定义、可扩展、可导入和mixin等。

2. Sublime编辑器

Sublime是一个非常好用、非常现代的编辑器,据说是专业的前端都用它(Atom默默地瞪了我一眼)。

  • Package Control,装上Sublime之后,首先安装Package Control这个包管理工具,用于安装其他的插件。
  • Emmet,是一个快速生成HTML片段的工具,它支持很多编辑器,包括Sublime、Textmate、Notepad++等。它的用法可以描述如下,写出表达式section>h2+p*3,光标在末尾的时候单击tab键,就会生成如下html代码。使用Emmet可以极大减少体力活的时间(不过HTML5的基础还是要学,再说一次,零基础的同学不要给自己的学习曲线设得太陡)。
    <section>
    <h2></h2>
    <p></p>
    <p></p>
    <p></p>
    </section>
  • HTML + CSS + JS Prettify,用于格式化HTML、CSS以及JavaScript文件的插件。在Mac上,通过快捷键Command + Shift + H来触发格式化的动作。

  • GitGutter,一个用来在Sublime增强Git效果的插件,可以实时看到当前文件的修改状态。

3. Guard + LiveReload

Guard是一个命令行工具,可以检测到本地文件的修改,并且可以触发一些命令。例如,当HTML文件修改时,我们希望浏览器能够自动刷新,或者当scss文件修改时,我们希望能够自动触发Compass进行一次修改。Guard的监控规则通过Guardfile来定义,例如:

guard 'livereload' do
  watch('index.html')
  watch(%r{stylesheets/.+\.(css)})
  watch(%r{scripts/.+\.(js)})
end

guard: compass

LiveReload是一个浏览器插件,它可以跟后台的guard服务通信:当guard检测到页面有改动时,则会通知该插件,然后该插件会自动刷新页面。

4. 静态服务器

只要你的机器上安装了Python,就会有一个简单的http服务器,启动命令是:python -m SimpleHTTPServer 9999

5. 模板工程

模板工程的github地址是:web模板工程,读者朋友可以直接使用。

开发流程

启动两个终端,一个启动guard,另一个启动景台服务器;然后启动浏览器。假设你已经在浏览器中安装了Livereload,并单击LiveReload图标,那么在guard后台会出现“Browser connected”字样,就说明guard服务和Livereload插件已经建立连接了。

参考资料

  1. 3周3页面
  2. HTML & CSS 设计与构建网站
  3. 设计中的设计 原研哉


上一篇:jvm堆内存优化详解


下一篇:如何让 Flutter 应用更好地使用 SVG?