├── .gitignore
├── src_webapp
├── modules
│ ├── 014_doc_capability
│ │ ├── test_async_2.js
│ │ ├── test_derfer_2.js
│ │ ├── test_derfer_1.js
│ │ ├── img
│ │ │ └── 001.png
│ │ ├── imgs
│ │ │ ├── 1574503845456.png
│ │ │ ├── 1574504038912.png
│ │ │ └── 1574504064357.png
│ │ ├── index.less
│ │ ├── index.js
│ │ ├── index.html
│ │ └── readme.md
│ ├── 010_安全类
│ │ ├── img
│ │ │ └── 001.png
│ │ └── readme.md
│ ├── 017_Vue
│ │ ├── img
│ │ │ └── 001.jpg
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 011_methods
│ │ ├── img
│ │ │ ├── 1.jpg
│ │ │ ├── 2.jpg
│ │ │ ├── 3.jpg
│ │ │ └── 4.jpg
│ │ ├── readme.md
│ │ ├── index.less
│ │ ├── index.html
│ │ └── index.js
│ ├── 000_demo_cc
│ │ ├── img
│ │ │ └── car.png
│ │ ├── index.html
│ │ ├── index.less
│ │ └── index.js
│ ├── 004_HTML_meta
│ │ ├── img
│ │ │ └── 001.png
│ │ └── readme.md
│ ├── 006_create_obj
│ │ ├── img
│ │ │ └── 001.png
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 008_http_002_cache
│ │ ├── img
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ └── 3.jpg
│ │ └── readme.md
│ ├── 006_create_obj_arr
│ │ ├── img
│ │ │ └── 001.png
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 012_HTML&CSS_render
│ │ ├── img
│ │ │ ├── 002.jpg
│ │ │ ├── 003.jpg
│ │ │ ├── 004.jpg
│ │ │ └── 005.jpg
│ │ └── readme.md
│ ├── 006_create_obj_string
│ │ ├── img
│ │ │ └── 001.png
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 004_css_003_移动
│ │ ├── readme.md
│ │ ├── index.js
│ │ ├── index.html
│ │ └── index.less
│ ├── 007_class_FN
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 009_同源_跨域
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 013_JS_run
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 005_JS_001_event
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 005_JS_002_闭包
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 005_JS_003_ES6
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 007_class_FN_1Object
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 007_class_FN_2Mode
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 015_error_trapping
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 016_Garbage_collection
│ │ ├── index.less
│ │ ├── index.html
│ │ ├── index.js
│ │ └── readme.md
│ ├── 003_简历&陈述
│ │ └── readme.md
│ ├── 020-deploy
│ │ └── readme.md
│ ├── 002_业务分析_技术栈和工程化
│ │ └── readme.md
│ ├── 004_css_002_box
│ │ ├── index.js
│ │ ├── index.html
│ │ ├── index.less
│ │ └── readme.md
│ ├── 019_gulp&webpack
│ │ ├── readme.md
│ │ ├── index.js
│ │ └── output.txt
│ ├── 001_JD
│ │ └── readme.md
│ ├── 008_http_001_报文
│ │ └── readme.md
│ ├── 098_project_experience
│ │ └── readme.md
│ ├── 004_css_001_buJu
│ │ ├── index.html
│ │ ├── readme.md
│ │ ├── index.js
│ │ └── index.less
│ └── 018_node
│ │ ├── index.js
│ │ ├── output.txt
│ │ └── readme.md
├── scripts
│ ├── IV_need
│ │ └── 胡健的简历_files
│ │ │ ├── resume-head.png
│ │ │ ├── fontello.min.css
│ │ │ ├── zoom.css
│ │ │ ├── colordove
│ │ │ ├── style.min.css
│ │ │ ├── zoom.min.js.下载
│ │ │ └── github-btn.html
│ └── common
│ │ └── conf.js
└── index.html
├── conf.js
├── api_server
├── app_auto.js
└── app.js
├── package.json
└── gulpfile.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | webapp/
3 |
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/test_async_2.js:
--------------------------------------------------------------------------------
1 | console.log('ac_2');
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/test_derfer_2.js:
--------------------------------------------------------------------------------
1 | console.log('df_2');
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/test_derfer_1.js:
--------------------------------------------------------------------------------
1 | console.log('df_1');
2 |
3 |
--------------------------------------------------------------------------------
/src_webapp/modules/010_安全类/img/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/010_安全类/img/001.png
--------------------------------------------------------------------------------
/src_webapp/modules/017_Vue/img/001.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/017_Vue/img/001.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/img/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/011_methods/img/1.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/img/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/011_methods/img/2.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/img/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/011_methods/img/3.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/img/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/011_methods/img/4.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/000_demo_cc/img/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/000_demo_cc/img/car.png
--------------------------------------------------------------------------------
/src_webapp/modules/004_HTML_meta/img/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/004_HTML_meta/img/001.png
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj/img/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/006_create_obj/img/001.png
--------------------------------------------------------------------------------
/src_webapp/modules/008_http_002_cache/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/008_http_002_cache/img/1.png
--------------------------------------------------------------------------------
/src_webapp/modules/008_http_002_cache/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/008_http_002_cache/img/2.png
--------------------------------------------------------------------------------
/src_webapp/modules/008_http_002_cache/img/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/008_http_002_cache/img/3.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_arr/img/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/006_create_obj_arr/img/001.png
--------------------------------------------------------------------------------
/src_webapp/modules/012_HTML&CSS_render/img/002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/012_HTML&CSS_render/img/002.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/012_HTML&CSS_render/img/003.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/012_HTML&CSS_render/img/003.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/012_HTML&CSS_render/img/004.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/012_HTML&CSS_render/img/004.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/012_HTML&CSS_render/img/005.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/012_HTML&CSS_render/img/005.jpg
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/img/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/014_doc_capability/img/001.png
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_string/img/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/006_create_obj_string/img/001.png
--------------------------------------------------------------------------------
/src_webapp/scripts/IV_need/胡健的简历_files/resume-head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/scripts/IV_need/胡健的简历_files/resume-head.png
--------------------------------------------------------------------------------
/conf.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | // 数据库名称
3 | db: "test",
4 |
5 | // 测试模式下的端口
6 | dev_port: 1010,
7 |
8 | // 打包后/测试时被代理的端口
9 | api_port: 1011,
10 | }
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/imgs/1574503845456.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/014_doc_capability/imgs/1574503845456.png
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/imgs/1574504038912.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/014_doc_capability/imgs/1574504038912.png
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/imgs/1574504064357.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zc3hd/Interview/HEAD/src_webapp/modules/014_doc_capability/imgs/1574504064357.png
--------------------------------------------------------------------------------
/src_webapp/scripts/common/conf.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by cc on 2017/8/7
3 | */
4 | (function(win, $) {
5 | var conf = win.conf = win.conf || {
6 | build:false,
7 | };
8 | })(window, jQuery);
9 |
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/readme.md:
--------------------------------------------------------------------------------
1 | # 算法
2 |
3 | ### 排序算法
4 | 
5 |
6 | ### 堆栈、队列、链表
7 | 
8 |
9 | ### 递归
10 | 
11 |
12 | ### 波兰式和逆波兰式
13 | 
14 |
15 |
--------------------------------------------------------------------------------
/src_webapp/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Document
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src_webapp/modules/004_css_003_移动/readme.md:
--------------------------------------------------------------------------------
1 | ### CSS移动
2 |
3 |
4 | * position: relative; transform: translate(30px, 30px);都是相对自己的位置在移动,有什么区别呢?
5 |
6 | * 从页面布局的角度看效果是一样的。
7 | * 从动画角度来说使用transform时,可以让 GPU 参与运算,动画的 FPS 更高。position时,最小的动画变化的单位是1px,transform参与时,可以做到更小(动画效果更加平滑)position 是为页面布局而生的。transform 是为动画而生的。
8 | 功能都一样。
9 | * 但是translate不会引起浏览器的重绘和重排,这就相当nice了。这点就很牛逼了。页面不会Repaint(没有重新计算render tree)
10 |
--------------------------------------------------------------------------------
/api_server/app_auto.js:
--------------------------------------------------------------------------------
1 | var nodemon = require('gulp-nodemon');
2 | var path = require('path');
3 | nodemon({
4 | script: path.join(__dirname, './app.js'),
5 | ignore: [
6 | path.join(__dirname, '../src_webapp/'),
7 | path.join(__dirname, '../webapp/'),
8 | path.join(__dirname, '../gulpfile.js'),
9 | path.join(__dirname, '../conf.js'),
10 | ],
11 | env: { 'NODE_ENV': 'development' }
12 | });
--------------------------------------------------------------------------------
/src_webapp/modules/017_Vue/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | overflow: hidden;
14 | }
15 |
16 | .app{
17 | width: 100%;
18 | height: 100%;
19 | background-color: #333;
20 | position: relative;
21 | text-align: center;
22 | font-size: 200px;
23 | color: #ccc;
24 | }
25 |
--------------------------------------------------------------------------------
/src_webapp/modules/010_安全类/readme.md:
--------------------------------------------------------------------------------
1 | # 安全类
2 |
3 | ### CSRF
4 |
5 | * 概念:跨站请求伪造
6 | * 缩写:Cross-site request forgery
7 | * 攻击原理:点击其他网站的,会拿到我的cookie请求一个曾经某网站的有漏洞的API。
8 | * 条件:1.登录过,有cookie。2.有漏洞的API。
9 | 
10 | * 防御:
11 | ```
12 | 服务器下发给浏览器token。服务端加Token验证
13 | Referer 验证:判断是不是我这个站点下的来源,
14 | 隐藏令牌:隐藏在HTTP请求head中,和token
15 | ```
16 |
17 | ### XSS
18 |
19 | * 概念:跨域脚本攻击
20 | * cross-site scripting
21 | * 原理:向你页面注入JS运行,比如你的提交区提交。
22 | * 防御:就是让你注入的JS不允许执行。
--------------------------------------------------------------------------------
/src_webapp/modules/007_class_FN/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/009_同源_跨域/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/013_JS_run/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/005_JS_001_event/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/005_JS_002_闭包/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/005_JS_003_ES6/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_arr/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_string/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/007_class_FN_1Object/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/007_class_FN_2Mode/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/015_error_trapping/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/016_Garbage_collection/index.less:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | white-space: nowrap;
5 | transition: all 0.3s ease-in;
6 | }
7 |
8 | html,
9 | body {
10 | width: 100%;
11 | height: 100%;
12 | font-family: 'Microsoft Yahei';
13 | }
14 |
15 | .app {
16 | width: 100%;
17 | height: 100%;
18 | background-color: #333;
19 | >.box {
20 | width: 100px;
21 | height: 100px;
22 | background-color: #fff;
23 | margin-bottom: 20px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/007_class_FN/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/009_同源_跨域/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/011_methods/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/013_JS_run/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/005_JS_001_event/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/005_JS_002_闭包/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/005_JS_003_ES6/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_arr/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_string/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_string/index.js:
--------------------------------------------------------------------------------
1 | var str='0123456789';
2 |
3 |
4 | // console.log(str.substring(0,1));
5 | // console.log(str.substring());
6 |
7 |
8 | // console.log(str.substring(-1));
9 | console.log(str.substring(2,-2));
10 | // console.log(str.substring(3,2));
11 | //
12 | // console.log(str.substr());
13 | // console.log(str.substr(10));
14 | console.log(str.substr(0,5));
15 | // console.log(str.substr(3,-2));
16 |
17 |
18 |
19 |
20 | console.log('===============================')
21 | console.log(str);
--------------------------------------------------------------------------------
/src_webapp/modules/007_class_FN_2Mode/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src_webapp/modules/013_JS_run/index.js:
--------------------------------------------------------------------------------
1 | // console.log(1);
2 |
3 | // console.log(2);
4 |
5 |
6 |
7 | // for (var i = 0; i < 4; i++) {
8 | // console.log(i);
9 | // }
10 |
11 |
12 | console.log(1);
13 |
14 | // setTimeout(function () {
15 | // while (1) {
16 | // console.log('st_1')
17 | // }
18 | // },0)
19 |
20 | // $.get('./index.html')
21 | // .then(function(data) {
22 | // console.log(data);
23 | // });
24 |
25 | for (var i = 0; i < 4; i++) {
26 | setTimeout(function () {
27 | console.log(i);
28 | },1000);
29 | }
--------------------------------------------------------------------------------
/src_webapp/modules/003_简历&陈述/readme.md:
--------------------------------------------------------------------------------
1 | ### 说话
2 |
3 | * 会:简历上的东西都要知道,能有条理的说出123
4 | * 慢:压住自己想快点想出来的思想,一定要在语气和节奏上压的住自己;
5 | * 自信:在追求自由的路上,记得,你不能怂;
6 |
7 | ### 简历
8 |
9 | * 基本信息:姓名、年龄、手机、邮箱、籍贯
10 | * 学历:最高学历
11 | * 工作经历:时间,公司,岗位,职责,技术栈,技术收益、业务收益。你的技术方案解决了什么问题。
12 | * 开源项目:github
13 |
14 | ### 陈述
15 |
16 | * 工作风格:就是介绍你负责了什么项目的那块,一定是要自己擅长的地方,也就是引导别人往这个方向上引导。
17 | * 印象分:平时喜欢看什么网站,看到哪些有意思的点,就自己倒腾出一个什么玩意,或什么笔记。
18 |
19 | ### 实例
20 |
21 | * 巧妙地展示实例,
22 | * 不会的地方:我确实没有这个经验,能否指点下。
23 | * 实话实说。节奏放缓。胆子要大。心态要和。不要轻易放弃。
24 | * 核心:追求极致。面试没有标准答案,要谦虚。
25 | * 优化:说项目中要优化的地方,性能,垃圾。
26 |
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/index.js:
--------------------------------------------------------------------------------
1 | // console.log(1);
2 |
3 | // console.log(2);
4 |
5 |
6 |
7 | // for (var i = 0; i < 4; i++) {
8 | // console.log(i);
9 | // }
10 |
11 |
12 | console.log(1);
13 |
14 | // setTimeout(function () {
15 | // while (1) {
16 | // console.log('st_1')
17 | // }
18 | // },0)
19 |
20 | // $.get('./index.html')
21 | // .then(function(data) {
22 | // console.log(data);
23 | // });
24 |
25 | for (var i = 0; i < 100; i++) {
26 | // setTimeout(function() {
27 |
28 | // },1000);
29 |
30 | console.log(i);
31 | }
--------------------------------------------------------------------------------
/src_webapp/modules/016_Garbage_collection/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/api_server/app.js:
--------------------------------------------------------------------------------
1 | var express = require('express');
2 | var path = require('path');
3 | var conf = require('../conf.js');
4 |
5 | var app = express();
6 | app.use(express.static(path.join(__dirname, '../webapp/')));
7 |
8 |
9 | // 端口
10 | app.post('/api/js_demo/font.do', function(req, res) {
11 | var size = Math.floor(Math.random() * 200);
12 | if (size < 60) {
13 | size = 60;
14 | }
15 | var color = Math.floor(Math.random() * 1000000);
16 |
17 | res.send({
18 | size: size,
19 | color: color,
20 | });
21 | });
22 |
23 |
24 | app.listen(conf.api_port);
25 | console.log("server running at " + conf.api_port);
--------------------------------------------------------------------------------
/src_webapp/modules/015_error_trapping/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
![./img/a.jpg]()
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src_webapp/modules/020-deploy/readme.md:
--------------------------------------------------------------------------------
1 | ### 动态资源与静态资源
2 |
3 | * 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。
4 | * 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。
5 |
6 | ### 动静分离
7 |
8 | * 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
9 |
10 | ### 为什么要动静分离
11 |
12 | * 在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此我们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗。当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决。
13 | * 动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。
14 | * 因此,动态资源转发到tomcat服务器我们就使用到了前面讲到的反向代理了。
--------------------------------------------------------------------------------
/src_webapp/modules/017_Vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | demo
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 | {{number}}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src_webapp/modules/002_业务分析_技术栈和工程化/readme.md:
--------------------------------------------------------------------------------
1 | # 业务分析 技术栈准备
2 |
3 | ### 京东金融
4 |
5 | * 导航的组件。怎么写?
6 | * 布局:响应式
7 | * 动画效果
8 | * meta标签:http-equiv='x-ua-compatible' content="ie=edge,chrome=1"
9 | * meta标签:name=render content=webkit(双核浏览器优先用webkit渲染)
10 | * link:rel=dns-prefetch DNS预解析?提供页面性能?
11 | * local storage
12 | * 字体:怎么引。
13 | * JQ:事件委托,选择器
14 | * VUE
15 | * es6语法
16 | * webpack
17 |
18 | ### elong
19 |
20 | * meta标签
21 | * JS异步加载的方式
22 | * 传统的模块化有几种,require.js sea.js
23 | * ES6如何处理模块化?
24 |
25 | * 技术栈
26 | * JQ:框架核心,事件委托,插件机制,找源码问题高的文章看。
27 | * vue:同理。遇见什么问题,怎么解决的。
28 | * node:特性。遇见什么问题,怎么架构。
29 |
30 | * 工程化
31 | * less语法,怎么用
32 | * gulp工作原理和webpack的区别
33 | * npm常见的命令和scripts怎么用
34 | * browserify 如何使用
--------------------------------------------------------------------------------
/src_webapp/modules/007_class_FN_1Object/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
12 |
13 | input1=>
14 |
15 |
16 |
17 | input2=>
18 |
19 |
20 |
21 | 我每次比input2的值加1=>
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src_webapp/modules/006_create_obj_string/readme.md:
--------------------------------------------------------------------------------
1 | # 字符操作的常用方法
2 |
3 | ### substring(start,stop)
4 |
5 | * start,stop为下标
6 | * 产生新的字符串,不改变原字符串;
7 | * 截取出来的字符串,为包左不包右
8 | ```
9 | var str='0123456789';
10 |
11 | str.substring(0,0) //'';
12 | str.substring(0,1) // a
13 |
14 | str.substring() //复制
15 | str.substring(-1) //-1转为0,复制
16 | str.substring(3) //从下标为3一直向后截取出
17 |
18 | str.substring(3,2) // start>stop,会换位
19 | str.substring(2,-2) // 换位,截取
20 | ```
21 |
22 | ### substr(start [, length ])
23 |
24 | * start 下标
25 | * length 截取长度
26 | ```
27 | str.substr() //复制
28 | str.substr(1) // 从1往后截取
29 |
30 | str.substr(10) //''
31 |
32 | str.substr(-1) //9 从后截取一个
33 |
34 | str.substr(0,5) // 从下标0开始,往后5个截取
35 | str.substr(0,0) // 从下标0开始,往后0个截取 不截取
36 | ```
37 |
--------------------------------------------------------------------------------
/src_webapp/modules/016_Garbage_collection/index.js:
--------------------------------------------------------------------------------
1 | // function fn(obj) {
2 | // obj = obj||{};
3 |
4 |
5 |
6 |
7 | // }
8 |
9 |
10 | // setInterval(function () {
11 | // // console.log(1);
12 | // // return {
13 | // // a:$,
14 | // // b:$,
15 | // // c:$,
16 | // // f:$,
17 | // // g:$,
18 | // // h:$,
19 | // // j:$,
20 | // // };
21 | // // a = null;
22 | // },1);
23 |
24 |
25 | var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
26 | // var index = 2;
27 | // var sliced = arr.slice(3);
28 | // console.log(sliced);
29 |
30 | // // ;
31 | // console.log(arr.push.apply(arr, sliced))
32 |
33 | // console.log(arr);
34 | // // ;
35 |
36 | // console.log(arr.push(10))
37 | // arr.length = arr.length-1;
38 | console.log(arr.push(9));
39 |
40 | // console.log(arr.pop())
--------------------------------------------------------------------------------
/src_webapp/modules/004_css_003_移动/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | function App() {}
4 | App.prototype = {
5 | init: function() {
6 | var me = this;
7 |
8 | document.getElementById("box").style.height
9 | console.log(document.getElementById("box").style.height);
10 |
11 |
12 | // console.log(document.getElementById("box").currentStyle.height);
13 |
14 |
15 |
16 |
17 |
18 | console.log(window.getComputedStyle(document.getElementById("box")).height)
19 | console.log(document.getElementById("box").getBoundingClientRect().height)
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | console.log($('#box').width())
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | },
52 | };
53 | new App().init();
54 |
--------------------------------------------------------------------------------
/src_webapp/modules/004_css_002_box/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | function App() {}
4 | App.prototype = {
5 | init: function() {
6 | var me = this;
7 |
8 | document.getElementById("box").style.height
9 | console.log(document.getElementById("box").style.height);
10 |
11 |
12 | // console.log(document.getElementById("box").currentStyle.height);
13 |
14 |
15 |
16 |
17 |
18 | console.log(window.getComputedStyle(document.getElementById("box")).height)
19 | console.log(document.getElementById("box").getBoundingClientRect().height)
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | console.log($('#box').width())
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | },
52 | };
53 | new App().init();
54 |
--------------------------------------------------------------------------------
/src_webapp/modules/014_doc_capability/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | js-demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src_webapp/scripts/IV_need/胡健的简历_files/fontello.min.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";@font-face{font-family:fontello;src:url(../../font/fontello.eot?32003456);src:url(../../font/fontello.eot?32003456#iefix) format("embedded-opentype"),url(../../font/fontello.woff?32003456) format("woff"),url(../../font/fontello.ttf?32003456) format("truetype"),url(../../font/fontello.svg?32003456#fontello) format("svg");font-weight:400;font-style:normal}[class*=" icon-"]:before,[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-wechat:before{content:'\e800'}.icon-qq:before{content:'\e801'}.icon-bookmark:before{content:'\e802'}.icon-heart:before{content:'\e803'}.icon-mail-alt:before{content:'\e804'}.icon-link:before{content:'\e805'}.icon-phone-1:before{content:'\e806'}
--------------------------------------------------------------------------------
/src_webapp/scripts/IV_need/胡健的简历_files/zoom.css:
--------------------------------------------------------------------------------
1 | img[data-action="zoom"] {
2 | cursor: pointer;
3 | cursor: -webkit-zoom-in;
4 | cursor: -moz-zoom-in;
5 | }
6 | .zoom-img,
7 | .zoom-img-wrap {
8 | position: relative;
9 | z-index: 666;
10 | -webkit-transition: all 300ms;
11 | -o-transition: all 300ms;
12 | transition: all 300ms;
13 | }
14 | img.zoom-img {
15 | cursor: pointer;
16 | cursor: -webkit-zoom-out;
17 | cursor: -moz-zoom-out;
18 | }
19 | .zoom-overlay {
20 | z-index: 420;
21 | background: #fff;
22 | position: fixed;
23 | top: 0;
24 | left: 0;
25 | right: 0;
26 | bottom: 0;
27 | pointer-events: none;
28 | filter: "alpha(opacity=0)";
29 | opacity: 0;
30 | -webkit-transition: opacity 300ms;
31 | -o-transition: opacity 300ms;
32 | transition: opacity 300ms;
33 | }
34 | .zoom-overlay-open .zoom-overlay {
35 | filter: "alpha(opacity=100)";
36 | opacity: 1;
37 | }
38 | .zoom-overlay-open,
39 | .zoom-overlay-transitioning {
40 | cursor: default;
41 | }
42 |
--------------------------------------------------------------------------------
/src_webapp/modules/019_gulp&webpack/readme.md:
--------------------------------------------------------------------------------
1 | # gulp
2 |
3 | * 流处理:Gulp是一个基于流的构建系统
4 | * 没有产生中间文件:使用Gulp的优势就是利用流的方式进行文件的处理,通过管道将多个任务和操作连接起来,因此只有一次I/O的过程,流程更清晰,更纯粹。
5 | * Gulp去除了中间文件,只将最后的输出写入磁盘,整个过程因此变得更快。
6 |
7 | * 常用插件:
8 | ```
9 | gulp-autoprefixer:css前缀
10 | gulp-cssnano:压缩
11 | gulp-less:less
12 |
13 | gulp-uglify:压缩JS
14 | gulp-babel:语法转换
15 | ```
16 |
17 | # webpack
18 |
19 | * 打包原理:所有的依赖被打包为一个JS文件,通过代码分割成单元片段并按需加载。
20 | * 引入: 以 commonJS 的形式来书写脚本,但对 AMD/CMD 的支持也很全面,
21 | * 所有静态资源模块化;
22 | * 扩展性强,插件机制完善
23 |
24 | * 【loader】用于加载某些资源文件。因为webpack本身只能打包common.js规范的js文件,对于其他资源如css,img等,是没有办法加载的,这时就需要对应的loader将资源转化,从而进行加载。
25 | * 【plugin】用于扩展webpack的功能。不同于loader,plugin的功能更加丰富,比如压缩打包,优化,不只局限于资源的加载。
26 | * css-loader: 加载.css文件
27 | * style-loader:使用` Follow @colordove 3