├── .all-contributorsrc
├── .editorconfig
├── .gitattributes
├── .github
└── workflows
│ └── gh-pages.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .umirc.ts
├── LICENSE
├── README.md
├── README_EN.md
├── Users.md
├── commitlint.config.js
├── components
├── Card.jsx
└── CardList.jsx
├── docs
├── about
│ ├── index.en-US.md
│ └── index.md
├── card
│ ├── index.en-US.md
│ ├── index.md
│ └── repos.js
├── index.en-US.md
├── index.md
└── periodical
│ └── 1
│ ├── 1.asstes
│ ├── bzgf.png
│ ├── demo-view-1.png
│ ├── demo-view-2.png
│ ├── demo-view-3.png
│ ├── demo-view-4.png
│ ├── kzxq.png
│ ├── tyjz.png
│ └── zlkk.png
│ ├── index.en-US.md
│ └── index.md
├── package.json
├── public
├── logo.png
└── styles
│ └── blackboard.css
├── tsconfig.json
└── typings.d.ts
/.all-contributorsrc:
--------------------------------------------------------------------------------
1 | {
2 | "projectName": "open-source",
3 | "projectOwner": "juejin-im",
4 | "repoType": "github",
5 | "repoHost": "https://github.com",
6 | "files": [
7 | "Users.md"
8 | ],
9 | "imageSize": 80,
10 | "commit": false,
11 | "contributorsPerLine": 7,
12 | "badgeTemplate": "[](#contributors)",
13 | "contributorTemplate": "\">
\" width=\"<%= options.imageSize %>px;\" style=\"border-radius: <%= options.imageSize %>px;\"/>
",
14 | "types": {
15 | "code": {
16 | "symbol": "💻"
17 | },
18 | "fix": {
19 | "symbol": "🐛"
20 | },
21 | "doc": {
22 | "symbol": "📖"
23 | }
24 | },
25 | "contributors": [
26 | {
27 | "login": "itcodes",
28 | "name": "优弧",
29 | "avatar_url": "https://avatars2.githubusercontent.com/u/8282645?v=4",
30 | "profile": "http://www.itcodes.cn/",
31 | "contributions": [
32 | "doc"
33 | ]
34 | },
35 | {
36 | "login": "kkzhilu",
37 | "name": "Super-Kerwin",
38 | "avatar_url": "https://avatars2.githubusercontent.com/u/34807944?v=4",
39 | "profile": "https://www.kkzhilu.xyz/",
40 | "contributions": [
41 | "code",
42 | "doc"
43 | ]
44 | },
45 | {
46 | "login": "linxsbox",
47 | "name": "Lin",
48 | "avatar_url": "https://avatars3.githubusercontent.com/u/11206586?v=4",
49 | "profile": "http://t.eyufax.com/",
50 | "contributions": [
51 | "code",
52 | "doc"
53 | ]
54 | },
55 | {
56 | "login": "wangly19",
57 | "name": "王方华",
58 | "avatar_url": "https://avatars0.githubusercontent.com/u/45115006?v=4",
59 | "profile": "https://juejin.im/user/5c1b4d04e51d450eca5af1dd",
60 | "contributions": [
61 | "code",
62 | "doc"
63 | ]
64 | },
65 | {
66 | "login": "youngjuning",
67 | "name": "杨俊宁",
68 | "avatar_url": "https://avatars2.githubusercontent.com/u/13204332?v=4",
69 | "profile": "https://youngjuning.js.org/",
70 | "contributions": [
71 | "code",
72 | "doc"
73 | ]
74 | },
75 | {
76 | "login": "Cookieboty",
77 | "name": "Cookieboty",
78 | "avatar_url": "https://avatars3.githubusercontent.com/u/13778283?v=4",
79 | "profile": "https://github.com/Cookieboty",
80 | "contributions": [
81 | "doc"
82 | ]
83 | },
84 | {
85 | "login": "XmanLin",
86 | "name": "lin",
87 | "avatar_url": "https://avatars0.githubusercontent.com/u/31562877?v=4",
88 | "profile": "https://juejin.im/user/59c7ae3d518825788565af37",
89 | "contributions": [
90 | "doc"
91 | ]
92 | },
93 | {
94 | "login": "he-erduo",
95 | "name": "和耳朵",
96 | "avatar_url": "https://avatars2.githubusercontent.com/u/33930171?v=4",
97 | "profile": "https://github.com/he-erduo",
98 | "contributions": [
99 | "doc"
100 | ]
101 | },
102 | {
103 | "login": "isboyjc",
104 | "name": "IsboyJC",
105 | "avatar_url": "https://avatars2.githubusercontent.com/u/42193415?v=4",
106 | "profile": "https://github.com/isboyjc",
107 | "contributions": [
108 | "code",
109 | "doc"
110 | ]
111 | }
112 | ],
113 | "commitConvention": "none"
114 | }
115 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [Makefile]
16 | indent_style = tab
17 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.github/workflows/gh-pages.yml:
--------------------------------------------------------------------------------
1 | name: github pages
2 | on:
3 | push:
4 | branches:
5 | - master
6 | jobs:
7 | deploy:
8 | runs-on: ubuntu-18.04
9 | steps:
10 | - uses: actions/checkout@v2
11 | - run: yarn install
12 | - run: yarn build
13 | - name: Deploy
14 | uses: peaceiris/actions-gh-pages@v3
15 | with:
16 | github_token: ${{ secrets.GITHUB_TOKEN }}
17 | publish_dir: ./dist
18 | - name: Sync to Gitee
19 | uses: wearerequired/git-mirror-action@master
20 | env:
21 | # 使用 ssh-keygen 生成一对公钥私钥.
22 | # 在 Gitee 设置->SSH公钥 添加公钥
23 | # 在 GitHub Settings->SSH & GPG keys->SSH公钥 添加公钥
24 | # 在 GitHub 对应仓库的 Settings->Secrets 配置 SSH_PRIVATE_KEY,存放私钥
25 | SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
26 | with:
27 | source-repo: "git@github.com:juejin-im/open-source.git"
28 | destination-repo: "git@gitee.com:juejin-im/open-source.git"
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /npm-debug.log*
6 | /yarn-error.log
7 | /yarn.lock
8 | /package-lock.json
9 |
10 | # production
11 | /dist
12 |
13 | # misc
14 | .DS_Store
15 |
16 | # umi
17 | .umi
18 | .umi-production
19 | .env.local
20 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | **/*.svg
2 | **/*.ejs
3 | **/*.html
4 | package.json
5 | .umi
6 | .umi-production
7 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all",
4 | "printWidth": 80,
5 | "overrides": [
6 | {
7 | "files": ".prettierrc",
8 | "options": { "parser": "json" }
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/.umirc.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'dumi';
2 | export default defineConfig({
3 | title: 'open-source',
4 | favicon: 'https://b-gold-cdn.xitu.io/favicons/v2/favicon.ico',
5 | logo: 'https://juejin-im.github.io/open-source/logo.png',
6 | mode: 'site',
7 | base: '/open-source',
8 | publicPath: '/open-source/',
9 | exportStatic: {}, // 将所有路由输出为 HTML 目录结构,以免刷新页面时 404
10 | styles: [
11 | `.__dumi-default-navbar { box-shadow: none !important; border-bottom: 1px solid #ebedf1 !important; }`,
12 | ],
13 | theme: {
14 | '@c-primary': '#0876e4',
15 | },
16 | locales: [
17 | ['zh-CN', '中文'],
18 | ['en-US', 'English'],
19 | ],
20 | navs: [
21 | null,
22 | { title: 'GitHub', path: 'https://github.com/juejin-im/open-source' },
23 | ],
24 | // menus: {
25 | // '/periodical': [
26 | // {
27 | // title: '第二期',
28 | // children: ['periodical/Cesiumjs'],
29 | // },
30 | // {
31 | // title: '第一期',
32 | // children: [
33 | // 'periodical/Cube-UI',
34 | // 'periodical/Husky',
35 | // 'periodical/Remaxjs',
36 | // 'periodical/Soar',
37 | // 'periodical/Yapi',
38 | // ],
39 | // },
40 | // ],
41 | // },
42 | });
43 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 juejin-im
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.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 开源计划
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | English | 简体中文
22 |
23 | 你是不是有那么一瞬间看到一个很好的开源项目,但又不轻易间离去后忘记,那么来这里找找看吧。
24 |
25 |
26 | 开始浏览 »
27 |
28 |
29 | 贡献指南
30 | ·
31 | 加入我们
32 | ·
33 | 贡献者
34 | ·
35 | 影响力
36 |
37 |
38 |
39 |
40 | ## 贡献指南
41 |
42 | 我们需要你的推荐或者自荐,开源项目要求如下:
43 |
44 | - 近期 3 个月有更新且已经在维护的开源库
45 | - 有明确的应用场景以及较高的项目质量
46 | - 或含金量极高的英文文献
47 |
48 |
49 |
50 | 满足要求后,我们当然需要一份良好的推荐 / 自荐说明,包括但不限于以下内容:
51 |
52 | - 开源项目的介绍,包括语言,分类,推荐理由,用途等
53 | - 开源项目效果图,或使用说明
54 | - 重要的里程碑事件
55 | - 重要的技术突破,或取得的成就
56 |
57 |
58 |
59 | 撰写好说明后,请到 [open-source](https://github.com/juejin-im/open-source/issues) 中发起 Issues 并留下你联系方式,我们会在一周内完成评估工作
60 |
61 |
62 |
63 | ## 加入我们
64 |
65 | 本项目可能成为未来最棒的开源项目集合地,当然如果想走到那一步,少不了你的帮助
66 |
67 | 同时我们也会同步发起开源资料 / 开源项目的[翻译计划](https://github.com/juejin-im/open-source-translation) ,无论你是英语达人,还是技术大佬,又或是开源爱好者
68 |
69 | 这里都有你的一席之地,我们都欢迎你的加入!
70 |
71 | 微信请联系:chnyifan 或是 Super-Kerwin
72 |
73 | 当然,你也可以在 Issues 中留下你的信息,除此之外我们也很期待你的奇思妙想 ✨
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 | [](https://starchart.cc/juejin-im/open-source)
103 |
--------------------------------------------------------------------------------
/README_EN.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Open Source
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | English | Chinese
22 |
23 | Do you see a good open source project for a moment, but you don't forget it after leaving, so come here and have a look.
24 |
25 |
26 | Start »
27 |
28 |
29 | Contribution Guide
30 | ·
31 | Join us
32 | ·
33 | Contributor
34 | ·
35 | Effect
36 |
37 |
38 |
39 |
40 | ## Contribution Guide
41 |
42 | We need your recommendation or self recommendation, The requirements for open source projects are as follows:
43 |
44 | - The open source library that has been updated and under maintenance in recent 3 months
45 | - There are clear application scenarios and high project quality
46 | - Or high gold content of English literature
47 |
48 |
49 |
50 | After meeting the requirements, we certainly need a good recommendation / self recommendation description, It includes but is not limited to the following contents:
51 |
52 | - Introduction of open source project, including language, classification, recommendation reason, usage, etc
53 | - Open source project renderings, or instructions for use
54 | - Important milestones
55 | - An important technological breakthrough or achievement
56 |
57 |
58 |
59 | After writing the instructions, please go to [open-source](https://github.com/juejin-im/open-source/issues) to launch issues and leave your contact information, we will complete the assessment within one week.
60 |
61 |
62 |
63 | ## Join us
64 |
65 | This project may become the best collection of open source projects in the future, of course, if you want to go to that step, you can't help it.
66 |
67 | At the same time, we will also launch the open source materials / open source project [translation plan](https://github.com/juejin-im/open-source-translation), whether you are an English talent, a technology guru, or an open source enthusiast.
68 |
69 | You have a place here, we all welcome you to join!
70 |
71 | Wechat, please contact: chnyifan or Super-Kerwin.
72 |
73 | Of course, you can also leave your message in issues. In addition, we are looking forward to your ideas✨
74 |
75 |
76 |
77 | ## Contributor
78 |
79 |
80 |
81 | 
|
82 | 
|
83 | 
|
84 | 
|
85 | 
|
86 | 
|
87 | 
|
88 |
89 |
90 | 
|
91 | 
|
92 |
93 |
94 |
95 |
96 |
97 | Thanks contributors 🤞, If you want to contribute, please see [Contribution Guide](#Contribution Guide) or [Join us](#Join us).
98 |
99 |
100 |
101 | ## Effect
102 |
103 | [](https://starchart.cc/juejin-im/open-source)
104 |
--------------------------------------------------------------------------------
/Users.md:
--------------------------------------------------------------------------------
1 | ## Contributors ✨
2 |
3 | 命令行:
4 |
5 | ```bash
6 | # 预先安装
7 | npm install -g create-react-app yarn
8 |
9 | # 操作说明:https://allcontributors.org/docs/zh-cn/cli/usage
10 |
11 | # 增加用户
12 | yarn all-contributors add jfmengels code,doc
13 |
14 | # 重构界面
15 | yarn all-contributors (选第二个)
16 | ```
17 |
18 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
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 | This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
45 |
--------------------------------------------------------------------------------
/commitlint.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['@commitlint/config-conventional'],
3 | };
4 |
--------------------------------------------------------------------------------
/components/Card.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react';
2 | import { Card, Space, Avatar, Tag } from 'antd';
3 | import { StarOutlined, BranchesOutlined, EyeOutlined } from '@ant-design/icons';
4 | import 'antd/dist/antd.css';
5 | import classes from '../public/styles/blackboard.css';
6 |
7 | export default ({ data }) => {
8 | return (
9 |
10 | ,
18 | ,
23 | ,
28 | ]}
29 | >
30 | }
32 | title={data?.full_name}
33 | description={data?.description}
34 | />
35 |
36 | {data?.topics
37 | ? data?.topics.map((item, index) => (
38 |
43 | {item}
44 |
45 | ))
46 | : null}
47 |
48 |
49 |
50 | );
51 | };
52 |
53 | /**
54 | *
55 | * @param { } param0
56 | */
57 | const IconText = ({ icon, text }) => (
58 |
59 | {React.createElement(icon)}
60 | {text}
61 |
62 | );
63 |
--------------------------------------------------------------------------------
/components/CardList.jsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react';
2 | import axios from 'axios';
3 | import Card from './Card.jsx';
4 |
5 | export default props => {
6 | const [githubData, setGithubData] = useState([]);
7 | useEffect(() => {
8 | axios
9 | .get(
10 | 'https://raw.githubusercontent.com/juejin-im/repo-data/master/repos.json',
11 | )
12 | .then(({ data }) => {
13 | setGithubData(data);
14 | });
15 | }, []);
16 |
17 | return (
18 |
26 | {props.repos.map(repo => {
27 | return (
28 | item.full_name === repo)}
31 | />
32 | );
33 | })}
34 |
35 | );
36 | };
37 |
--------------------------------------------------------------------------------
/docs/about/index.en-US.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: About
3 | nav:
4 | order: 3
5 | title: About
6 | ---
7 |
8 |
9 | 提示:这篇文章还没有被翻译,想帮助我们吗,点击页面末尾的 Edit this doc on GitHub。
10 |
11 |
12 | ## 贡献指南
13 |
14 | 我们需要你的推荐或者自荐,开源项目要求如下:
15 |
16 | - 近期 3 个月有更新且已经在维护的开源库
17 | - 有明确的应用场景以及较高的项目质量
18 | - 或含金量极高的英文文献
19 |
20 |
21 |
22 | 满足要求后,我们当然需要一份良好的推荐 / 自荐说明,包括但不限于以下内容:
23 |
24 | - 开源项目的介绍,包括语言,分类,推荐理由,用途等
25 | - 开源项目效果图,或使用说明
26 | - 重要的里程碑事件
27 | - 重要的技术突破,或取得的成就
28 |
29 |
30 |
31 | 撰写好说明后,请到 [open-source](https://github.com/juejin-im/open-source/issues) 中发起 Issues 并留下你联系方式,我们会在一周内完成评估工作
32 |
33 |
34 |
35 | ## 加入我们
36 |
37 | 本项目可能成为未来最棒的开源项目集合地,当然如果想走到那一步,少不了你的帮助
38 |
39 | 同时我们也会同步发起开源资料 / 开源项目的[翻译计划](https://github.com/juejin-im/open-source-translation) ,无论你是英语达人,还是技术大佬,又或是开源爱好者
40 |
41 | 这里都有你的一席之地,我们都欢迎你的加入!
42 |
43 | 微信请联系:chnyifan 或是 Super-Kerwin
44 |
45 | 当然,你也可以在 Issues 中留下你的信息,除此之外我们也很期待你的奇思妙想 ✨
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 | [](https://starchart.cc/juejin-im/open-source)
73 |
--------------------------------------------------------------------------------
/docs/about/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 关于
3 | nav:
4 | order: 3
5 | title: 关于
6 | ---
7 |
8 | ## 贡献指南
9 |
10 | 我们需要你的推荐或者自荐,开源项目要求如下:
11 |
12 | - 近期 3 个月有更新且已经在维护的开源库
13 | - 有明确的应用场景以及较高的项目质量
14 | - 或含金量极高的英文文献
15 |
16 |
17 |
18 | 满足要求后,我们当然需要一份良好的推荐 / 自荐说明,包括但不限于以下内容:
19 |
20 | - 开源项目的介绍,包括语言,分类,推荐理由,用途等
21 | - 开源项目效果图,或使用说明
22 | - 重要的里程碑事件
23 | - 重要的技术突破,或取得的成就
24 |
25 |
26 |
27 | 撰写好说明后,请到 [open-source](https://github.com/juejin-im/open-source/issues) 中发起 Issues 并留下你联系方式,我们会在一周内完成评估工作
28 |
29 |
30 |
31 | ## 加入我们
32 |
33 | 本项目可能成为未来最棒的开源项目集合地,当然如果想走到那一步,少不了你的帮助
34 |
35 | 同时我们也会同步发起开源资料 / 开源项目的[翻译计划](https://github.com/juejin-im/open-source-translation) ,无论你是英语达人,还是技术大佬,又或是开源爱好者
36 |
37 | 这里都有你的一席之地,我们都欢迎你的加入!
38 |
39 | 微信请联系:chnyifan 或是 Super-Kerwin
40 |
41 | 当然,你也可以在 Issues 中留下你的信息,除此之外我们也很期待你的奇思妙想 ✨
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 | [](https://starchart.cc/juejin-im/open-source)
69 |
--------------------------------------------------------------------------------
/docs/card/index.en-US.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Projects
3 | sidemenu: false
4 | nav:
5 | order: 1
6 | title: Projects
7 | ---
8 |
9 | ```jsx | inline
10 | import React from 'react';
11 | import CardList from '../../components/CardList.jsx';
12 | import repos from './repos.js';
13 |
14 | export default () => {
15 | return ;
16 | };
17 | ```
18 |
--------------------------------------------------------------------------------
/docs/card/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 项目
3 | sidemenu: false
4 | nav:
5 | order: 1
6 | title: 项目
7 | ---
8 |
9 | ```jsx | inline
10 | import React from 'react';
11 | import CardList from '../../components/CardList.jsx';
12 | import repos from './repos.js';
13 |
14 | export default () => {
15 | return ;
16 | };
17 | ```
18 |
--------------------------------------------------------------------------------
/docs/card/repos.js:
--------------------------------------------------------------------------------
1 | module.exports = [
2 | 'didi/cube-ui',
3 | 'XiaoMi/soar',
4 | 'YMFE/yapi',
5 | 'remaxjs/remax',
6 | 'typicode/husky',
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/index.en-US.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 开源计划
3 | order: 1
4 | hero:
5 | title: Open source
6 | desc: Did you see a good open source project for a moment, but forget it inadvertently. Then come here to find it.
7 | actions:
8 | - text: See Periodical
9 | link: /periodical
10 | features:
11 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/881dc458-f20b-407b-947a-95104b5ec82b/k79dm8ih_w144_h144.png
12 | title: Amazing
13 | desc: Find a stunning and perfect work
14 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/d60657df-0822-4631-9d7c-e7a869c2f21c/k79dmz3q_w126_h126.png
15 | title: Hot
16 | desc: Search for the most popular open source projects nowadays
17 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/d1ee0c6f-5aed-4a45-a507-339a4bfe076c/k7bjsocq_w144_h144.png
18 | title: practical
19 | desc: Explore best practices in programming
20 | footer: Open-source MIT Licensed | Copyright © 2020
Powered by [dumi](https://d.umijs.org)
21 | ---
22 |
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 开源计划
3 | order: 1
4 | hero:
5 | title: 开源计划
6 | desc: 你是不是有那么一瞬间看到一个很好的开源项目,但又不轻易间离去后忘记。那么来这里找找看吧。
7 | actions:
8 | - text: 查看期刊
9 | link: /periodical
10 | features:
11 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/881dc458-f20b-407b-947a-95104b5ec82b/k79dm8ih_w144_h144.png
12 | title: 惊艳
13 | desc: 寻觅一眼惊艳的完美作品
14 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/d60657df-0822-4631-9d7c-e7a869c2f21c/k79dmz3q_w126_h126.png
15 | title: 热门
16 | desc: 搜寻时下最热门的开源项目
17 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/d1ee0c6f-5aed-4a45-a507-339a4bfe076c/k7bjsocq_w144_h144.png
18 | title: 实用
19 | desc: 探索编程中的最佳实践
20 | footer: Open-source MIT Licensed | Copyright © 2020
Powered by [dumi](https://d.umijs.org)
21 | ---
22 |
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/bzgf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/bzgf.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/demo-view-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/demo-view-1.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/demo-view-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/demo-view-2.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/demo-view-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/demo-view-3.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/demo-view-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/demo-view-4.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/kzxq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/kzxq.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/tyjz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/tyjz.png
--------------------------------------------------------------------------------
/docs/periodical/1/1.asstes/zlkk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/docs/periodical/1/1.asstes/zlkk.png
--------------------------------------------------------------------------------
/docs/periodical/1/index.en-US.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: -1
3 | title: The first phase
4 | nav:
5 | order: 2
6 | title: Periodical
7 | group:
8 | title: The first phase
9 | ---
10 |
11 |
12 | 提示:这篇文章还没有被翻译,想帮助我们吗,点击页面末尾的 Edit this doc on GitHub。
13 |
14 |
15 | ## Cube-UI
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | [GitHub](https://github.com/didi/cube-ui) | [官方文档](https://didi.github.io/cube-ui/#/zh-CN/docs/introduction)
26 |
27 | **项目分类**:UI 组件库 / 移动端
28 |
29 | ### 简介
30 |
31 | Cube-UI 基于 Vue.js 实现的精致移动端组件库。2017 年 11 月 8 日消息,滴滴出行又开源了第二个项目 —— 基于 Vue.js 实现的移动端组件库 cube-ui ,宣布开源 Web 移动端组件库 cube-ui,该技术拥有质量可靠、体验极致、标准规范和强扩展性这四大特点,并拥有独特的后编译技术方案帮助大幅优化性能。
32 |
33 | ### 特性
34 |
35 |
36 |
37 |
38 |
39 |  质量可靠 Quality
40 | |
41 |
42 |  体验极致 Experience
43 | |
44 |
45 |  标准规范 Standard
46 | |
47 |
48 |  扩展性强 Scalability
49 | |
50 |
51 |
52 | 由滴滴内部组件库精简提炼而来,历经考验,并且每个组件都有充分单元测试,为后续集成提供保障。 |
53 | 以迅速响应、动画流畅、接近原生为目标,在交互体验方面追求极致。 |
54 | 遵循统一的设计交互标准,高度还原设计效果;接口标准化,统一规范使用方式,开发更加简单高效。 |
55 | 支持按需引入和后编译,轻量灵活;扩展性强,可以方便地基于现有组件实现二次开发。 |
56 |
57 |
58 |
59 |
60 | ### 组件介绍
61 |
62 |
63 |
64 |
65 | 基础 |
66 | 展示(Button) |
67 |
68 |
69 |
70 |
71 |
72 |
73 | Button 按钮
74 | 按钮,提供了各种类型、样子、状态以及图标。
75 |
76 |
77 | Loading 加载中
78 | 加载,提供了可自定义大小的加载动画。
79 |
80 |
81 | Tip 提示
82 | 提示,用于弹出提示气泡框。
83 |
84 |
85 | Toolbar 工具条
86 | 工具栏,可以组合多个按钮,复选框操作为一个工具栏。(v 1.9.0 新增)
87 |
88 |
89 | TabBar 选项卡
90 | 选项卡。(v 1.10.0 新增)
91 |
92 | |
93 |
94 |
95 | |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | 展示(CheckboxGroup) |
104 | 表单 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | |
112 |
113 |
114 | Checkbox 复选框
115 | 复选框,可设置其状态、传入特殊 class 以及复选框图标位置。
116 |
117 |
118 | CheckboxGroup 复选框组
119 | 复选框组就是一组复选框,主要用来选择一组可选项;有垂直和水平两种样式。
120 |
121 |
122 | Radio 单选框
123 | 单选框组,可设置单选框组内容,样式等。(v 1.4.0 新增)
124 |
125 |
126 | Input 输入框
127 | 输入框组件。支持使用v-model对数据双向绑定,支持一键清空内容。(v 1.5.0 新增)
128 |
129 |
130 | Textarea
131 | 多行输入框组件,支持使用v-model对数据双向绑定,根据是否有内容、是否聚焦有折叠、展开两种状态。(v 1.5.0 新增)
132 |
133 |
134 | Select 选择
135 | Select 组件,用于单项选择。注: 由于此组件依赖 Picker 组件
136 |
137 |
138 | Switch 开关切换
139 | 滑动开关,用于切换 on/off 状态。(v 1.4.0 新增)
140 |
141 |
142 | Rate 评级
143 | 评分组件。你可以自定义星星个数,可以禁用交互,以用作评价展示,可以通过插槽自定义星星样式。(v 1.5.0 新增)
144 |
145 |
146 | Validator 校验器
147 | 校验器,用于对表单进行验证,并提示相应的错误信息。(v 1.5.0 新增)
148 |
149 |
150 | Upload 上传
151 | Upload 上传组件。(v 1.3.0 新增)
152 |
153 |
154 | Form 表单
155 | 表单,包含各种输入组件以及对应的校验;我们可以通过数据驱动的方式来生成完成表单。(v 1.7.0 新增)
156 | 从 1.8.0 开始支持blur 时才触发校验以及 debounce,同 Validator 一样也开始支持异步校验。
157 |
158 | |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 | 弹层 |
167 | 展示(Popup) |
168 |
169 |
170 |
171 |
172 |
173 | 注: 以下组件都是基于 create-api 实现,所以在使用之前,请确保自己了解过 create-api。
174 |
175 | Popup
176 | 底层弹层组件,主要用于基于此组件实现上层组件封装,只提供了基础功能:指定类型、是否有背景层、显示内容(HTML)以及是否居中。
177 |
178 |
179 | Toast 提醒
180 | Toast组件主要用于非模态信息提醒,无需用户交互。
181 |
182 |
183 | Picker 选择器
184 | Picker 组件也就是选择器,可以用于实现单列或多列选项的选择。
185 |
186 |
187 | CascadePicker 级联选择器
188 | CascadePicker组件是级联选择器,用于实现多列选择之间的级联变化。
189 |
190 |
191 | DatePicker 日期选择器
192 | 日期选择器,可用于日期选择,选择粒度的灵活配置,如年月日、时分秒、年月日时分秒、年月等。
193 |
194 |
195 | TimePicker 时间选择器
196 | TimePicker组件提供了常用的日期选择功能。
197 |
198 |
199 | SegmentPicker 段选择器
200 | 段选择器,用于实现多段的选择,比如选择时间段:2010年9月1日 - 2014年6月30日。(v 1.7.0 新增)
201 |
202 |
203 | Dialog 弹框
204 | Dialog模态框组件,提供了多种样式及交互形式。
205 |
206 |
207 | ActionSheet 操作菜单
208 | ActionSheet操作列表提供了两种常见的样式,灵活可控内容。
209 |
210 |
211 | Drawer 抽屉
212 | 抽屉,主要用来需要大范围层级进行选择的场景,一般情况下应该是满屏状态。
213 |
214 |
215 | ImagePreview 图片预览
216 | 图片预览,支持切换、放大缩小等能力。(v 1.10.0 新增)
217 |
218 | |
219 |
220 |
221 | |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 | 展示(Swipe) |
230 | 滚动 |
231 |
232 |
233 |
234 |
235 |
236 |
237 | |
238 |
239 | 是一个基于better-scroll进行封装的组件。
240 |
241 | Scroll 滚动
242 | 滚动列表,提供了优质的原生滚动体验,便捷的配置项和事件。
243 |
244 |
245 | Slide 幻灯片
246 | 轮播图,提供了常见的轮播及 swipe 的功能。
247 |
248 |
249 | IndexList 索引列表
250 | 索引列表,提供了列表索引的功能。
251 |
252 |
253 | Swipe 滑块
254 | 滑块组件,提供类似微信列表左滑功能,可以方便地对列表项做一些功能操作。(v 1.5.0 新增)
255 |
256 |
257 | Sticky 吸附
258 | 吸附组件,当滚动位置到达目标元素位置后,目标元素就会自动吸附。
259 |
260 |
261 | ScrollNavBar 滚动导航条
262 | 滚动导航条组件,效果类似于滴滴打车业务线切换。(v 1.10.0 新增)
263 |
264 |
265 | ScrollNav 滚动导航
266 | 滚动导航组件。(v 1.10.0 新增)
267 |
268 |
269 | TabBar 选项卡
270 | 选项卡。(v 1.10.0 新增)
271 |
272 | |
273 |
274 |
275 |
276 |
277 | ### 推荐理由
278 |
279 | **可快速上手**
280 | 新手教程项目:[cube-application-guide](https://github.com/cube-ui/cube-application-guide)
281 |
282 | **自定义主题**
283 | 移动端的组件对主题定制的需求会更多,从 `cube-ui^1.0.2` 开始,通过 webpack 工具可以实现自定义主题样式。
284 |
285 | **使用后编译**
286 | 后编译指的是应用依赖的 NPM 包并不需要在发布前编译,而是随着应用编译打包的时候一块编译。
287 |
288 | `注: 关于后编译更详细内容可参阅` [webpack 应用编译优化之路](https://github.com/DDFE/DDFE-blog/issues/23)
289 |
290 | > 使用 webpack + babel 开发应用越来越多,而且一般都是通过 NPM 进行包管理的,这样依赖包越来越多,这些依赖包也是使用的 ES2015+ 开发的,所以每个依赖包都需要编译才能发布,这样编译后代码中往往后包含很多编译代码,所以为了消除这部分冗余,推荐大家使用后编译。
291 |
292 | ## Husky
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 | [Github](https://github.com/typicode/husky)
303 |
304 | **项目分类**:JavaScript / 实用工具
305 |
306 | ### 简介
307 |
308 | husky,你没有看错,它就叫哈士奇 🐶
309 |
310 | husky 是一个 Git Hook 工具
311 |
312 | ### 作用
313 |
314 | husky 的作用相信在简介中就已经看到了,可能你并不理解它能为我们解决什么样的痛点
315 |
316 | 例如在我们进行团队协作时,每个人的代码风格不同,我们常常会使用编译器自动格式化自己喜欢的代码风格,但是再次提交代码时,由于与他人的风格不同,每次提交都会有很多更改,而这些更改都是代码风格上的更改,是没有必要的
317 |
318 | 也有的时候我们在代码提交前误删了一个逗号,但是自己并不知情就提交上去了,团队其他小伙伴并不知情,这是其他小伙伴拉下代码时就会报错
319 |
320 | 还有的时候团队中制定了 `commit` 规范,但是有小伙伴并不严格执行,就会造成后期一系列的麻烦事情
321 |
322 | 这个时候,就极度体现出了 `husky` 的作用,安装 `husky` 的时候,`husky` 会根据 package.json 里的配置,在 `.git/hooks` 目录生成 [所有](https://git-scm.com/docs/githooks) 的 `hook` 脚本(如果你已经自定义了一个 `hook` 脚本,`husky` 也不会覆盖它)
323 |
324 | 配合其他一些工具,它可以严格为我们把控这些问题,让我们的工作流更加规范、更加完善
325 |
326 | ### 推荐理由
327 |
328 | - husky 十分简单,容易上手
329 | - 它继承了 Git 下所有的钩子,在触发钩子的时候,husky 可以阻止不合法的 commit、push 等等
330 | - 配合 [prettier](https://github.com/prettier/prettier) 工具,可以在代码提交前自动格式化代码
331 | - 配合 [eslint](https://github.com/eslint/eslint) 工具,可以在代码提交前进行语法检测
332 | - 配合 [commitlint](https://github.com/conventional-changelog/commitlint) 工具,可以在代码提交前检验 commit message 是否规范
333 | - 配合 [lint-staged](https://github.com/okonet/lint-staged) 工具,可以只检查 staged 文件,从而提高效率
334 |
335 | ## Remaxjs/Remax
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 | [Github](https://github.com/remaxjs/remax) | [插件地址](https://github.com/remaxjs/awesome-remax#%E6%8F%92%E4%BB%B6)
346 |
347 | **项目分类**:JavaScript / 小程序
348 |
349 | ### 简介
350 |
351 | 1. 基于运行时的 React 方案,让你可以不受限制地使用 React 所有特性。
352 | 2. 支持阿里程序、微信小程序(QQ 小程序)、头条小程序以及 Web 应用的开发。
353 | 3. 默认支持 TypeScript 开发,提供完整的组件和 API 类型定义,为你的项目保驾护航
354 |
355 | ### 目前存在问题
356 |
357 | 1. 2.0 文档过于简单,有些问题需要直接阅读源码才能解决,如不 1.0 的文档丰富。
358 | 2. 社区插件丰富度不够,使用推广不够,出现问题需要开发者自己寻找
359 |
360 | ### 产品对比
361 |
362 | | | uniapp | Taro | Remax |
363 | | -------- | ------ | ----- | ----- |
364 | | 语言模型 | VUE | React | React |
365 |
366 | ### 推荐理由
367 |
368 | 1. 新版 2.0 基本兼容 React 语法,React 开发者可以无缝对接,同时带有 redux、mobx 状态管理,上手简单,开发迅捷
369 | 2. demo 完善,基本涵盖目前业务情况
370 | 3. 兼容多端,并支持单独拓展
371 | 4. 完美支持支付宝生态,例如 mpaas,支持在 app 中直接集成独立的小程序运行环境
372 |
373 | ## XiaoMi/soar
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 | [GitHub](https://github.com/XiaoMi/soar)
384 |
385 | **项目分类**:Go / 数据库
386 |
387 | ### 简介
388 |
389 | SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护,具有命令行及 Web 可视化两种操作模式。
390 |
391 | ### 未来方向
392 |
393 | - 语法支持方面,目前主要依赖 vitess,TiDB 对 SQL 语法的支持。
394 | - 目前仅针对 MySQL 语法族进行开发和测试,其他使用 SQL 的数据库产品暂不支持。
395 | - Profiling 和 Trace 功能有待深入挖掘,供经验丰富的 DBA 分析使用。
396 | - 目前尚不支持直接线上自动执行评审通过的 SQL,后续会努力支持。
397 | - 由于暂不支持线上自动执行,因此数据备份功能也未提供。
398 | - Vim, Sublime, Emacs 等编辑器插件支持。
399 | - Currently, only support Chinese suggestion, if you can help us add multi-language support, it will be greatly appreciated.
400 |
401 | ### 产品对比
402 |
403 | | | SOAR | sqlcheck | pt-query-advisor | SQL Advisor | Inception | sqlautoreview |
404 | | ------------ | ---- | -------- | ---------------- | ----------- | --------- | ------------- |
405 | | 启发式建议 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ |
406 | | 索引建议 | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
407 | | 查询重写 | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
408 | | 执行计划展示 | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
409 | | Profiling | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
410 | | Trace | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
411 | | SQL 在线执行 | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
412 | | 数据备份 | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
413 |
414 | ### 效果截图
415 |
416 | 
417 |
418 | ### 推荐理由
419 |
420 | 1. 跨平台支持(支持 Linux, Mac 环境,Windows 环境理论上也支持,不过未全面测试)。
421 | 2. 目前只支持 MySQL 语法族协议的 SQL 优化。
422 | 3. 支持基于启发式算法的语句优化。
423 | 4. 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)。
424 | 5. 支持 EXPLAIN 信息丰富解读。
425 | 6. 支持 SQL 指纹、压缩和美化。
426 | 7. 支持同一张表多条 ALTER 请求合并。
427 | 8. 支持自定义规则的 SQL 改写。
428 |
429 | ## YMFE/yapi
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 | [GitHub](https://github.com/YMFE/yapi) | [文档](https://hellosean1025.github.io/yapi) | [团队](https://github.com/YMFE)
440 |
441 | **项目分类**:JavaScript / 实用工具
442 |
443 | ### 简介
444 |
445 | YApi 是一个可本地部署的、打通前后端及 QA 的、可视化的接口管理平台
446 |
447 | ### 背景
448 |
449 | 现今的业务系统很少有孤立存在的,它们或多或少需要使用兄弟团队或是其他公司提供的服务,这给我们的联调和测试造成了麻烦。对于这种情况,我们常见的解决方案是搭建一个临时的 server,模拟那些服务,提供数据进行联调和测试。这就是 mock server 出现原因。
450 |
451 | ### 特性
452 |
453 | 1. 基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍
454 | 2. 扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性
455 | 3. 类似 postman 的接口调试
456 | 4. 自动化测试, 支持对 Response 断言
457 | 5. MockServer 除支持普通的随机 mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据
458 | 6. 支持 postman, har, swagger 数据导入
459 | 7. 免费开源,内网部署,信息再也不怕泄露了
460 |
461 | ### 推荐理由
462 |
463 | YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。
464 |
465 | YApi 可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
466 |
--------------------------------------------------------------------------------
/docs/periodical/1/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: -1
3 | title: 第一期
4 | nav:
5 | order: 2
6 | title: 期刊
7 | group:
8 | title: 第一期
9 | ---
10 |
11 | ## Cube-UI
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | [GitHub](https://github.com/didi/cube-ui) | [官方文档](https://didi.github.io/cube-ui/#/zh-CN/docs/introduction)
22 |
23 | **项目分类**:UI 组件库 / 移动端
24 |
25 | ### 简介
26 |
27 | Cube-UI 基于 Vue.js 实现的精致移动端组件库。2017 年 11 月 8 日消息,滴滴出行又开源了第二个项目 —— 基于 Vue.js 实现的移动端组件库 cube-ui ,宣布开源 Web 移动端组件库 cube-ui,该技术拥有质量可靠、体验极致、标准规范和强扩展性这四大特点,并拥有独特的后编译技术方案帮助大幅优化性能。
28 |
29 | ### 特性
30 |
31 |
32 |
33 |
34 |
35 |  质量可靠 Quality
36 | |
37 |
38 |  体验极致 Experience
39 | |
40 |
41 |  标准规范 Standard
42 | |
43 |
44 |  扩展性强 Scalability
45 | |
46 |
47 |
48 | 由滴滴内部组件库精简提炼而来,历经考验,并且每个组件都有充分单元测试,为后续集成提供保障。 |
49 | 以迅速响应、动画流畅、接近原生为目标,在交互体验方面追求极致。 |
50 | 遵循统一的设计交互标准,高度还原设计效果;接口标准化,统一规范使用方式,开发更加简单高效。 |
51 | 支持按需引入和后编译,轻量灵活;扩展性强,可以方便地基于现有组件实现二次开发。 |
52 |
53 |
54 |
55 |
56 | ### 组件介绍
57 |
58 |
59 |
60 |
61 | 基础 |
62 | 展示(Button) |
63 |
64 |
65 |
66 |
67 |
68 |
69 | Button 按钮
70 | 按钮,提供了各种类型、样子、状态以及图标。
71 |
72 |
73 | Loading 加载中
74 | 加载,提供了可自定义大小的加载动画。
75 |
76 |
77 | Tip 提示
78 | 提示,用于弹出提示气泡框。
79 |
80 |
81 | Toolbar 工具条
82 | 工具栏,可以组合多个按钮,复选框操作为一个工具栏。(v 1.9.0 新增)
83 |
84 |
85 | TabBar 选项卡
86 | 选项卡。(v 1.10.0 新增)
87 |
88 | |
89 |
90 |
91 | |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | 展示(CheckboxGroup) |
100 | 表单 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | |
108 |
109 |
110 | Checkbox 复选框
111 | 复选框,可设置其状态、传入特殊 class 以及复选框图标位置。
112 |
113 |
114 | CheckboxGroup 复选框组
115 | 复选框组就是一组复选框,主要用来选择一组可选项;有垂直和水平两种样式。
116 |
117 |
118 | Radio 单选框
119 | 单选框组,可设置单选框组内容,样式等。(v 1.4.0 新增)
120 |
121 |
122 | Input 输入框
123 | 输入框组件。支持使用v-model对数据双向绑定,支持一键清空内容。(v 1.5.0 新增)
124 |
125 |
126 | Textarea
127 | 多行输入框组件,支持使用v-model对数据双向绑定,根据是否有内容、是否聚焦有折叠、展开两种状态。(v 1.5.0 新增)
128 |
129 |
130 | Select 选择
131 | Select 组件,用于单项选择。注: 由于此组件依赖 Picker 组件
132 |
133 |
134 | Switch 开关切换
135 | 滑动开关,用于切换 on/off 状态。(v 1.4.0 新增)
136 |
137 |
138 | Rate 评级
139 | 评分组件。你可以自定义星星个数,可以禁用交互,以用作评价展示,可以通过插槽自定义星星样式。(v 1.5.0 新增)
140 |
141 |
142 | Validator 校验器
143 | 校验器,用于对表单进行验证,并提示相应的错误信息。(v 1.5.0 新增)
144 |
145 |
146 | Upload 上传
147 | Upload 上传组件。(v 1.3.0 新增)
148 |
149 |
150 | Form 表单
151 | 表单,包含各种输入组件以及对应的校验;我们可以通过数据驱动的方式来生成完成表单。(v 1.7.0 新增)
152 | 从 1.8.0 开始支持blur 时才触发校验以及 debounce,同 Validator 一样也开始支持异步校验。
153 |
154 | |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 | 弹层 |
163 | 展示(Popup) |
164 |
165 |
166 |
167 |
168 |
169 | 注: 以下组件都是基于 create-api 实现,所以在使用之前,请确保自己了解过 create-api。
170 |
171 | Popup
172 | 底层弹层组件,主要用于基于此组件实现上层组件封装,只提供了基础功能:指定类型、是否有背景层、显示内容(HTML)以及是否居中。
173 |
174 |
175 | Toast 提醒
176 | Toast组件主要用于非模态信息提醒,无需用户交互。
177 |
178 |
179 | Picker 选择器
180 | Picker 组件也就是选择器,可以用于实现单列或多列选项的选择。
181 |
182 |
183 | CascadePicker 级联选择器
184 | CascadePicker组件是级联选择器,用于实现多列选择之间的级联变化。
185 |
186 |
187 | DatePicker 日期选择器
188 | 日期选择器,可用于日期选择,选择粒度的灵活配置,如年月日、时分秒、年月日时分秒、年月等。
189 |
190 |
191 | TimePicker 时间选择器
192 | TimePicker组件提供了常用的日期选择功能。
193 |
194 |
195 | SegmentPicker 段选择器
196 | 段选择器,用于实现多段的选择,比如选择时间段:2010年9月1日 - 2014年6月30日。(v 1.7.0 新增)
197 |
198 |
199 | Dialog 弹框
200 | Dialog模态框组件,提供了多种样式及交互形式。
201 |
202 |
203 | ActionSheet 操作菜单
204 | ActionSheet操作列表提供了两种常见的样式,灵活可控内容。
205 |
206 |
207 | Drawer 抽屉
208 | 抽屉,主要用来需要大范围层级进行选择的场景,一般情况下应该是满屏状态。
209 |
210 |
211 | ImagePreview 图片预览
212 | 图片预览,支持切换、放大缩小等能力。(v 1.10.0 新增)
213 |
214 | |
215 |
216 |
217 | |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 | 展示(Swipe) |
226 | 滚动 |
227 |
228 |
229 |
230 |
231 |
232 |
233 | |
234 |
235 | 是一个基于better-scroll进行封装的组件。
236 |
237 | Scroll 滚动
238 | 滚动列表,提供了优质的原生滚动体验,便捷的配置项和事件。
239 |
240 |
241 | Slide 幻灯片
242 | 轮播图,提供了常见的轮播及 swipe 的功能。
243 |
244 |
245 | IndexList 索引列表
246 | 索引列表,提供了列表索引的功能。
247 |
248 |
249 | Swipe 滑块
250 | 滑块组件,提供类似微信列表左滑功能,可以方便地对列表项做一些功能操作。(v 1.5.0 新增)
251 |
252 |
253 | Sticky 吸附
254 | 吸附组件,当滚动位置到达目标元素位置后,目标元素就会自动吸附。
255 |
256 |
257 | ScrollNavBar 滚动导航条
258 | 滚动导航条组件,效果类似于滴滴打车业务线切换。(v 1.10.0 新增)
259 |
260 |
261 | ScrollNav 滚动导航
262 | 滚动导航组件。(v 1.10.0 新增)
263 |
264 |
265 | TabBar 选项卡
266 | 选项卡。(v 1.10.0 新增)
267 |
268 | |
269 |
270 |
271 |
272 |
273 | ### 推荐理由
274 |
275 | **可快速上手**
276 | 新手教程项目:[cube-application-guide](https://github.com/cube-ui/cube-application-guide)
277 |
278 | **自定义主题**
279 | 移动端的组件对主题定制的需求会更多,从 `cube-ui^1.0.2` 开始,通过 webpack 工具可以实现自定义主题样式。
280 |
281 | **使用后编译**
282 | 后编译指的是应用依赖的 NPM 包并不需要在发布前编译,而是随着应用编译打包的时候一块编译。
283 |
284 | `注: 关于后编译更详细内容可参阅` [webpack 应用编译优化之路](https://github.com/DDFE/DDFE-blog/issues/23)
285 |
286 | > 使用 webpack + babel 开发应用越来越多,而且一般都是通过 NPM 进行包管理的,这样依赖包越来越多,这些依赖包也是使用的 ES2015+ 开发的,所以每个依赖包都需要编译才能发布,这样编译后代码中往往后包含很多编译代码,所以为了消除这部分冗余,推荐大家使用后编译。
287 |
288 | ## Husky
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 | [Github](https://github.com/typicode/husky)
299 |
300 | **项目分类**:JavaScript / 实用工具
301 |
302 | ### 简介
303 |
304 | husky,你没有看错,它就叫哈士奇 🐶
305 |
306 | husky 是一个 Git Hook 工具
307 |
308 | ### 作用
309 |
310 | husky 的作用相信在简介中就已经看到了,可能你并不理解它能为我们解决什么样的痛点
311 |
312 | 例如在我们进行团队协作时,每个人的代码风格不同,我们常常会使用编译器自动格式化自己喜欢的代码风格,但是再次提交代码时,由于与他人的风格不同,每次提交都会有很多更改,而这些更改都是代码风格上的更改,是没有必要的
313 |
314 | 也有的时候我们在代码提交前误删了一个逗号,但是自己并不知情就提交上去了,团队其他小伙伴并不知情,这是其他小伙伴拉下代码时就会报错
315 |
316 | 还有的时候团队中制定了 `commit` 规范,但是有小伙伴并不严格执行,就会造成后期一系列的麻烦事情
317 |
318 | 这个时候,就极度体现出了 `husky` 的作用,安装 `husky` 的时候,`husky` 会根据 package.json 里的配置,在 `.git/hooks` 目录生成 [所有](https://git-scm.com/docs/githooks) 的 `hook` 脚本(如果你已经自定义了一个 `hook` 脚本,`husky` 也不会覆盖它)
319 |
320 | 配合其他一些工具,它可以严格为我们把控这些问题,让我们的工作流更加规范、更加完善
321 |
322 | ### 推荐理由
323 |
324 | - husky 十分简单,容易上手
325 | - 它继承了 Git 下所有的钩子,在触发钩子的时候,husky 可以阻止不合法的 commit、push 等等
326 | - 配合 [prettier](https://github.com/prettier/prettier) 工具,可以在代码提交前自动格式化代码
327 | - 配合 [eslint](https://github.com/eslint/eslint) 工具,可以在代码提交前进行语法检测
328 | - 配合 [commitlint](https://github.com/conventional-changelog/commitlint) 工具,可以在代码提交前检验 commit message 是否规范
329 | - 配合 [lint-staged](https://github.com/okonet/lint-staged) 工具,可以只检查 staged 文件,从而提高效率
330 |
331 | ## Remaxjs/Remax
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 | [Github](https://github.com/remaxjs/remax) | [插件地址](https://github.com/remaxjs/awesome-remax#%E6%8F%92%E4%BB%B6)
342 |
343 | **项目分类**:JavaScript / 小程序
344 |
345 | ### 简介
346 |
347 | 1. 基于运行时的 React 方案,让你可以不受限制地使用 React 所有特性。
348 | 2. 支持阿里程序、微信小程序(QQ 小程序)、头条小程序以及 Web 应用的开发。
349 | 3. 默认支持 TypeScript 开发,提供完整的组件和 API 类型定义,为你的项目保驾护航
350 |
351 | ### 目前存在问题
352 |
353 | 1. 2.0 文档过于简单,有些问题需要直接阅读源码才能解决,如不 1.0 的文档丰富。
354 | 2. 社区插件丰富度不够,使用推广不够,出现问题需要开发者自己寻找
355 |
356 | ### 产品对比
357 |
358 | | | uniapp | Taro | Remax |
359 | | -------- | ------ | ----- | ----- |
360 | | 语言模型 | VUE | React | React |
361 |
362 | ### 推荐理由
363 |
364 | 1. 新版 2.0 基本兼容 React 语法,React 开发者可以无缝对接,同时带有 redux、mobx 状态管理,上手简单,开发迅捷
365 | 2. demo 完善,基本涵盖目前业务情况
366 | 3. 兼容多端,并支持单独拓展
367 | 4. 完美支持支付宝生态,例如 mpaas,支持在 app 中直接集成独立的小程序运行环境
368 |
369 | ## XiaoMi/soar
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 | [GitHub](https://github.com/XiaoMi/soar)
380 |
381 | **项目分类**:Go / 数据库
382 |
383 | ### 简介
384 |
385 | SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护,具有命令行及 Web 可视化两种操作模式。
386 |
387 | ### 未来方向
388 |
389 | - 语法支持方面,目前主要依赖 vitess,TiDB 对 SQL 语法的支持。
390 | - 目前仅针对 MySQL 语法族进行开发和测试,其他使用 SQL 的数据库产品暂不支持。
391 | - Profiling 和 Trace 功能有待深入挖掘,供经验丰富的 DBA 分析使用。
392 | - 目前尚不支持直接线上自动执行评审通过的 SQL,后续会努力支持。
393 | - 由于暂不支持线上自动执行,因此数据备份功能也未提供。
394 | - Vim, Sublime, Emacs 等编辑器插件支持。
395 | - Currently, only support Chinese suggestion, if you can help us add multi-language support, it will be greatly appreciated.
396 |
397 | ### 产品对比
398 |
399 | | | SOAR | sqlcheck | pt-query-advisor | SQL Advisor | Inception | sqlautoreview |
400 | | ------------ | ---- | -------- | ---------------- | ----------- | --------- | ------------- |
401 | | 启发式建议 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ |
402 | | 索引建议 | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
403 | | 查询重写 | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
404 | | 执行计划展示 | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
405 | | Profiling | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
406 | | Trace | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
407 | | SQL 在线执行 | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
408 | | 数据备份 | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
409 |
410 | ### 效果截图
411 |
412 | 
413 |
414 | ### 推荐理由
415 |
416 | 1. 跨平台支持(支持 Linux, Mac 环境,Windows 环境理论上也支持,不过未全面测试)。
417 | 2. 目前只支持 MySQL 语法族协议的 SQL 优化。
418 | 3. 支持基于启发式算法的语句优化。
419 | 4. 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)。
420 | 5. 支持 EXPLAIN 信息丰富解读。
421 | 6. 支持 SQL 指纹、压缩和美化。
422 | 7. 支持同一张表多条 ALTER 请求合并。
423 | 8. 支持自定义规则的 SQL 改写。
424 |
425 | ## YMFE/yapi
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 | [GitHub](https://github.com/YMFE/yapi) | [文档](https://hellosean1025.github.io/yapi) | [团队](https://github.com/YMFE)
436 |
437 | **项目分类**:JavaScript / 实用工具
438 |
439 | ### 简介
440 |
441 | YApi 是一个可本地部署的、打通前后端及 QA 的、可视化的接口管理平台
442 |
443 | ### 背景
444 |
445 | 现今的业务系统很少有孤立存在的,它们或多或少需要使用兄弟团队或是其他公司提供的服务,这给我们的联调和测试造成了麻烦。对于这种情况,我们常见的解决方案是搭建一个临时的 server,模拟那些服务,提供数据进行联调和测试。这就是 mock server 出现原因。
446 |
447 | ### 特性
448 |
449 | 1. 基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍
450 | 2. 扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性
451 | 3. 类似 postman 的接口调试
452 | 4. 自动化测试, 支持对 Response 断言
453 | 5. MockServer 除支持普通的随机 mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据
454 | 6. 支持 postman, har, swagger 数据导入
455 | 7. 免费开源,内网部署,信息再也不怕泄露了
456 |
457 | ### 推荐理由
458 |
459 | YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。
460 |
461 | YApi 可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
462 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "open-source",
4 | "version": "1.0.0",
5 | "scripts": {
6 | "start": "dumi dev",
7 | "build": "dumi build",
8 | "prettier": "prettier --write \"**/*.{js,jsx,tsx,ts,less,md,json}\""
9 | },
10 | "husky": {
11 | "hooks": {
12 | "commit-msg": "commitlint -e $HUSKY_GIT_PARAMS",
13 | "pre-commit": "lint-staged"
14 | }
15 | },
16 | "lint-staged": {
17 | "*.{js,jsx,less,md,json}": [
18 | "prettier --write",
19 | "git add"
20 | ],
21 | "*.ts?(x)": [
22 | "prettier --parser=typescript --write",
23 | "git add"
24 | ]
25 | },
26 | "devDependencies": {
27 | "all-contributors-cli": "^6.17.2",
28 | "dumi": "^1.0.9",
29 | "lint-staged": "^10.0.7",
30 | "prettier": "^1.19.1",
31 | "yorkie": "^2.0.0"
32 | },
33 | "dependencies": {
34 | "@ant-design/icons": "^4.2.2",
35 | "@commitlint/cli": "^9.1.2",
36 | "@commitlint/config-conventional": "^9.1.2",
37 | "antd": "^4.5.4",
38 | "axios": "^0.20.0",
39 | "husky": "^4.2.5"
40 | },
41 | "repository": {
42 | "type": "git",
43 | "url": "git+https://github.com/juejin-im/open-source.git"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juejin-cn/open-source/08a2dd216bbfad023aa6baa3084289e4babd4dd6/public/logo.png
--------------------------------------------------------------------------------
/public/styles/blackboard.css:
--------------------------------------------------------------------------------
1 | .githubCard {
2 | /* height: 300px; */
3 | margin-top: 16px;
4 | border: none;
5 | box-shadow: 0 0 5px #eee;
6 | }
7 | .githubCard:hover {
8 | box-shadow: 0 0 5px #ddd;
9 | }
10 |
11 | .tagView {
12 | padding-top: 20px;
13 | }
14 |
15 | .tagLine {
16 | margin-bottom: 5px;
17 | }
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "module": "esnext",
5 | "moduleResolution": "node",
6 | "importHelpers": true,
7 | "jsx": "react",
8 | "esModuleInterop": true,
9 | "sourceMap": true,
10 | "baseUrl": "./",
11 | "strict": true,
12 | "paths": {
13 | "@/*": ["src/*"],
14 | "@@/*": ["src/.umi/*"]
15 | },
16 | "allowSyntheticDefaultImports": true
17 | },
18 | "exclude": ["node_modules", "dist", "typings"]
19 | }
20 |
--------------------------------------------------------------------------------
/typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.css';
2 | declare module '*.less';
3 |
--------------------------------------------------------------------------------