├── CNAME
├── index.html
├── .gitignore
├── bin
└── generator.js
├── README.md
├── LICENSE
└── api
└── all.json
/CNAME:
--------------------------------------------------------------------------------
1 | awesome-practise-project.phodal.com
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Awesome-practise-project by phodal
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Runtime data
7 | pids
8 | *.pid
9 | *.seed
10 |
11 | # Directory for instrumented libs generated by jscoverage/JSCover
12 | lib-cov
13 |
14 | # Coverage directory used by tools like istanbul
15 | coverage
16 |
17 | # nyc test coverage
18 | .nyc_output
19 |
20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
21 | .grunt
22 |
23 | # node-waf configuration
24 | .lock-wscript
25 |
26 | # Compiled binary addons (http://nodejs.org/api/addons.html)
27 | build/Release
28 |
29 | # Dependency directories
30 | node_modules
31 | jspm_packages
32 |
33 | # Optional npm cache directory
34 | .npm
35 |
36 | # Optional REPL history
37 | .node_repl_history
38 |
--------------------------------------------------------------------------------
/bin/generator.js:
--------------------------------------------------------------------------------
1 | // code basis on https://github.com/JacksonTian/fks/blob/master/bin/generate.js
2 | // Thanks to JacksonTian
3 | var fs = require('fs');
4 | var path = require('path');
5 |
6 | var readme = fs.readFileSync(path.join(__dirname, '../README.md'), 'utf8');
7 |
8 | var getItems = function (str) {
9 | var patt = /([ ]*)-(.*)/g;
10 | var result;
11 |
12 | var list = [];
13 | while ((result = patt.exec(str)) != null) {
14 | list.push({level: result[1].length / 2, content: result[2].trim()});
15 | }
16 | return list;
17 | };
18 |
19 | var filter = function (list) {
20 | var j = 0;
21 | var f2e = [];
22 | for (var i = 0; i < list.length; i++) {
23 | var item = list[i];
24 | if (item.level === 0) {
25 | j = j + 1;
26 | if (j === 2) {
27 | break;
28 | }
29 | }
30 |
31 | f2e.push(item);
32 | }
33 | return f2e;
34 | };
35 |
36 | var format = function (list) {
37 | var result = [];
38 | for (var i = 0; i < list.length; i++) {
39 | var item = list[i];
40 | var data = {
41 | name: item.content,
42 | level: item.level
43 | };
44 | result.push(data);
45 | }
46 | return result;
47 | };
48 |
49 | var items = getItems(readme);
50 | var f2e = filter(items);
51 | var formated = format(f2e);
52 |
53 | var generateLinksAndDescription = function (str) {
54 | var patt = /\[([^\]]+)\]\(([^)]+)\)(.*)/g;
55 | var result;
56 |
57 | var list = [];
58 | while ((result = patt.exec(str)) != null) {
59 | var projectName = result[1];
60 | var projectLink = result[2];
61 | var projectDesc = result[3];
62 | list.push({name: projectName, link: projectLink, desc: projectDesc});
63 | }
64 | return list;
65 | };
66 |
67 | var buildTree = function (list) {
68 | var root = null;
69 | for (var i = 0; i < list.length; i++) {
70 | var item = list[i];
71 |
72 | if (root === null) {
73 | root = item;
74 | root.domains = [];
75 | }
76 |
77 | var lastLevel0 = root.domains;
78 | if (item.level === 1) {
79 | lastLevel0.push(item);
80 | }
81 |
82 | if (item.level === 2) {
83 | var lastLevel1 = lastLevel0[lastLevel0.length - 1];
84 | lastLevel1.subdomains = lastLevel1.subdomains || [];
85 | lastLevel1.subdomains.push(item);
86 | }
87 |
88 | if (item.level === 3) {
89 | var lastLevel1Child = lastLevel0[lastLevel0.length - 1].subdomains;
90 | var lastLevel2 = lastLevel1Child[lastLevel1Child.length - 1];
91 | lastLevel2.projects = lastLevel2.projects || [];
92 | var itemDesc = generateLinksAndDescription(item.name);
93 | lastLevel2.projects.push(itemDesc[0]);
94 | }
95 |
96 | delete item.level;
97 | }
98 | return root;
99 | };
100 |
101 | var api = {};
102 | var tree = buildTree(formated);
103 | api.source = "http://awesome-practise-project.phodal.com/";
104 | api.content = tree.domains;
105 | fs.writeFileSync(path.join(__dirname, '../api/all.json'), JSON.stringify(api, null, ' '));
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Awesome Practise Project
2 |
3 | The Part of [Growth Plan](https://github.com/phodal/growth).
4 |
5 | - Awesome Projects
6 | - 前端
7 | - 必看
8 | - [TodoMVC](https://github.com/tastejs/todomvc) 包含了一系列不同框架的Todo MVC,如Backbone.js, Ember.js, AngularJS
9 | - ReactJS
10 | - [Awesome React](https://github.com/enaqx/awesome-react) A collection of awesome things regarding React ecosystem.
11 | - [React Demos](https://github.com/ruanyf/react-demos) 由阮一峰收集的React.js的相关Demos。加入索引时,一共有13个Demo,从简单的渲染JSX、Component的生命周期,到服务端渲染。
12 | - [同架JavaScript](https://github.com/DavidWells/isomorphic-react-example) 这是一个基于React和Node.js、Express的示例,并且还包含视频。介绍了如何在前后端使用相同的代码来完成逻辑。
13 | - Angular.js
14 | - [Awesome AngularJS](https://github.com/gianarb/awesome-angularjs) 🌀 A list of awesome AngularJs services, directives, utilities and resources.
15 | - Angular 2
16 | - [Awesome Angular 2](https://github.com/AngularClass/awesome-angular2) A curated list of awesome Angular 2 resources
17 | - Vue
18 | - [Awesome Vue](https://github.com/vuejs/awesome-vue) A curated list of awesome things related to Vue.js
19 | - Ember.js
20 | - [Awesome Ember.js](https://github.com/nmec/awesome-ember) A curated list of awesome Ember.js things
21 | - Riot
22 | - [Riot Todo](https://github.com/srackham/riot-todo) 使用类似于Flux架构实现的Riot下的Todo应用。
23 | - Backbone
24 | - [Backbone Boilerplate](https://github.com/tbranyen/backbone-boilerplate) Bakcbone.js下的工作流,包含可选的Backbone, jQuery, Lodash, Grunt, Babel, Combyne, Karma, Mocha以及Pure CSS。
25 | - Ionic
26 | - [Awesome Ionic](https://github.com/Alexintosh/Awesome-Ionic) A curated list of awesome Ionic libraries, resources and solutions.
27 | - [Ionic 2 会议应用](https://github.com/driftyco/ionic-conference-app) 使用Ionic 2以及Typescript实现的会议应用。
28 | - [CNodejs Ionic](https://github.com/lanceli/cnodejs-ionic) 使用Ionic实现的https://cnodejs.org的手机APP。
29 | - 后端
30 | - Node.js
31 | - [Awesome Nodejs](https://github.com/sindresorhus/awesome-nodejs) Delightful Node.js packages and resources
32 | - [Node.js Express Demos](https://github.com/bsspirit/nodejs-demo) 这个项目原本是依照《Node.js开发指南》书中介绍的项目开始的,然而它讲的是Express2.x的,这个项目则以Express 3.x、Express 4.x为例子展开。
33 | - Laravel
34 | - [Awesome Laravel](https://github.com/chiraggude/awesome-laravel) A curated list of awesome bookmarks, packages, tutorials, videos and other cool resources from the Laravel ecosystem.
35 | - Spring MVC
36 | - [Spring MVC Showcase](https://github.com/spring-projects/spring-mvc-showcase) 这个项目带有Spring MVC的大部分功能的演示,如从正常的Controller,到表单、文件上传、异常处理等等。
37 | - [Spring Blog](https://github.com/Raysmond/SpringBlog) 用Spring Boot/MVC/JPA + Hibernate + MySQL + Redis + Bootstrap + Jade实现的博客系统。
38 | - Spring Boot
39 | - [Spring Boot samples](https://github.com/netgloo/spring-boot-samples) 这个项目包含一系列的Spring Boot示例,当然还有相关的介绍。
40 | - [Spring Boot微服务模板](https://github.com/rohitghatol/spring-boot-microservices) 这个项目介绍了如何用Spring Boot、Spring Cloud、Spring OAuth 2和Netflix OSS来实现微服务架构。
41 | - Django
42 | - [Awesome Django](https://github.com/rosarior/awesome-django) 大家都懂的,A curated list of awesome Django apps, projects and resources。
43 | - Flask
44 | - [Awesome Flask](https://github.com/humiaozuzu/awesome-flask) A curated list of awesome Flask resources and plugins.
45 | - [Flask Boilerplate](https://github.com/mjhea0/flask-boilerplate) 一个基于Flask、 Flask-SQLAlchemy、Flask-WTF、Fabric、Coverage、Bootstrap的Web应用。
46 | - Rails
47 | - [Awesome Rails](https://github.com/ekremkaraca/awesome-rails) A collection / list of awesome projects, sites made with Rails.
48 | - 前后端结合
49 | - React
50 | - [React Starter Kit](https://github.com/kriasoft/react-starter-kit) 基于Node.js, Express, GraphQL, React.js, Babel 6, PostCSS, Webpack, Browsersync提供的同构Web应用模板
51 | - Angular.js
52 | - [MEAN.JS](https://github.com/meanjs/mean) 使用MongoDB, Express, AngularJS, and Node.js的全栈JavaScript。
53 | - [AngularJS + Flask Boilerplate App](https://github.com/shea256/angular-flask) 以Flask作为后端,Angular.js作为前端的Web应用模板
54 |
55 | License
56 | ---
57 |
58 | [](http://ideas.phodal.com/)
59 |
60 | © 2015~2016 [Phodal Huang](https://www.phodal.com). This code is distributed under the CC0 1.0 Universal license. See `LICENSE` in this directory.
61 |
62 | [待我代码编成,娶你为妻可好](http://www.xuntayizhan.com/person/ji-ke-ai-qing-zhi-er-shi-dai-wo-dai-ma-bian-cheng-qu-ni-wei-qi-ke-hao-wan/)
63 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | CC0 1.0 Universal
2 |
3 | Statement of Purpose
4 |
5 | The laws of most jurisdictions throughout the world automatically confer
6 | exclusive Copyright and Related Rights (defined below) upon the creator and
7 | subsequent owner(s) (each and all, an "owner") of an original work of
8 | authorship and/or a database (each, a "Work").
9 |
10 | Certain owners wish to permanently relinquish those rights to a Work for the
11 | purpose of contributing to a commons of creative, cultural and scientific
12 | works ("Commons") that the public can reliably and without fear of later
13 | claims of infringement build upon, modify, incorporate in other works, reuse
14 | and redistribute as freely as possible in any form whatsoever and for any
15 | purposes, including without limitation commercial purposes. These owners may
16 | contribute to the Commons to promote the ideal of a free culture and the
17 | further production of creative, cultural and scientific works, or to gain
18 | reputation or greater distribution for their Work in part through the use and
19 | efforts of others.
20 |
21 | For these and/or other purposes and motivations, and without any expectation
22 | of additional consideration or compensation, the person associating CC0 with a
23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25 | and publicly distribute the Work under its terms, with knowledge of his or her
26 | Copyright and Related Rights in the Work and the meaning and intended legal
27 | effect of CC0 on those rights.
28 |
29 | 1. Copyright and Related Rights. A Work made available under CC0 may be
30 | protected by copyright and related or neighboring rights ("Copyright and
31 | Related Rights"). Copyright and Related Rights include, but are not limited
32 | to, the following:
33 |
34 | i. the right to reproduce, adapt, distribute, perform, display, communicate,
35 | and translate a Work;
36 |
37 | ii. moral rights retained by the original author(s) and/or performer(s);
38 |
39 | iii. publicity and privacy rights pertaining to a person's image or likeness
40 | depicted in a Work;
41 |
42 | iv. rights protecting against unfair competition in regards to a Work,
43 | subject to the limitations in paragraph 4(a), below;
44 |
45 | v. rights protecting the extraction, dissemination, use and reuse of data in
46 | a Work;
47 |
48 | vi. database rights (such as those arising under Directive 96/9/EC of the
49 | European Parliament and of the Council of 11 March 1996 on the legal
50 | protection of databases, and under any national implementation thereof,
51 | including any amended or successor version of such directive); and
52 |
53 | vii. other similar, equivalent or corresponding rights throughout the world
54 | based on applicable law or treaty, and any national implementations thereof.
55 |
56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59 | and Related Rights and associated claims and causes of action, whether now
60 | known or unknown (including existing as well as future claims and causes of
61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum
62 | duration provided by applicable law or treaty (including future time
63 | extensions), (iii) in any current or future medium and for any number of
64 | copies, and (iv) for any purpose whatsoever, including without limitation
65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66 | the Waiver for the benefit of each member of the public at large and to the
67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver
68 | shall not be subject to revocation, rescission, cancellation, termination, or
69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work
70 | by the public as contemplated by Affirmer's express Statement of Purpose.
71 |
72 | 3. Public License Fallback. Should any part of the Waiver for any reason be
73 | judged legally invalid or ineffective under applicable law, then the Waiver
74 | shall be preserved to the maximum extent permitted taking into account
75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76 | is so judged Affirmer hereby grants to each affected person a royalty-free,
77 | non transferable, non sublicensable, non exclusive, irrevocable and
78 | unconditional license to exercise Affirmer's Copyright and Related Rights in
79 | the Work (i) in all territories worldwide, (ii) for the maximum duration
80 | provided by applicable law or treaty (including future time extensions), (iii)
81 | in any current or future medium and for any number of copies, and (iv) for any
82 | purpose whatsoever, including without limitation commercial, advertising or
83 | promotional purposes (the "License"). The License shall be deemed effective as
84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the
85 | License for any reason be judged legally invalid or ineffective under
86 | applicable law, such partial invalidity or ineffectiveness shall not
87 | invalidate the remainder of the License, and in such case Affirmer hereby
88 | affirms that he or she will not (i) exercise any of his or her remaining
89 | Copyright and Related Rights in the Work or (ii) assert any associated claims
90 | and causes of action with respect to the Work, in either case contrary to
91 | Affirmer's express Statement of Purpose.
92 |
93 | 4. Limitations and Disclaimers.
94 |
95 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
96 | surrendered, licensed or otherwise affected by this document.
97 |
98 | b. Affirmer offers the Work as-is and makes no representations or warranties
99 | of any kind concerning the Work, express, implied, statutory or otherwise,
100 | including without limitation warranties of title, merchantability, fitness
101 | for a particular purpose, non infringement, or the absence of latent or
102 | other defects, accuracy, or the present or absence of errors, whether or not
103 | discoverable, all to the greatest extent permissible under applicable law.
104 |
105 | c. Affirmer disclaims responsibility for clearing rights of other persons
106 | that may apply to the Work or any use thereof, including without limitation
107 | any person's Copyright and Related Rights in the Work. Further, Affirmer
108 | disclaims responsibility for obtaining any necessary consents, permissions
109 | or other rights required for any use of the Work.
110 |
111 | d. Affirmer understands and acknowledges that Creative Commons is not a
112 | party to this document and has no duty or obligation with respect to this
113 | CC0 or use of the Work.
114 |
115 | For more information, please see
116 |
117 |
--------------------------------------------------------------------------------
/api/all.json:
--------------------------------------------------------------------------------
1 | {
2 | "source": "http://awesome-practise-project.phodal.com/",
3 | "content": [
4 | {
5 | "name": "前端",
6 | "subdomains": [
7 | {
8 | "name": "必看",
9 | "projects": [
10 | {
11 | "name": "TodoMVC",
12 | "link": "https://github.com/tastejs/todomvc",
13 | "desc": " 包含了一系列不同框架的Todo MVC,如Backbone.js, Ember.js, AngularJS"
14 | }
15 | ]
16 | },
17 | {
18 | "name": "ReactJS",
19 | "projects": [
20 | {
21 | "name": "Awesome React",
22 | "link": "https://github.com/enaqx/awesome-react",
23 | "desc": " A collection of awesome things regarding React ecosystem."
24 | },
25 | {
26 | "name": "React Demos",
27 | "link": "https://github.com/ruanyf/react-demos",
28 | "desc": " 由阮一峰收集的React.js的相关Demos。加入索引时,一共有13个Demo,从简单的渲染JSX、Component的生命周期,到服务端渲染。"
29 | },
30 | {
31 | "name": "同架JavaScript",
32 | "link": "https://github.com/DavidWells/isomorphic-react-example",
33 | "desc": " 这是一个基于React和Node.js、Express的示例,并且还包含视频。介绍了如何在前后端使用相同的代码来完成逻辑。"
34 | }
35 | ]
36 | },
37 | {
38 | "name": "Angular.js",
39 | "projects": [
40 | {
41 | "name": "Awesome AngularJS",
42 | "link": "https://github.com/gianarb/awesome-angularjs",
43 | "desc": " 🌀 A list of awesome AngularJs services, directives, utilities and resources."
44 | }
45 | ]
46 | },
47 | {
48 | "name": "Angular 2",
49 | "projects": [
50 | {
51 | "name": "Awesome Angular 2",
52 | "link": "https://github.com/AngularClass/awesome-angular2",
53 | "desc": " A curated list of awesome Angular 2 resources"
54 | }
55 | ]
56 | },
57 | {
58 | "name": "Vue",
59 | "projects": [
60 | {
61 | "name": "Awesome Vue",
62 | "link": "https://github.com/vuejs/awesome-vue",
63 | "desc": " A curated list of awesome things related to Vue.js"
64 | }
65 | ]
66 | },
67 | {
68 | "name": "Ember.js",
69 | "projects": [
70 | {
71 | "name": "Awesome Ember.js",
72 | "link": "https://github.com/nmec/awesome-ember",
73 | "desc": " A curated list of awesome Ember.js things"
74 | }
75 | ]
76 | },
77 | {
78 | "name": "Riot",
79 | "projects": [
80 | {
81 | "name": "Riot Todo",
82 | "link": "https://github.com/srackham/riot-todo",
83 | "desc": " 使用类似于Flux架构实现的Riot下的Todo应用。"
84 | }
85 | ]
86 | },
87 | {
88 | "name": "Backbone",
89 | "projects": [
90 | {
91 | "name": "Backbone Boilerplate",
92 | "link": "https://github.com/tbranyen/backbone-boilerplate",
93 | "desc": " Bakcbone.js下的工作流,包含可选的Backbone, jQuery, Lodash, Grunt, Babel, Combyne, Karma, Mocha以及Pure CSS。"
94 | }
95 | ]
96 | },
97 | {
98 | "name": "Ionic",
99 | "projects": [
100 | {
101 | "name": "Awesome Ionic",
102 | "link": "https://github.com/Alexintosh/Awesome-Ionic",
103 | "desc": " A curated list of awesome Ionic libraries, resources and solutions."
104 | },
105 | {
106 | "name": "Ionic 2 会议应用",
107 | "link": "https://github.com/driftyco/ionic-conference-app",
108 | "desc": " 使用Ionic 2以及Typescript实现的会议应用。"
109 | },
110 | {
111 | "name": "CNodejs Ionic",
112 | "link": "https://github.com/lanceli/cnodejs-ionic",
113 | "desc": " 使用Ionic实现的https://cnodejs.org的手机APP。"
114 | }
115 | ]
116 | }
117 | ]
118 | },
119 | {
120 | "name": "后端",
121 | "subdomains": [
122 | {
123 | "name": "Node.js",
124 | "projects": [
125 | {
126 | "name": "Awesome Nodejs",
127 | "link": "https://github.com/sindresorhus/awesome-nodejs",
128 | "desc": " Delightful Node.js packages and resources"
129 | },
130 | {
131 | "name": "Node.js Express Demos",
132 | "link": "https://github.com/bsspirit/nodejs-demo",
133 | "desc": " 这个项目原本是依照《Node.js开发指南》书中介绍的项目开始的,然而它讲的是Express2.x的,这个项目则以Express 3.x、Express 4.x为例子展开。"
134 | }
135 | ]
136 | },
137 | {
138 | "name": "Laravel",
139 | "projects": [
140 | {
141 | "name": "Awesome Laravel",
142 | "link": "https://github.com/chiraggude/awesome-laravel",
143 | "desc": " A curated list of awesome bookmarks, packages, tutorials, videos and other cool resources from the Laravel ecosystem."
144 | }
145 | ]
146 | },
147 | {
148 | "name": "Spring MVC",
149 | "projects": [
150 | {
151 | "name": "Spring MVC Showcase",
152 | "link": "https://github.com/spring-projects/spring-mvc-showcase",
153 | "desc": " 这个项目带有Spring MVC的大部分功能的演示,如从正常的Controller,到表单、文件上传、异常处理等等。"
154 | },
155 | {
156 | "name": "Spring Blog",
157 | "link": "https://github.com/Raysmond/SpringBlog",
158 | "desc": " 用Spring Boot/MVC/JPA + Hibernate + MySQL + Redis + Bootstrap + Jade实现的博客系统。"
159 | }
160 | ]
161 | },
162 | {
163 | "name": "Spring Boot",
164 | "projects": [
165 | {
166 | "name": "Spring Boot samples",
167 | "link": "https://github.com/netgloo/spring-boot-samples",
168 | "desc": " 这个项目包含一系列的Spring Boot示例,当然还有相关的介绍。"
169 | },
170 | {
171 | "name": "Spring Boot微服务模板",
172 | "link": "https://github.com/rohitghatol/spring-boot-microservices",
173 | "desc": " 这个项目介绍了如何用Spring Boot、Spring Cloud、Spring OAuth 2和Netflix OSS来实现微服务架构。"
174 | }
175 | ]
176 | },
177 | {
178 | "name": "Django",
179 | "projects": [
180 | {
181 | "name": "Awesome Django",
182 | "link": "https://github.com/rosarior/awesome-django",
183 | "desc": " 大家都懂的,A curated list of awesome Django apps, projects and resources。"
184 | }
185 | ]
186 | },
187 | {
188 | "name": "Flask",
189 | "projects": [
190 | {
191 | "name": "Awesome Flask",
192 | "link": "https://github.com/humiaozuzu/awesome-flask",
193 | "desc": " A curated list of awesome Flask resources and plugins."
194 | },
195 | {
196 | "name": "Flask Boilerplate",
197 | "link": "https://github.com/mjhea0/flask-boilerplate",
198 | "desc": " 一个基于Flask、 Flask-SQLAlchemy、Flask-WTF、Fabric、Coverage、Bootstrap的Web应用。"
199 | }
200 | ]
201 | },
202 | {
203 | "name": "Rails",
204 | "projects": [
205 | {
206 | "name": "Awesome Rails",
207 | "link": "https://github.com/ekremkaraca/awesome-rails",
208 | "desc": " A collection / list of awesome projects, sites made with Rails."
209 | }
210 | ]
211 | }
212 | ]
213 | },
214 | {
215 | "name": "前后端结合",
216 | "subdomains": [
217 | {
218 | "name": "React",
219 | "projects": [
220 | {
221 | "name": "React Starter Kit",
222 | "link": "https://github.com/kriasoft/react-starter-kit",
223 | "desc": " 基于Node.js, Express, GraphQL, React.js, Babel 6, PostCSS, Webpack, Browsersync提供的同构Web应用模板"
224 | }
225 | ]
226 | },
227 | {
228 | "name": "Angular.js",
229 | "projects": [
230 | {
231 | "name": "MEAN.JS",
232 | "link": "https://github.com/meanjs/mean",
233 | "desc": " 使用MongoDB, Express, AngularJS, and Node.js的全栈JavaScript。"
234 | },
235 | {
236 | "name": "AngularJS + Flask Boilerplate App",
237 | "link": "https://github.com/shea256/angular-flask",
238 | "desc": " 以Flask作为后端,Angular.js作为前端的Web应用模板"
239 | }
240 | ]
241 | }
242 | ]
243 | }
244 | ]
245 | }
--------------------------------------------------------------------------------