前端工作流实战

今天的命题是,制作几个到几十个基于Bootstrap的页面模板,然后交给后端程序员,也就是说,我要做的并不是业内讨论最多的全栈开发,而是只负责给后端程序员提供网页代码。

基础知识

一般网站往往架构在后端MVC框架中,由后端程序猿做主导,所以:

1、前端程序猿要对后端MVC框架有基本的了解,尤其是MVC中的V。
2、懂得V之后,就要掌握模板引擎的规则。前端模板引擎跟后端模板引擎很相似,做一些字符替换就可以将前端引擎的代码段改成后端引擎的。

我在参考了一些简单项目的前端工作流之后,搞了这么一个简单的前端工作流。

项目目录

项目目录的设定可谓众说纷纭,各有各的设定方案,比如静态目录的命名,有人用public,有人用static……我认为没必要太纠结,原因是,你作为前端开发者,你的项目目录是要先跟后端程序猿协商的,后端开发者有他的一整套目录设定方式,他设定的目录结构才是真正在服务器上体现的目录结构,所以,前端项目的目录设定原则,是为了让自己方便开发,也为了方便的传到测试服务器的指定目录中。

再简单点说,前端项目的目录结构,只要能保证前端开发者以最一目了然、最高效的方式做开发,上传到测试服务器可以直接用,就可以了。

基于上述的原则,我把项目目录分为7个子目录:

api:模拟网站API。
media:内容视频、内容音频。
img:网站所用的内容图片。
libs:js库和css库。
work:工作目录,所有需要编写的模板(利用gulp-include组合HTML代码)、html、js和css都在里面。
build:构建目录也是测试目录,用于本地预览和测试,测试通过的话,就生成dist目录里的内容
dist:交付目录,build跟dist的区别是,build的css和js文件都没有合并,更没有压缩,html文件也没有压缩,而dist的所有文件都经过了合并、压缩,并且还有一些其他的后置处理措施,比如后端会让你把合并起来的HTML再拆开,因为你的HTML只是后端MVC的V,V是需要拆成各种模块的,而且后端还会对模板做一些修改,比如加入各种模板标签,这些都应该由后端跟前端商议好,由前端利用gulp完成。

方案的制定原则是:

1、保证工作目录、开发目录和上线目录的内容尽可能的简单。因为html/tpl/js/css是最常编辑的文件,而内容图片、API很少修改,库、字体更是不会修改,所以都应该择出来。
2、img文件夹内存放内容图片,它不用编辑,所以择出来。但是注意,它需要一个监视器来监视文件的添加,一旦有添加,就自动压缩体积,然后覆盖源图。
3、libs文件夹的定位是:存放js库和css库以及字体库。
4、api文件夹的定位是:开发的时候使用,上线不用,所以单独存放。
5、media文件夹:存放视频和音频。如果你确定你的项目绝没有可能用到音频和视频,那么这个文件夹可以取消。

.
│  
├─api 模拟网站API,存放各种json文件
├─dist 略过
├─build
│  ├─css 由scss编译的css
│  │  ├─global 全站共用css以及bg
│  │  └─index 单页使用css以及bg
│  ├─html
│  │      index.html 单页
│  │      
│  └─js
│      ├─global 全站共用js
│      └─index 单页使用js
├─img 内容图片
├─libs js库和css库以及字体库
├─media 视频和音频
└─work
    ├─scss
    │  ├─global 全站共用scss以及bg
    │  └─index 单页使用scss以及bg
    ├─html
    │      index.html 单页
    │      
    ├─js
    │  ├─global 全站共用js
    │  └─index 单页使用js
    └─tpl
        ├─global 全站共用tpl
        └─index 单页使用tpl

技术选型

只兼容IE8和以上,特选型如下:

Bootstrap 3最新版 + 插件
jQuery 1版本 + jQuery插件 + 第三方库
gulp
SASS

基本文件准备

api

留空

dist

留空,本文不涉及上线环节

build

可以留空,依赖gulp创建文件夹和文件

libs

js库和css库按照项目名建立文件夹,不要在路径中包含版本号。版本号的更新方式是以新版本文件覆盖老文件,然后HTML中修改路径的版本号参数。

字库,比如glyphicons-halflings和Font Awesome,都跟随同名css库存放,如果有其他字库,比如fa和阿里的iconfont,也当做css库存放进来。

work

html

将一个html骨架文件放到html目录,命名为index.html

tpl

1、建立global文件夹,放共用的tpl区块文件
2、建立index文件夹,放index.html相关的tpl区块文件

scss

1、建立global文件夹,放共用的区块用的css文件
2、建立index文件夹,放index.html相关的区块用的css文件

js

1、建立global文件夹,放共用的区块用的js文件
2、建立index文件夹,放index.html相关的区块用的js文件

img

1、建立global文件夹,放共用的区块用的img文件
2、建立index文件夹,放index.html相关的区块用的img文件

media

如果全站总共需要几个或少于50个media文件,那么没必要分文件夹。如果有几百个,需要按下面的方式建立文件夹。
1、建立global文件夹,放共用的区块用的media文件
2、建立index文件夹,放index.html相关的区块用的media文件

处理Bootstrap

把Bootstrap 3.3.7-sass的源代码下载下来之后我们看一下。

js源文件:/assets/javascripts/
scss源文件:/assets/stylesheets/

把放到下面对应的文件夹里。

bootstrap
│  
├─jssrc
├─scss

然后把bootstrap放到libs文件夹中。

Bootstrap的特殊之处是它是我们项目里唯一的需要定制然后编译的库,其他的库都无需修改。所以,未来定制好bs之后,要把编译好的css文件、js文件也放到bootstrap文件夹里,也就是:

bootstrap
│  
├─css
│      bootstrap.css
│      bootstrap.css.map
│      bootstrap.min.css
│      bootstrap.min.css.map
│      bootstrap-flex.css
│      bootstrap-flex.css.map
│      bootstrap-flex.min.css
│      bootstrap-flex.min.css.map
│      bootstrap-grid.css
│      bootstrap-grid.css.map
│      bootstrap-grid.min.css
│      bootstrap-grid.min.css.map
│      bootstrap-reboot.css
│      bootstrap-reboot.css.map
│      bootstrap-reboot.min.css
│      bootstrap-reboot.min.css.map
├─js
│      bootstrap.js
│      bootstrap.js.map
│      bootstrap.min.js
│      bootstrap.min.js.map
├─jssrc
├─scss

gulp和其他包

gulp和其他包需要安装在你的本地服务器的根目录,这样它们可以操纵你的服务器根目录里面的所有文件。

更高层的目录结构

服务器根目录下,应新建一个项目,比如叫tuangou,假设咱们要搞个团购网站。里面就按照上面我说的工作流的目录建。

本机虚拟主机设置

虚拟主机应当指向项目目录。预览build/html文件夹里的HTML的话,就用这个虚拟域名即可。虚拟域名要在hosts文件中也设好。

虚拟域名和本机IP要告诉后端程序猿。

测试服务器设置

根据与后端程序猿的商定方针,你按规定,把dist里面的相关文件上传到测试服务器即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容