blog
blog copied to clipboard
Too young, too simple. Sometimes, naive.
Web前后端分离开发思路
**作者**:戴嘉华 **转载请注明出处,保留原文链接和作者信息** --- ## 1. 问题的提出 开发一个Web应用的时候我们一般都会简单地分为前端工程师和后端工程师(注:在一些比较复杂的系统中,前端可以细分为外观和逻辑,后端可以分为CGI和Server)。前端工程师负责浏览器端用户交互界面和逻辑等,后端负责数据的处理和存储等。前后端的关系可以浅显地概括为:后端提供数据,前端负责显示数据。 在这种前后端的分工下,会经常有一些疑惑:**既然前端数据是由后端提供,那么后端数据接口还没有完成,前端是否就无法进行编码?怎么样才能做到前后端独立开发?** 考虑这么一个场景:Alex和Bob是一对好基友,他们有个可以颠覆世界的idea,准备把它实现出来,但是他们不需要程序员,因为他们就是程序员。说干就干,两个就干上了。Alex写前端,Bob写后端。 Alex和Bob都经过良好的训练,按部就班地把产品的主要功能设计,交互原型,视觉设计做好了,然后他们根据产品功能和交互制定了一堆叼炸天的前后端交互的API,这套API就类似于一套前后端开发的“协议”,Alex和Bob开发的时候都需要遵守。例如其中一个发表评论的功能: ``` // API: Create New Comment v2 // Ajax, JSON, RESTful url: /comments type: POST request: {content: "comment content.", userId:...
**作者**:戴嘉华 **转载请注明出处,保留原文链接和作者信息** --- ## 1. 前端自动化工作流简介 每种项目都有自己特定的开发流程、工作流程。从需求分析、设计、编码、测试、发布,一个整个开发流程中,会根据不同的情况形成自己独特的步骤和流程。一个工作流的过程不是一开始就固定的,而是随着项目的深入而不断地改进,期间甚至会形成一些工具。例如当年大神们在Linux写C语言,觉得每次编译好多文件好麻烦,就发明了makefile。不同代码的管理好麻烦,然后就发明了git、SVN等等。 一个工作流程的好坏会影响你开发的效率、开发的流程程度,然后间接影响心情,打击编码积极性。所以我认为开发一个项目的时候,编码前把工作流程梳理清楚确定下来是一个非常重要的步骤。并且这个流程要在真实环境中不停的改进。 对于要负责页面结构和内容、外观、逻辑的前端来说,一个好的工作流至关重要。而且这里中没有银弹。要根据具体项目所使用的框架、应用场景来进行调整独特的工作流。 我会介绍一个我经常使用的前端工作流,这个工作流只是一个原始的流程,一般来说,我会根据不同项目的不同来在这个基础上进行调整,形成每个项目独特的流程。所以这里的重点是领会构建工作流的思路,然后学会举一反三。 一个前端自动化开发流程中,我觉得至少需要做到以下几点: 1. 良好的模块化 2. 自动化编译 3. 自动化测试 4. 实时刷新页面 5. 自动化打包、压缩发布 能用机器的地方就不要自己动手,除了上述必备的几点,有时候要根据特定的情况编写一些Python、Nodejs、Shell脚本来避免重复的操作。好好呵护你的F5和稀疏的脑神经,男人要对自己好一点。 ## 2. 储备知识 在正式介绍之前会先做一些储备知识的介绍,也会略过一些你可能不懂的知识。懂的话可以跳过,遇到不懂的可以自己Google,不要百度。 ### 2.1 工程目录 我的工程目录一般是这个样的:...
翻译自:[Unix Philosophy and Node.js](http://blog.izs.me/post/48281998870/unix-philosophy-and-node-js),未经允许,转载打屁屁(我说真的)。 --- **[译注]** 大一的时候玩过Linux,当时懵懵懂懂(现在也是),好多东西不知道是干diao用的,糊里糊涂地学了一堆命令;最后除了帮隔壁宿舍的后现代主义抠脚大师装系统的时候装X用一下以外基本没有发挥太大的用途。 后来断断续续使用Linux,也没有很深地钻研进去。最近捡回来看了一下,惊异地发现,原来一直以来那些编码中所用到的概念其实很多都源于Unix当中古老的设计。JS中的事件、Node.js中的Stream、多线程(进程)、管道、socket等等,都一一可以在这些古老的设计中找到源头。虽然没有非常深入了解到其中深奥的机制,但是带给我的感觉整个世界就像《三体》里面的三维生物在二维平面展开,很多细节都清晰明了。 在软件这个迭代更新迅速的领域,Unix不得不说是一个奇葩中的奇葩,自从设计完成以后以来基本上没有做过太多的修改,但是却持续地发光发热了几十年,支撑它的不仅仅是它精妙的设计,还有前辈们因为Unix而奠定的Unix哲学,影响了不仅仅是一个操作系统,而是几代Hackers的对程序的理解,对架构的设计。你几乎可以在那些最优秀的Hackers写的每一行代码中看到Unix哲学的身影。 本文的作者[isz](http://blog.izs.me)是[npm](https://github.com/npm/npm)(Node.js包管理器)的主要代码贡献者,在他的文章中,可以窥见Unix哲学对Node.js设计,文化所产生的影响。  以下是正文: --- 在TxJS的另外一天,我做了一个演讲,提到了Unix哲学是Node.js的模式、主张、和文化很重要的一部分。像往常一样,在视频流出之前,我提前把展示用到的[幻灯片](http://j.mp/node-patterns-pdf)放网上。 出于某些原因,简短地提及“Unix哲学”引起了一些人的忿怒。当时我只有25分钟,但是我讲的每一页幻灯片都可以单出拿出来做一个演讲,所以我只好尽量地把精华抽出来讲。视频不能很好地还原当时的场景。但是我的目的是能够引起大家的讨论,所以如果它引起了一些批评,也许我的目标就达到了。毕竟,无知地唱高调只适合说教,我想我最好解释一下。 Eirc S. Raymond在他的_[The Art Of Unix Programming](http://www.catb.org/esr/writings/taoup/html/ch01s06.html)_收集了一些关于Unix哲学的最佳阐述。他详细讨论了17条特定的原则,但是我最喜欢的关于Unix哲学的阐述是Salus在他的_A Quarter Century of Unix_引用Doug McIlroy的简洁的陈述: > 这就是Unix的哲学: >...