前端单页面多人协作的实践(node + jade + sass + github)

题图题图

21 Sep 2015

Author:wuguanxi


0、前言

公司发展迅速,前端团队由1人发展至3人,理论上应该是生产力乘以3倍,但是怎样在一个页面里完全发挥3人的力量需要很好的协作机制。

我们的本地开发环境是node,配合jade模版引擎,和用sass写css样式并用github管理代码。

1、页面分解

每个页面除了头部与脚步这些公共部分,在主要内容根据设计划分成若干部分(page)。

jade模版允许使用 include 来包含其他.jade文件,使任务的分解成为可能。


// jade文件层级结构
----includes
 |   |--page1.jade
 |   |--page2.jade
 |   |--page3.jade
 |   |--page4.jade
 |
 |--main.jade

// main.jade 
doctype html
html
  head
    meta(charset="utf-8")
    meta(name="viewport",content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no,minimal-ui")
    title 中秋活动
    link(rel='stylesheet', href='/attachment/mid-autumn/stylesheets/mid-autumn.css')
    script(src="/js/jweixin-1.0.0.js")
  body
    section.loading#loading
    section.MA-main.hide
      .MA-page1.pages
        include ./includes/page1
      .MA-page2.pages.hide
        include ./includes/page2
      .MA-page3.pages.hide
        include ./includes/page3
      .MA-page4.pages.hide
        include ./includes/page4

2、样式分解

相似的,利用sass的import功能也能把样式分解成对应的.scss文件。


// sass文件层级结构
--sass
  |--_mid-autumn-page1.scss
  |--_mid-autumn-page2.scss
  |--_mid-autumn-page3.scss
  |--_mid-autumn-page4.scss
  |--mid-autumn.scss

_表示是可导入的文件。


// mid-autumn.scss

@import "compass/reset";
@import "compass/css3";
@import 'mid-autumn-page1';
@import 'mid-autumn-page2';
@import 'mid-autumn-page3';
@import 'mid-autumn-page4';

html{
  -ms-text-size-adjust: 100%; 
  -webkit-text-size-adjust: 100%;
  font-family:"Microsoft YaHei", "Helvetica Neue", Helvetica, STHeiTi, sans-serif; 
  width: 100%;
  height: 100%;
  font-size: 100px;
  overflow-x:hidden; 
  overflow: auto;
  background-color:#261fa6;
  line-height: 1.375;
}
body{
  @include user-select(none);
  margin: 0 auto;
  width: 100%;
  height: 100%;
  max-width: 640px;
  text-align: center;
  background-color: #261fa6;
  font-size: 0.12rem;
  color: #fff;
  @include box-sizing(border-box);
}
input{
        -webkit-box-sizing:border-box;
      }
a,lable,button{-webkit-tap-highlight-color:rgba(0,0,0,0); }

pages{
  //code
}

// _mid-autumn-page1.scss

@import "compass/css3";

.MA-page1{
  //code
}

// _mid-autumn-page2.scss

@import "compass/css3";

.MA-page2{
  //code
}

// _mid-autumn-page3.scss

@import "compass/css3";

.MA-page3{
  //code
}

// _mid-autumn-page4.scss

@import "compass/css3";

.MA-page4{
  //code
}

编译时,sass会自动合并以上文件到mid-autumn.css很省心。

3、github上管理和合并代码

结构和样式都分解完毕,最后各自领任务。

各自开发完毕,把代码上传github,再合并代码。


// 常用的git命令
$ git clone "url"             //克隆远程仓库到本地
$ git status               //查看工作区域状态
$ git add -A               //添加到暂存区
$ git commit -m "someting" //添加版本
$ git pull                 //拉取远程仓库并合并代码,提示冲突
$ git push                 //提交代码到远程仓库
$ git log                  //查看版本日志

然后是关于.gitignore这个文件,其作用是在git add的时候排除特定的文件,通常用于排除临时文件和系统文件。

我的.gitignore配置如下:


# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
*.lnk

# Mac
.DS_Store

# Sass
.sass-cache/
*.css.map

# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directory
# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
node_modules

写在最后

合理使用新工具,新技术,提高工作效率,减少加班时间去锻炼身体和学习新的技术!