├── .idea
├── .name
├── vcs.xml
├── jsLibraryMappings.xml
├── modules.xml
├── resume-master.iml
├── libraries
│ └── resume_master_node_modules.xml
├── misc.xml
├── watcherTasks.xml
└── workspace.xml
├── .gitignore
├── src
├── img
│ └── resume.png
├── handlebars
│ ├── partials
│ │ ├── description.hbs
│ │ ├── skill.hbs
│ │ ├── intern.hbs
│ │ ├── experience.hbs
│ │ ├── sidebar.hbs
│ │ ├── education.hbs
│ │ └── header.hbs
│ └── index.hbs
└── less
│ ├── partials
│ ├── description.less
│ ├── intern.less
│ ├── skill.less
│ ├── sidebar.less
│ ├── experience.less
│ ├── headers.less
│ └── educations.less
│ ├── common
│ ├── variables.less
│ └── main.less
│ └── index.less
├── bower.json
├── package.json
├── LICENSE
├── README.md
├── script.js
├── resume.json
└── gulpfile.js
/.idea/.name:
--------------------------------------------------------------------------------
1 | resume-master
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules*
2 | bower_components
3 | build
4 | .publish
--------------------------------------------------------------------------------
/src/img/resume.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hawx1993/resume-master/HEAD/src/img/resume.png
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/handlebars/partials/description.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{#each self_desc}}
4 | {{#each description}}
5 | {{this}}
6 | {{/each}}
7 | {{/each}}
--------------------------------------------------------------------------------
/src/less/partials/description.less:
--------------------------------------------------------------------------------
1 | .desc_header{
2 | background-color: #f3f3f3;
3 | height: 24px;
4 | margin-left: -30px;
5 | }
6 | .self_content{
7 | .fontSet;
8 | text-indent: 14px;
9 | margin-top: -6px;
10 | }
11 |
--------------------------------------------------------------------------------
/.idea/jsLibraryMappings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/less/common/variables.less:
--------------------------------------------------------------------------------
1 |
2 | @font-family: SimKai, 楷体, 楷体_GB2312, Kai, 华文楷体;
3 | *{font-weight: normal}
4 | @A4-width: 210mm;
5 | @A4-height: 297mm;
6 | *{
7 | box-sizing: border-box;
8 | -webkit-box-sizing: border-box;
9 | -moz-box-sizing: border-box;
10 | }
--------------------------------------------------------------------------------
/src/handlebars/partials/skill.hbs:
--------------------------------------------------------------------------------
1 | {{#each skill}}
2 |
3 |
{{summary}}
4 | {{#each description}}
5 |
8 | {{/each}}
9 |
10 | {{/each}}
11 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/less/index.less:
--------------------------------------------------------------------------------
1 | @import "common/variables";
2 |
3 | @import "common/main";
4 |
5 | @import "partials/headers";
6 |
7 | @import "partials/sidebar";
8 |
9 | @import "partials/educations";
10 |
11 | @import "partials/experience";
12 |
13 | @import "partials/intern";
14 |
15 | @import "partials/skill";
16 |
17 | @import "partials/description";
--------------------------------------------------------------------------------
/src/handlebars/partials/intern.hbs:
--------------------------------------------------------------------------------
1 | {{#each works}}
2 |
3 |
4 | {{intern_jobs}}
5 |
6 | {{#each description}}
7 |
10 | {{/each}}
11 |
12 | {{/each}}
--------------------------------------------------------------------------------
/src/less/partials/intern.less:
--------------------------------------------------------------------------------
1 | .intern_column{
2 | .fontSet;
3 | .intern_desc{
4 | background-color: #f3f3f3;
5 | text-align: left;
6 | vertical-align: middle;
7 | line-height: 2;
8 | color: #3d85c6;
9 | width: 100%;
10 | height: 24px;
11 | font-weight: bold;
12 | padding-left: 10px;
13 | }
14 | ul{margin-left: 10px}
15 | }
16 |
--------------------------------------------------------------------------------
/.idea/resume-master.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/handlebars/partials/experience.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{#each experience}}
4 |
5 |
6 | {{project_name}}
7 | {{rightDescription}}
8 |
9 | {{#each description}}
10 |
13 | {{/each}}
14 |
15 | {{/each}}
--------------------------------------------------------------------------------
/.idea/libraries/resume_master_node_modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/less/partials/skill.less:
--------------------------------------------------------------------------------
1 | .skill{
2 | margin-left: -30px;
3 | .fontSet;
4 | font-size: 13px;
5 | .skill_border{
6 | border-right: 3pt solid #93c47d;
7 | }
8 | .skill_desc{
9 | background-color: #EEEEEE;
10 | height: 24px;
11 | text-align: left;
12 | vertical-align: middle;
13 | border-left: 3pt solid #93c47d;
14 | color: #666;
15 | font-size: 10pt;
16 | line-height: 2;
17 | padding-left: 10px;
18 | margin-top: 22px;
19 | }
20 | ul{margin-left: 30px;}
21 | }
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "resume-master",
3 | "description": "A resume generator read data from json",
4 | "main": "gulpfile.js",
5 | "authors": [
6 | "trigkit4"
7 | ],
8 | "license": "MIT",
9 | "keywords": [
10 | "resume"
11 | ],
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/hawx1993/resume-master.git"
15 | },
16 | "moduleType": [],
17 | "homepage": "https://github.com/hawx1993/resume-master",
18 | "private": true,
19 | "ignore": [
20 | "**/.*",
21 | "node_modules",
22 | "bower_components",
23 | "test",
24 | "tests"
25 | ],
26 | "dependencies": {
27 | "jquery": "~2.1.4"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/less/partials/sidebar.less:
--------------------------------------------------------------------------------
1 | .timelineWrapper{
2 | display: inline-block;
3 | border-right: 0.75pt solid #999999;
4 | width: 24%;
5 | height: 970px;
6 | float: left;
7 | p{
8 | display: inline-block;
9 | }
10 | .eduction{
11 | margin-top: 30px;
12 | .right_cell{
13 | border-bottom: 1.5pt solid #cccccc
14 | }
15 | }
16 |
17 | .schoolTime{
18 | display: inline-block;
19 | font-size: 10pt;
20 | color: #666;
21 | line-height: 1.5;
22 | font-weight: normal;
23 | padding-left: 50px;
24 | margin-top: 4px;
25 | }
26 | .project{
27 | margin-top: 50px;
28 | }
29 | .skill{
30 | float: left;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/less/partials/experience.less:
--------------------------------------------------------------------------------
1 | #border_line1{
2 | display: flex;
3 | display: -ms-flexbox;
4 | width: 100%;
5 | border-bottom: 1.5pt solid #cccccc;
6 | }
7 | .experience{
8 | display: inline-block;
9 | width: 100%;
10 | float: left;
11 | margin-top: 6px;
12 | border-bottom: 1px dashed #ccc;
13 | font-weight: bold;
14 | .project_name{
15 | margin: 0 0.5mm 1.5mm 1.0mm;
16 | font-size: 11pt;
17 | color: #3d85c6;
18 | line-height: 1.5;
19 | .projectNameDesc{
20 | float: right;
21 | color: teal;
22 | }
23 | }
24 | .project_desc{
25 | font-family: Tahoma;
26 | margin: 0.5mm 0.5mm 1mm 1.0mm;
27 | font-size: 10pt;
28 | color: #666;
29 | line-height: 1.5;
30 | }
31 | }
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "resume-master",
3 | "version": "1.1.0",
4 | "description": "A resume generator read data from json",
5 | "main": "gulpfile.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "git+ssh://git@github.com/hawx1993/resume-master.git"
9 | },
10 | "keywords": [
11 | "resume"
12 | ],
13 | "author": "trigkit4",
14 | "license": "MIT",
15 | "bugs": {
16 | "url": "https://github.com/hawx1993/resume-master/issues"
17 | },
18 | "homepage": "https://github.com/hawx1993/resume-master#readme",
19 | "devDependencies": {
20 | "browser-sync": "^2.12.10",
21 | "gulp": "^3.9.1",
22 | "gulp-compile-handlebars": "^0.6.1",
23 | "gulp-cssmin": "^0.1.7",
24 | "gulp-gh-pages": "^0.5.4",
25 | "gulp-less": "^3.1.0",
26 | "gulp-load-plugins": "^1.2.4",
27 | "gulp-plumber": "^1.1.0",
28 | "gulp-rename": "^1.2.2",
29 | "gulp-sync": "^0.1.4",
30 | "run-sequence": "^1.2.1"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/handlebars/partials/sidebar.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
教育背景
5 |
6 | {{#each personal_info}}
7 |
{{start}} ~ {{end}}
8 | {{/each}}
9 |
10 |
项目经验
11 |
12 | {{#each sideBar}}
13 |
14 |
15 | {{column3}}
16 |
17 |
18 | {{#each personal_info}}
19 |
{{start}} ~ {{end}}
20 | {{/each}}
21 |
22 |
23 |
24 | {{column4}}
25 |
26 |
27 |
28 |
29 |
30 | {{column5}}
31 |
32 |
33 | {{/each}}
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 trigkit4
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## About this repo
2 |
3 |
4 |
5 | `resume-master` 是一个简历生成器,从json中读取数据,可部署到`github pages` 在线浏览,也可生成pdf格式简历。http://hawx1993.github.io/resume-master/
6 |
7 | - 简历数据存放在`resume.json`文件中
8 | - 简历中的代码可高亮
9 | - 有任何问题欢迎提issue
10 |
11 | #### 简历效果如下图所示
12 |
13 | 
14 |
15 | ## 环境安装
16 |
17 | 首先确保你的电脑已经安装了
18 | Node.js:https://nodejs.org/en/,
19 |
20 | 然后在终端输入如下命令安装gulp和bower:
21 |
22 | ```js
23 | $ npm install --global gulp
24 | $ npm install -g bower
25 | ```
26 |
27 | ## Build
28 |
29 | 1.执行 `npm install` 安装依赖
30 |
31 | 2.执行 `bower install`安装所需库
32 |
33 | 3.填写你的个人信息于`resume.json`文件
34 |
35 | 4.执行 `gulp dev`来构建项目
36 |
37 | ## 生成PDF文件
38 |
39 | 请使用chrome或者Safari浏览器来打印。
40 |
41 | Mac chrome执行:文件 —— 打印,即可(Windows系统直接鼠标右键——打印)
42 |
43 | Safari执行:文件——导出为PDF 即可
44 |
45 | 或者点击下方的`print it`打印
46 | ## deploy to github pages
47 |
48 | 1.clone this repo
49 |
50 | 2.修改`package.json`文件的SSH git remote orgin为你的SSH 地址(你需要创建一个新的仓库)
51 |
52 | 3.创建`gh-pages`分支
53 |
54 | 4.终端执行`gulp deploy` 稍等片刻即可部署完毕
55 |
56 | 5.到你的`github pages`站点访问(url后面加上`/resume-master`即可访问)
57 |
58 | ## LICENSE
59 |
60 | (MIT License)
61 |
62 | Copyright (c) 2016 trigkit4
63 |
--------------------------------------------------------------------------------
/src/handlebars/partials/education.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#each personal_info}}
3 |
4 | {{school_name}}
5 |
6 |
{{Aboutme}}
7 |
8 |
9 | {{major}}
10 | {{type}}
11 |
12 |
13 | {{enlevel}} {{English_level}}
14 |
15 |
16 | {{desc}}
17 |
18 |
19 |
20 |
21 | {{jiguan}}:{{native}}
22 | {{xianju}}:{{now_place}}
23 |
24 |
25 | {{xingbie}}:{{sex}}
26 | {{riqi}}:{{date_of_birth}}
27 |
28 |
29 | {{aihao}}:{{interests}}
30 |
31 |
32 | {{/each}}
33 |
--------------------------------------------------------------------------------
/src/handlebars/index.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{#if title}}{{title}}{{else}}Resume{{/if}}
6 |
7 |
8 |
9 |
10 |
11 | {{> header}}
12 | {{> sidebar}}
13 |
14 | {{> education}}
15 | {{> experience}}
16 | {{> intern}}
17 | {{> skill}}
18 | {{> description}}
19 |
20 |
21 |
22 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/script.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by trigkit4 on 16/6/6.
3 | */
4 |
5 | var lastListPos = $(".experience ul li:eq(-1)").offset().top;//510
6 | var projectNamePos = $(".project_name")[0].offsetTop;//355
7 |
8 | var gapHeight = lastListPos - projectNamePos;
9 |
10 | var internExper = $('#column3')[0];
11 | internExper.style.marginTop = gapHeight + 47 + 'px';
12 |
13 | var internDesc = $('.intern_column')[0];
14 | internDesc.style.marginTop = gapHeight + 65 + 'px';
15 |
16 | //掌握技能定位
17 | var internLastlist = $(".intern_column ul li:eq(-1)").offset().top;
18 | var internDescTop = internDesc.offsetTop;
19 | var internListHeight = internLastlist - internDescTop;
20 | var masterSkillBar = $("#column4")[0];
21 | masterSkillBar.style.marginTop = internListHeight + "px";
22 |
23 | //自我描述定位
24 | var skillLastlist = $(".skill ul li:eq(-1)").offset().top;
25 | var skillDesc = $(".skill_desc")[0].offsetTop;
26 | var skillGapHeight = skillLastlist - skillDesc;
27 |
28 | var column5 = $("#column5")[0];
29 | column5.style.marginTop = skillGapHeight + "px";
30 |
31 | var descHead = $(".desc_header")[0];
32 | descHead.style.marginTop = skillGapHeight +column5+ "px";
33 |
34 | //print
35 | $('#print').click(function () {
36 | try {
37 | print();
38 | } catch(e) {
39 | alert('Your browser does not support `print()` method.');
40 | }
41 | });
42 |
--------------------------------------------------------------------------------
/src/less/partials/headers.less:
--------------------------------------------------------------------------------
1 | .row{
2 | position: relative;
3 | padding-bottom: 0.6mm;
4 | border-spacing: 0;
5 | .headerFontSet;
6 | .personal_resume{
7 | background-color: #999999;
8 | text-align: center;
9 | vertical-align: middle;
10 | width: 26%;
11 | height: 26px;
12 | color: #f3f3f3;
13 | .text_resume{
14 | font-size: 12pt;
15 | background-color: transparent;
16 | font-weight: bold;
17 | font-style: oblique;
18 | text-decoration: none;
19 | line-height: 2.0;
20 | }
21 | }
22 | .jobs_wanted{
23 | background-color: #fff;
24 | text-align: center;
25 | vertical-align: middle;
26 | border-bottom: 0.75pt dashed #999999;
27 | min-height: 12pt;
28 | }
29 | .row2{display: inline-block}
30 | .line2{
31 | background-color: #f3f3f3;
32 | vertical-align: middle;
33 | padding: 0 0 0 4.0mm;
34 | border-right: 2.25pt solid #93c47d;
35 | .tel{
36 | float: right;
37 | padding-right: 20px;
38 | }
39 | }
40 | .blog{text-align: right}
41 | .line3{
42 | padding: 0 0 0 4.0mm;
43 | vertical-align: middle;
44 | }
45 | .line4{
46 | padding: 0 0 0 4.0mm;
47 | vertical-align: middle;
48 | background-color: #f3f3f3;
49 | border-right: 2.25pt solid #93c47d;
50 | }
51 | }
52 | .line1{padding-bottom: 1mm}
53 |
54 |
--------------------------------------------------------------------------------
/src/handlebars/partials/header.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Person Resume
7 |
8 | {{#if jobs}}
9 |
10 | 求职意向:{{#each jobs}} {{this}} {{/each}}
11 |
12 | {{/if}}
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | {{xingming}}:{{name}}
22 | {{youxiang}}:{{ mail }} {{dianhua}}:{{phone}}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | {{boke}}:
32 | {{blog}}
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {{opensource}}:
42 | {{github}}
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/.idea/watcherTasks.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/less/partials/educations.less:
--------------------------------------------------------------------------------
1 | .education_column{
2 | float: left;
3 | margin-bottom: 30px;
4 | .border_line{
5 | display: inline-block;
6 | width: 100%;
7 | height: 36px;
8 | border-bottom: 1.5pt solid #cccccc;
9 | .schoolName{
10 | font-size: 12pt;
11 | color: #444;
12 | line-height: 3;
13 | font-style: oblique;
14 | font-weight: bold;
15 | padding-left: 10px;
16 | }
17 | }
18 | .selfIntro{
19 | display: inline-block;
20 | position: relative;
21 | right: -28px;
22 | top: -42px;
23 | background-color: #EEEEEE;
24 | width: 262px;
25 | height: 25px;
26 | font-size: 12pt;
27 | color: #666;
28 | padding: 2px 0 1px 10px;
29 | }
30 | .listCommon{
31 | font-size: 10pt;
32 | color: #666;
33 | line-height: 1.25;
34 | }
35 | .edu_column1{
36 | display: inline-block;
37 | float: left;
38 | width: 250px;
39 | .listCommon;
40 | li{
41 | margin-bottom: 6px;
42 | }
43 | .type{
44 | float: right;
45 | margin-right: 40px;
46 | }
47 | .level{
48 | .type;
49 | }
50 | }
51 | .edu_column2{
52 | display: inline-block;
53 | width: 264px;
54 | float: right;
55 | margin-top: -26px;
56 | .listCommon;
57 | li{
58 | list-style-type: none;
59 | margin-bottom: 6px;
60 | }
61 | .now{
62 | float: right;
63 | }
64 | .date{
65 | .now;
66 | }
67 | }
68 | }
--------------------------------------------------------------------------------
/src/less/common/main.less:
--------------------------------------------------------------------------------
1 | body{
2 | font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
3 | margin: 0;
4 | padding: 0.5in
5 | //-webkit-font-smoothing: antialiased;
6 |
7 | }
8 | @media print{
9 | padding: 0;
10 | box-shadow: none;
11 | }
12 | .columnSet{
13 | display: inline-block;
14 | width: 184px;
15 | background-color: #d9d2e9;
16 | text-align: right;
17 | border-right: 8pt solid #999999;
18 | height: 24px;
19 | }
20 | .text{
21 | display: inline-block;
22 | font-size: 12pt;
23 | color: #666666;
24 | margin: 0.5mm 4.0mm 0.5mm 0.0mm;
25 | background-color: transparent;
26 | font-weight: bold;
27 | font-style: normal;
28 | text-decoration: none;
29 | line-height: 1.15;
30 | }
31 | .fontSet{
32 | font-size: 10pt;
33 | color: #666;
34 | line-height: 1.5;
35 | font-weight: normal;
36 | }
37 | .headerFontSet{
38 | font-size: 11pt;
39 | color: #444;
40 | font-weight: normal;
41 | line-height: 1.5;
42 | }
43 | .resume{
44 | width: @A4-width;
45 | height: @A4-height;
46 | border: 1px solid #ccc;
47 | box-shadow: 0 1px 10px rgba(0,0,0,0.5);
48 | margin: 0 auto;
49 | overflow: hidden;
50 | line-height: 1.5;
51 | flex-flow: row wrap;
52 | .inner_resume{
53 | margin: 7.1mm 11.3mm 0.5mm 0.1mm;
54 | }
55 | }
56 | table{
57 | border-collapse: separate;
58 | border-spacing: 0;
59 | width: 100%;
60 | }
61 | a{text-decoration: none}
62 | footer{
63 | margin: 30px 6px;
64 | text-align: center;
65 | .resumeLinks{
66 | color: teal;
67 | &:hover{
68 | text-decoration: underline;
69 | }
70 | }
71 | #print{
72 | color: teal;
73 | }
74 | @media print{
75 | display: none;
76 | }
77 | }
78 | ul{
79 | margin: 0;
80 | padding: 0;
81 | }
82 | li{
83 | list-style-type: square;
84 | }
85 | code{
86 | font-size: 1em;
87 | color: teal;
88 | background-color: rgb(248,248,248);
89 | }
90 | @media print{
91 | @page {
92 | size: portrait;
93 | }
94 | }
95 | .resume_content{
96 | margin-left: 210px;
97 |
98 | }
99 | #column4{
100 | margin-left: 0px;
101 | }
--------------------------------------------------------------------------------
/resume.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "黄文雄 - 个人简历",
3 | "jobs": ["前端开发工程师"],
4 | "xingming": "姓名",
5 | "name": "黄文雄",
6 | "youxiang": "邮箱",
7 | "dianhua": "电话",
8 | "mail": "trigkit@163.com",
9 | "phone": "(+86) 1586919xxxx",
10 | "boke": "博客",
11 | "opensource": "github",
12 | "blog": "http://segmentfault.com/u/trigkit4/blogs",
13 | "github": "https://github.com/hawx1993",
14 | "personal_info": [{
15 | "Aboutme": "个人简介",
16 | "school_name": "学校名字",
17 | "major": "电子信息工程系",
18 | "type": "本科",
19 | "English_level": "CET-4",
20 | "start": "2012.09",
21 | "end": "2016.07",
22 | "enlevel": "英语水平",
23 | "desc": "能较为流畅阅读英文文档和书籍",
24 | "jiguan": "籍贯",
25 | "native": "福建泉州",
26 | "xianju": "现居",
27 | "now_place": "福建厦门",
28 | "xingbie": "性别",
29 | "sex": "男",
30 | "riqi": "出生日期",
31 | "date_of_birth": "1993-05-23",
32 | "aihao": "兴趣爱好",
33 | "interests": "篮球羽毛球乒乓球"
34 | }],
35 | "experience": [{
36 | "project_name": "judgejs",
37 | "rightDescription": "核心开发者",
38 | "description": [
39 | "轻量级前端判断类库,没有任何依赖,支持`AMD` & `CommonJS`",
40 | "主要封装一些常用信息判断,使用`Qunit`单元测试"
41 | ]
42 | },{
43 | "project_name": "校园团购网--益乐团购",
44 | "rightDescription": "2014.02~2014.06",
45 | "description": [
46 | "使用最土团购系统,开发短信注册等功能;开发一些通用的前端组件,并作网站性能优化",
47 | "主要使用原生`js`开发;页面开发与兼容处理;数据库使用`MySQL`,后端使用PHP开发"
48 | ]
49 | }],
50 | "works": [{
51 | "intern_jobs": "微店前端实习生 (2015.12~2016.04)",
52 | "description": [
53 | "微店助农项目开发,橱窗推荐开发,组件开发,数据埋点,分销项目开发等"
54 | ]
55 | },{
56 | "intern_jobs": "美团前端开发实习生 (2015.07~2016.09)",
57 | "description": [
58 | "修复内部系统`bug`,完成美团app页面开发,美团i版收银台`bug fix`,常规组件开发等"
59 | ]
60 | }],
61 | "skill": [{
62 | "summary": "web前端:HTML / CSS、JavaScript",
63 | "description": [
64 | "能够编写语义化的`html`代码,掌握常见布局,熟悉浏览器兼容性问题",
65 | "熟悉 `HTML5` / `CSS3` 新特性,并有相关项目经验,掌握`css`预处理器`LESS`"
66 | ]
67 | },{
68 | "summary": "库/框架:jQuery、Zepto、Backbone.js",
69 | "description": [
70 | "仔细阅读和研究过`jQuery`和`Zepto`源码,封装过DOM操作前端js类库",
71 | "了解 `Backbone.js` & `Angularjs` 及前端 MV* 模型"
72 | ]},{
73 | "summary": "技 能 描 述:",
74 | "description": [
75 | "熟悉`ECMAScript`,对`js`有一定深入研究和学习。 写过`jQuery`全屏滚动插件",
76 | "对`Sea.js` / `RequireJS` / `Browserify` / `Bower` / `WebPack` 等模块化解决方案有一定实践",
77 | "了解`ECMAScript 6`,了解 `JavaScript` 在浏览器环境中常见的兼容性问题及解决方案"
78 | ]
79 | }],
80 | "self_desc": [{
81 | "description": [
82 | "该项目依托于Node环境,使用LESS,Handlebars,Gulp进行构建,可部署至github pages 在线浏览,可直接打印成pdf格式,让您减少简历制作的各种后顾之忧",
83 | "About me:a front-end developer,open source developer,interned in meituan and weidian company"
84 | ]
85 | }],
86 | "sideBar":[{
87 | "column3": "实习经验",
88 | "column4": "掌握技能",
89 | "column5": "自我描述"
90 | }]
91 | }
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by trigkit4 on 16/6/3.
3 | */
4 | var gulp = require('gulp');
5 | var rename = require('gulp-rename');
6 | var less = require('gulp-less');
7 | var handlebars = require('gulp-compile-handlebars');
8 | var browserSync = require('browser-sync').create();
9 | var cssmin = require('gulp-cssmin');
10 | var plumber = require('gulp-plumber');
11 | var runSequence = require('run-sequence');
12 | var plugins = require('gulp-load-plugins')();
13 |
14 | // markdown syntax support
15 | var markdownify = function (json) {
16 | var jsonStr = JSON.stringify(json);
17 |
18 | return JSON.parse(
19 | jsonStr
20 | .replace(/(\*{2})(.*?)\1/g, '$2 ')
21 | .replace(/`([^`]+)`/g, '$1')
22 | .replace(/(\\{2})\[([^\\]*)\1\]\1\(([^\\]*)\1\)/g, '$2 ')
23 | )
24 | };
25 |
26 | //compile handlebars
27 | gulp.task('handlebars', function () {
28 | return gulp
29 | .src('src/handlebars/index.hbs')
30 | .pipe(
31 | plumber()
32 | )
33 | .pipe(
34 | handlebars(
35 | markdownify(require('./resume.json')),{
36 | ignorePartials: false,
37 | batch: ['src/handlebars/partials']
38 | }
39 | )
40 | )
41 | .pipe(
42 | rename('index.html')
43 | )
44 | .pipe(
45 | gulp.dest('build')
46 | )
47 | .pipe(
48 | browserSync.stream()
49 | )
50 | });
51 |
52 | //compile less
53 | gulp.task('less', function () {
54 | return gulp
55 | .src('src/less/index.less')
56 | .pipe(
57 | plumber()
58 | )
59 | .pipe(
60 | less()
61 | )
62 | .pipe(
63 | gulp.dest('build/assets/css')
64 | )
65 | .pipe(
66 | browserSync.stream()
67 | )
68 | });
69 |
70 | //copy static files to build/assets
71 | gulp.task('copy:static', function () {
72 | return gulp
73 | .src(['src/!(handlebars)/**'])
74 | .pipe(
75 | gulp.dest('build/assets')
76 | )
77 | });
78 |
79 | //copy js to build/assets/js
80 | gulp.task('copy:js', function () {
81 | return gulp
82 | .src([
83 | 'bower_components/jquery/dist/jquery.js',
84 | 'script.js'
85 | ])
86 | .pipe(
87 | gulp.dest('build/assets/js')
88 | )
89 | .pipe(
90 | browserSync.stream()
91 | )
92 | });
93 |
94 | //minify css files
95 | gulp.task('cssmin', function () {
96 | return gulp
97 | .src('build/assets/css/*.css')
98 | .pipe(
99 | cssmin()
100 | )
101 | .pipe(
102 | gulp.dest('build/assets/css')
103 | )
104 | });
105 |
106 | gulp.task('compile', [
107 | 'handlebars',
108 | 'less'
109 | ]);
110 |
111 | gulp.task('build', function (cb) {
112 | runSequence(
113 | [
114 | 'compile',
115 | 'copy:static',
116 | 'copy:js'
117 | ],
118 | cb
119 | )
120 | });
121 |
122 | gulp.task('dev',['build'], function () {
123 | browserSync.init({
124 | server: 'build',
125 | port: 1234
126 | });
127 |
128 | gulp.watch('src/less/**/*.less',['less']);
129 | gulp.watch([
130 | 'src/handlebars/**/*.hbs',
131 | './resume.json'
132 | ], ['handlebars']);
133 |
134 | gulp.watch('*.js', function () {
135 | return gulp
136 | .src('*.js')
137 | .pipe(gulp.dest('build/assets/js'))
138 | .pipe(
139 | browserSync.stream()
140 | );
141 | })
142 | });
143 | gulp.task('build-for-deploy',['less','handlebars']);
144 |
145 | //deploy to github pages
146 | gulp.task('deploy', ['build-for-deploy'], function() {
147 | return gulp.src('./build/**/*')
148 | .pipe(plugins.ghPages());
149 | });
150 |
151 | gulp.task('default', ['compile']);
152 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 | true
168 |
169 |
170 | $PROJECT_DIR$/gulpfile.js
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 | true
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 | 1464959845002
288 |
289 | 1464959845002
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 |
610 |
611 |
612 |
613 |
614 |
615 |
616 |
617 |
618 |
619 |
620 |
621 |
622 |
623 |
624 |
625 |
626 |
627 |
628 |
629 |
630 |
631 |
632 |
633 |
634 |
635 |
636 |
637 |
638 |
639 |
640 |
641 |
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 |
651 |
652 |
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
693 |
694 |
695 |
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
--------------------------------------------------------------------------------