├── requirements.txt ├── hg-app ├── mv.sh ├── public │ ├── favicon.ico │ ├── manifest.json │ ├── index.html │ └── data.json ├── src │ ├── assets │ │ ├── happy.png │ │ └── hg-logo.png │ ├── config │ │ ├── image.ts │ │ └── selfData.ts │ ├── index.css │ ├── index.tsx │ ├── App.tsx │ ├── react-app-env.d.ts │ └── components │ │ ├── Content │ │ ├── Content.tsx │ │ └── Card.tsx │ │ └── Menu │ │ └── Menu.tsx ├── .eslintrc ├── config │ ├── jest │ │ ├── cssTransform.js │ │ └── fileTransform.js │ ├── pnpTs.js │ ├── modules.js │ ├── paths.js │ ├── env.js │ ├── webpackDevServer.config.js │ └── webpack.config.js ├── .gitignore ├── tsconfig.json ├── scripts │ ├── test.js │ ├── start.js │ └── build.js ├── README.md └── package.json ├── assets ├── hg-logo.png └── font │ └── MicrosoftYaqiHeiLight-2.ttf ├── script ├── howto.md └── make_html.py ├── .travis.yml ├── README.md ├── .gitignore └── blogs.md /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | Jinja2 -------------------------------------------------------------------------------- /hg-app/mv.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd ./build/ 3 | mv * ../../ -------------------------------------------------------------------------------- /assets/hg-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloGitHub-Team/GitHubPageHub/HEAD/assets/hg-logo.png -------------------------------------------------------------------------------- /hg-app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloGitHub-Team/GitHubPageHub/HEAD/hg-app/public/favicon.ico -------------------------------------------------------------------------------- /hg-app/src/assets/happy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloGitHub-Team/GitHubPageHub/HEAD/hg-app/src/assets/happy.png -------------------------------------------------------------------------------- /hg-app/src/assets/hg-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloGitHub-Team/GitHubPageHub/HEAD/hg-app/src/assets/hg-logo.png -------------------------------------------------------------------------------- /assets/font/MicrosoftYaqiHeiLight-2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloGitHub-Team/GitHubPageHub/HEAD/assets/font/MicrosoftYaqiHeiLight-2.ttf -------------------------------------------------------------------------------- /hg-app/src/config/image.ts: -------------------------------------------------------------------------------- 1 | // logo 2 | import logoImg from '../assets/hg-logo.png'; 3 | import happyImg from '../assets/happy.png'; 4 | 5 | export const img = { 6 | logoImg: logoImg, 7 | happyImg: happyImg 8 | } -------------------------------------------------------------------------------- /hg-app/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "standard", 3 | "env": { 4 | "browser": true, 5 | "es6": true, 6 | "node": true 7 | }, 8 | "rules": { 9 | "allowShortCircuit": false, 10 | "allowTernary": false 11 | } 12 | } -------------------------------------------------------------------------------- /hg-app/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /hg-app/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return 'module.exports = {};'; 9 | }, 10 | getCacheKey() { 11 | // The output is always the same. 12 | return 'cssTransform'; 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /hg-app/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | 13 | # misc 14 | .DS_Store 15 | .env.local 16 | .env.development.local 17 | .env.test.local 18 | .env.production.local 19 | 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | -------------------------------------------------------------------------------- /hg-app/src/index.css: -------------------------------------------------------------------------------- 1 | @import '~antd/dist/antd.css'; 2 | body { 3 | margin: 0; 4 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 5 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 6 | sans-serif; 7 | -webkit-font-smoothing: antialiased; 8 | -moz-osx-font-smoothing: grayscale; 9 | } 10 | 11 | code { 12 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 13 | monospace; 14 | } -------------------------------------------------------------------------------- /hg-app/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | 6 | ReactDOM.render(, document.getElementById('root')); 7 | 8 | // If you want your app to work offline and load faster, you can change 9 | // unregister() to register() below. Note this comes with some pitfalls. 10 | // Learn more about service workers: https://bit.ly/CRA-PWA 11 | // serviceWorker.unregister(); 12 | -------------------------------------------------------------------------------- /hg-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "module": "esnext", 16 | "moduleResolution": "node", 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "noEmit": true, 20 | "jsx": "preserve" 21 | }, 22 | "include": [ 23 | "src" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /script/howto.md: -------------------------------------------------------------------------------- 1 | ## 一、提交流程 2 | 3 | 为了增加的大家的参与度和熟悉 GitHub 的贡献规则,我们采用 fork + PR 的方式提交项目。具体步骤如下: 4 | 5 | 1. fork 本项目,你的账号下会有一个 GitHubPageHub 项目 6 | 2. 按照下面的格式,修改你的 GitHubPageHub 项目中 `blogs.md` 文件,增加你的项目 7 | 3. 修改完确认无误后,提交 PR 8 | 4. 关注该 PR 的回复,不论是否收录都会有相关的回复 9 | 10 | ## 二、增加项目的格式 11 | 12 | ### 1. 拷贝下面的内容到 `blogs.md` 文件中 13 | 14 | *注意: 请把新增内容写在最后面,并且不要改动前面的内容* 15 | 16 | ``` 17 | begin 18 | url(地址): 19 | name(名称): 20 | description(描述): 21 | tag(标签): 22 | end 23 | 24 | ``` 25 | 26 | ### 2. 按照上述提示填写内容(所有项均为必填) 27 | - 描述:不要超过 100 个字符 28 | - 标签可选列表:算法/数据结构|OI/ACM|前端|后端|Android|iOS|人工智能|产品|数据库|服务器|编程语言|区块链|架构|运维|游戏|物联网|安全|云计算/大数据 29 | - 多标签:采用`|`符号分割 30 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | matrix: 2 | include: 3 | - language: node_js 4 | node_js: 5 | - 10.16.0 6 | before_install: 7 | - cd hg-app 8 | install: 9 | - npm install 10 | script: 11 | - npm run build 12 | - sh ./mv.sh 13 | - language: python 14 | python: 15 | - '3.6' 16 | install: 17 | - pip install -r requirements.txt 18 | script: python script/make_html.py 19 | 20 | deploy: 21 | provider: pages 22 | skip_cleanup: true 23 | github_token: $GITHUB_TOKEN # Set in the settings page of your repository, as a secure variable 24 | keep_history: true 25 | on: 26 | branch: master -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

欢迎来到 GitHubPageHub 👋

2 | 3 |
4 | 5 | 6 | ## 🏠 [首页](https://hellogithub-team.github.io/GitHubPageHub/) 7 | 8 | ## 简介 9 | 10 | 本项目是一个**不仅限于 GitHub Page 的个人博客展示页**。你可以把你的个人博客提交上来展示。当然我们也希望你能在你的博客中加上一个 [HelloGitHub](https://github.com/521xueweihan/HelloGitHub) 的链接哦! 11 | 12 | 点击[这里](script/howto.md),马上提交你的博客吧! 13 | 14 | *** 15 | :heart: GitHubPageHub 16 | 17 | Maintained by [HelloGitHub-Team](https://github.com/HelloGitHub-Team) 18 | -------------------------------------------------------------------------------- /hg-app/config/pnpTs.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { resolveModuleName } = require('ts-pnp'); 4 | 5 | exports.resolveModuleName = ( 6 | typescript, 7 | moduleName, 8 | containingFile, 9 | compilerOptions, 10 | resolutionHost 11 | ) => { 12 | return resolveModuleName( 13 | moduleName, 14 | containingFile, 15 | compilerOptions, 16 | resolutionHost, 17 | typescript.resolveModuleName 18 | ); 19 | }; 20 | 21 | exports.resolveTypeReferenceDirective = ( 22 | typescript, 23 | moduleName, 24 | containingFile, 25 | compilerOptions, 26 | resolutionHost 27 | ) => { 28 | return resolveModuleName( 29 | moduleName, 30 | containingFile, 31 | compilerOptions, 32 | resolutionHost, 33 | typescript.resolveTypeReferenceDirective 34 | ); 35 | }; 36 | -------------------------------------------------------------------------------- /hg-app/src/config/selfData.ts: -------------------------------------------------------------------------------- 1 | export const menuData = [ 2 | { 3 | id: 1, 4 | name: '前端' 5 | }, 6 | { 7 | id: 2, 8 | name: '算法/数据结构' 9 | }, { 10 | id: 3, 11 | name: 'OI/ACM' 12 | }, { 13 | id: 4, 14 | name: '后端' 15 | }, { 16 | id: 5, 17 | name: 'Android' 18 | }, { 19 | id: 6, 20 | name: 'IOS' 21 | }, { 22 | id: 7, 23 | name: '人工智能' 24 | }, { 25 | id: 8, 26 | name: '产品' 27 | }, { 28 | id: 9, 29 | name: '数据库' 30 | }, { 31 | id: 10, 32 | name: '服务器' 33 | }, { 34 | id: 11, 35 | name: '编程语言' 36 | }, { 37 | id: 12, 38 | name: '区块链' 39 | }, { 40 | id: 13, 41 | name: '架构' 42 | }, { 43 | id: 14, 44 | name: '运维' 45 | }, { 46 | id: 15, 47 | name: '游戏' 48 | }, { 49 | id: 16, 50 | name: '物联网' 51 | }, { 52 | id: 17, 53 | name: '云计算' 54 | }, { 55 | id: 18, 56 | name: '大数据' 57 | } 58 | ] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | develop-eggs/ 12 | dist/ 13 | downloads/ 14 | eggs/ 15 | lib/ 16 | lib64/ 17 | parts/ 18 | sdist/ 19 | var/ 20 | build/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # PyInstaller 26 | # Usually these files are written by a python script from a template 27 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 28 | *.manifest 29 | *.spec 30 | 31 | # Installer logs 32 | pip-log.txt 33 | pip-delete-this-directory.txt 34 | 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .coverage 39 | .cache 40 | nosetests.xml 41 | coverage.xml 42 | 43 | # Translations 44 | *.mo 45 | *.pot 46 | 47 | # Django stuff: 48 | *.log 49 | *.log.* 50 | 51 | # Sphinx documentation 52 | docs/_build/ 53 | 54 | # PyBuilder 55 | target/ 56 | 57 | 58 | # Local settings 59 | 60 | # vim 61 | *.swp 62 | 63 | # pycharm 64 | .idea/ 65 | 66 | # vscode 67 | .vscode 68 | 69 | # mac os 70 | .DS_Store 71 | 72 | # db file 73 | *.db 74 | db_backup/ 75 | 76 | # script file 77 | -------------------------------------------------------------------------------- /hg-app/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { PureComponent } from 'react'; 2 | import styled from 'styled-components'; 3 | import Menu from './components/Menu/Menu'; 4 | import Content from './components/Content/Content'; 5 | 6 | 7 | const AppWrapper = styled.div` 8 | &:after { 9 | content: '', 10 | display: block, 11 | clear: both 12 | } 13 | 14 | 15 | .aside { 16 | width: 16%; 17 | position: fixed; 18 | z-index: 200; 19 | top: 0; 20 | left: 0; 21 | bottom: -100px; 22 | background-color: #24243E; 23 | padding: 31px 0; 24 | color: #ccc; 25 | } 26 | 27 | .content { 28 | float: right; 29 | width: 100%; 30 | margin-left: -100px; 31 | max-width: 84%; 32 | } 33 | 34 | .right{ 35 | width: 100%; 36 | height:100vh; 37 | overflow:hidden; 38 | background-color: #221F3A; 39 | } 40 | `; 41 | class App extends PureComponent { 42 | render() { 43 | return ( 44 | 45 |
46 | 47 |
48 |
49 |
50 | 51 |
52 |
53 |
54 | ); 55 | } 56 | } 57 | 58 | 59 | 60 | export default App; 61 | -------------------------------------------------------------------------------- /hg-app/config/jest/fileTransform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | const camelcase = require('camelcase'); 5 | 6 | // This is a custom Jest transformer turning file imports into filenames. 7 | // http://facebook.github.io/jest/docs/en/webpack.html 8 | 9 | module.exports = { 10 | process(src, filename) { 11 | const assetFilename = JSON.stringify(path.basename(filename)); 12 | 13 | if (filename.match(/\.svg$/)) { 14 | // Based on how SVGR generates a component name: 15 | // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6 16 | const pascalCaseFileName = camelcase(path.parse(filename).name, { 17 | pascalCase: true, 18 | }); 19 | const componentName = `Svg${pascalCaseFileName}`; 20 | return `const React = require('react'); 21 | module.exports = { 22 | __esModule: true, 23 | default: ${assetFilename}, 24 | ReactComponent: React.forwardRef(function ${componentName}(props, ref) { 25 | return { 26 | $$typeof: Symbol.for('react.element'), 27 | type: 'svg', 28 | ref: ref, 29 | key: null, 30 | props: Object.assign({}, props, { 31 | children: ${assetFilename} 32 | }) 33 | }; 34 | }), 35 | };`; 36 | } 37 | 38 | return `module.exports = ${assetFilename};`; 39 | }, 40 | }; 41 | -------------------------------------------------------------------------------- /hg-app/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | 5 | declare namespace NodeJS { 6 | interface ProcessEnv { 7 | readonly NODE_ENV: 'development' | 'production' | 'test'; 8 | readonly PUBLIC_URL: string; 9 | } 10 | } 11 | 12 | declare module '*.bmp' { 13 | const src: string; 14 | export default src; 15 | } 16 | 17 | declare module '*.gif' { 18 | const src: string; 19 | export default src; 20 | } 21 | 22 | declare module '*.jpg' { 23 | const src: string; 24 | export default src; 25 | } 26 | 27 | declare module '*.jpeg' { 28 | const src: string; 29 | export default src; 30 | } 31 | 32 | declare module '*.png' { 33 | const src: string; 34 | export default src; 35 | } 36 | 37 | declare module '*.webp' { 38 | const src: string; 39 | export default src; 40 | } 41 | 42 | declare module '*.svg' { 43 | import * as React from 'react'; 44 | 45 | export const ReactComponent: React.FunctionComponent>; 46 | 47 | const src: string; 48 | export default src; 49 | } 50 | 51 | declare module '*.module.css' { 52 | const classes: { [key: string]: string }; 53 | export default classes; 54 | } 55 | 56 | declare module '*.module.scss' { 57 | const classes: { [key: string]: string }; 58 | export default classes; 59 | } 60 | 61 | declare module '*.module.sass' { 62 | const classes: { [key: string]: string }; 63 | export default classes; 64 | } 65 | -------------------------------------------------------------------------------- /hg-app/scripts/test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // Do this as the first thing so that any code reading it knows the right env. 4 | process.env.BABEL_ENV = 'test'; 5 | process.env.NODE_ENV = 'test'; 6 | process.env.PUBLIC_URL = ''; 7 | 8 | // Makes the script crash on unhandled rejections instead of silently 9 | // ignoring them. In the future, promise rejections that are not handled will 10 | // terminate the Node.js process with a non-zero exit code. 11 | process.on('unhandledRejection', err => { 12 | throw err; 13 | }); 14 | 15 | // Ensure environment variables are read. 16 | require('../config/env'); 17 | 18 | 19 | const jest = require('jest'); 20 | const execSync = require('child_process').execSync; 21 | let argv = process.argv.slice(2); 22 | 23 | function isInGitRepository() { 24 | try { 25 | execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' }); 26 | return true; 27 | } catch (e) { 28 | return false; 29 | } 30 | } 31 | 32 | function isInMercurialRepository() { 33 | try { 34 | execSync('hg --cwd . root', { stdio: 'ignore' }); 35 | return true; 36 | } catch (e) { 37 | return false; 38 | } 39 | } 40 | 41 | // Watch unless on CI or explicitly running all tests 42 | if ( 43 | !process.env.CI && 44 | argv.indexOf('--watchAll') === -1 45 | ) { 46 | // https://github.com/facebook/create-react-app/issues/5210 47 | const hasSourceControl = isInGitRepository() || isInMercurialRepository(); 48 | argv.push(hasSourceControl ? '--watch' : '--watchAll'); 49 | } 50 | 51 | 52 | jest.run(argv); 53 | -------------------------------------------------------------------------------- /hg-app/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 22 | GitHubPageHub 23 | 24 | 25 | 26 |
27 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /hg-app/README.md: -------------------------------------------------------------------------------- 1 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 2 | 3 | ## Available Scripts 4 | 5 | In the project directory, you can run: 6 | 7 | ### `npm start` 8 | 9 | Runs the app in the development mode.
10 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 11 | 12 | The page will reload if you make edits.
13 | You will also see any lint errors in the console. 14 | 15 | ### `npm test` 16 | 17 | Launches the test runner in the interactive watch mode.
18 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 19 | 20 | ### `npm run build` 21 | 22 | Builds the app for production to the `build` folder.
23 | It correctly bundles React in production mode and optimizes the build for the best performance. 24 | 25 | The build is minified and the filenames include the hashes.
26 | Your app is ready to be deployed! 27 | 28 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 29 | 30 | ### `npm run eject` 31 | 32 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 33 | 34 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 35 | 36 | Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 37 | 38 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 39 | 40 | ## Learn More 41 | 42 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 43 | 44 | To learn React, check out the [React documentation](https://reactjs.org/). 45 | -------------------------------------------------------------------------------- /hg-app/public/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "url": "https://chungzh.cn/", 4 | "name": "ChungZH's Blog", 5 | "desc": "ChungZH 的小站", 6 | "tags": [ 7 | "编程语言", 8 | "算法/数据结构", 9 | "OI/ACM" 10 | ], 11 | "speed": 0.75974 12 | }, 13 | { 14 | "url": "https://www.desgard.com/", 15 | "name": "Guardia · 瓜地", 16 | "desc": "冬瓜的博客", 17 | "tags": [ 18 | "客户端", 19 | "算法/数据结构", 20 | "iOS" 21 | ], 22 | "speed": 0.547567 23 | }, 24 | { 25 | "url": "https://www.jefsky.com", 26 | "name": "程序猿甜品店", 27 | "desc": "代码不一定每天都能写好,但人生每一天都要活好", 28 | "tags": [ 29 | "前端", 30 | "数据库", 31 | "后端" 32 | ], 33 | "speed": 0.066244 34 | }, 35 | { 36 | "url": "https://ops-coffee.cn/", 37 | "name": "运维咖啡吧", 38 | "desc": "追求技术的道路上,我从不曾停下脚步", 39 | "tags": [ 40 | "运维", 41 | "数据库", 42 | "服务器", 43 | "架构" 44 | ], 45 | "speed": 0.547185 46 | }, 47 | { 48 | "url": "https://tkstorm.com", 49 | "name": "TK.Storm", 50 | "desc": "死亡即开始,当下即永恒", 51 | "tags": [ 52 | "运维", 53 | "服务器", 54 | "算法/数据结构", 55 | "架构", 56 | "编程语言" 57 | ], 58 | "speed": 0.198786 59 | }, 60 | { 61 | "url": "https://shizuri.net", 62 | "name": "静之森", 63 | "desc": "致虚极、守静笃。", 64 | "tags": [], 65 | "speed": 3.340723 66 | }, 67 | { 68 | "url": "https://www.bitlogs.tech/", 69 | "name": "Cloud Strife", 70 | "desc": "Make The World A Better Place", 71 | "tags": [ 72 | "后端" 73 | ], 74 | "speed": 1.677819 75 | }, 76 | { 77 | "url": "https://blog.p2hp.com", 78 | "name": "Lenix Blog", 79 | "desc": "记录-交流-分享", 80 | "tags": [ 81 | "运维", 82 | "数据库", 83 | "服务器", 84 | "架构", 85 | "后端", 86 | "物联网", 87 | "编程语言", 88 | "前端" 89 | ], 90 | "speed": 0.284414 91 | } 92 | ] -------------------------------------------------------------------------------- /blogs.md: -------------------------------------------------------------------------------- 1 | begin 2 | url(地址): https://chungzh.cn/ 3 | name(名称): ChungZH's Blog 4 | description(描述): ChungZH 的小站 5 | tag(标签): 算法/数据结构|OI/ACM|编程语言 6 | end 7 | 8 | begin 9 | url(地址): https://www.desgard.com/ 10 | name(名称): Guardia · 瓜地 11 | description(描述): 冬瓜的博客 12 | tag(标签): iOS|客户端|算法/数据结构 13 | end 14 | 15 | begin 16 | url(地址): https://www.jefsky.com 17 | name(名称): 程序猿甜品店 18 | description(描述): 代码不一定每天都能写好,但人生每一天都要活好 19 | tag(标签): 前端|后端|数据库 20 | end 21 | 22 | begin 23 | url(地址): https://ops-coffee.cn/ 24 | name(名称): 运维咖啡吧 25 | description(描述): 追求技术的道路上,我从不曾停下脚步 26 | tag(标签): 数据库|服务器|架构|运维 27 | end 28 | 29 | 30 | begin 31 | url(地址): https://tkstorm.com 32 | name(名称): TK.Storm 33 | description(描述): 死亡即开始,当下即永恒 34 | tag(标签): 服务器|架构|运维|编程语言|算法/数据结构 35 | end 36 | 37 | begin 38 | url(地址): https://shizuri.net 39 | name(名称): 静之森 40 | description(描述): 致虚极、守静笃。 41 | tag(标签): 生活|思考|人生|大学生活 42 | end 43 | 44 | begin 45 | url(地址): https://www.bitlogs.tech/ 46 | name(名称): Cloud Strife 47 | description(描述): Make The World A Better Place 48 | tag(标签): 后端 49 | end 50 | 51 | begin 52 | url(地址): https://blog.p2hp.com 53 | name(名称): Lenix Blog 54 | description(描述):记录-交流-分享 55 | tag(标签): 前端|后端|数据库|服务器|编程语言|架构|运维|物联网 56 | end 57 | 58 | begin 59 | url(地址): https://cmcncm.cn/ 60 | name(名称): 庄七 61 | description(描述):以善眼望世界 62 | tag(标签): 思考|区块链 63 | end 64 | 65 | begin 66 | url(地址): http://houkensjtu.github.io/ 67 | name(名称): Geekhead 68 | description(描述):Be real. 69 | tag(标签):编程语言|人工智能|思考 70 | end 71 | 72 | begin 73 | url(地址): http://chenfeiyang.top 74 | name(名称): Feiyang Chen's Blogs 75 | description(描述): Knowing is owning... 76 | tag(标签): 算法|人工智能|论文笔记 77 | end 78 | 79 | begin 80 | url(地址): http://github.laiczhang.com 81 | name(名称): laic zhang の Blog 82 | description(描述): Do a good thing. 83 | tag(标签): 算法|人工智能|思考 84 | end 85 | 86 | begin 87 | url(地址): https://royce2003.top/ 88 | name(名称): Royce's Blog 89 | description(描述): Royce 的小窝 90 | tag(标签): OI/ACM|算法/数据结构|编程语言 91 | end 92 | 93 | begin 94 | url(地址): https://aeilot.github.io/blog 95 | name(名称): Louis Aeilot's Blog 96 | description(描述): Stay Hungry. Stay Foolish. 97 | tag(标签): OI/ACM|算法/数据结构|Android|iOS|编程语言 98 | end 99 | 100 | begin 101 | url(地址): https://blog.pi-dal.com 102 | name(名称): pi-dal-blog 103 | description(描述): pi-dal的个人博客 104 | tag(标签): 前端|后端|iOS|物理|数学|日记 105 | end 106 | -------------------------------------------------------------------------------- /hg-app/config/modules.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('fs'); 4 | const path = require('path'); 5 | const paths = require('./paths'); 6 | const chalk = require('react-dev-utils/chalk'); 7 | 8 | /** 9 | * Get the baseUrl of a compilerOptions object. 10 | * 11 | * @param {Object} options 12 | */ 13 | function getAdditionalModulePaths(options = {}) { 14 | const baseUrl = options.baseUrl; 15 | 16 | // We need to explicitly check for null and undefined (and not a falsy value) because 17 | // TypeScript treats an empty string as `.`. 18 | if (baseUrl == null) { 19 | // If there's no baseUrl set we respect NODE_PATH 20 | // Note that NODE_PATH is deprecated and will be removed 21 | // in the next major release of create-react-app. 22 | 23 | const nodePath = process.env.NODE_PATH || ''; 24 | return nodePath.split(path.delimiter).filter(Boolean); 25 | } 26 | 27 | const baseUrlResolved = path.resolve(paths.appPath, baseUrl); 28 | 29 | // We don't need to do anything if `baseUrl` is set to `node_modules`. This is 30 | // the default behavior. 31 | if (path.relative(paths.appNodeModules, baseUrlResolved) === '') { 32 | return null; 33 | } 34 | 35 | // Allow the user set the `baseUrl` to `appSrc`. 36 | if (path.relative(paths.appSrc, baseUrlResolved) === '') { 37 | return [paths.appSrc]; 38 | } 39 | 40 | // Otherwise, throw an error. 41 | throw new Error( 42 | chalk.red.bold( 43 | "Your project's `baseUrl` can only be set to `src` or `node_modules`." + 44 | ' Create React App does not support other values at this time.' 45 | ) 46 | ); 47 | } 48 | 49 | function getModules() { 50 | // Check if TypeScript is setup 51 | const hasTsConfig = fs.existsSync(paths.appTsConfig); 52 | const hasJsConfig = fs.existsSync(paths.appJsConfig); 53 | 54 | if (hasTsConfig && hasJsConfig) { 55 | throw new Error( 56 | 'You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file.' 57 | ); 58 | } 59 | 60 | let config; 61 | 62 | // If there's a tsconfig.json we assume it's a 63 | // TypeScript project and set up the config 64 | // based on tsconfig.json 65 | if (hasTsConfig) { 66 | config = require(paths.appTsConfig); 67 | // Otherwise we'll check if there is jsconfig.json 68 | // for non TS projects. 69 | } else if (hasJsConfig) { 70 | config = require(paths.appJsConfig); 71 | } 72 | 73 | config = config || {}; 74 | const options = config.compilerOptions || {}; 75 | 76 | const additionalModulePaths = getAdditionalModulePaths(options); 77 | 78 | return { 79 | additionalModulePaths: additionalModulePaths, 80 | hasTsConfig, 81 | }; 82 | } 83 | 84 | module.exports = getModules(); 85 | -------------------------------------------------------------------------------- /hg-app/src/components/Content/Content.tsx: -------------------------------------------------------------------------------- 1 | import React, { PureComponent } from 'react'; 2 | import styled from 'styled-components'; 3 | import { Alert, Row, Col } from 'antd'; 4 | import Card from './Card'; 5 | import axios from 'axios'; 6 | 7 | const ContentWrapper = styled.div` 8 | padding: 10px; 9 | 10 | .contents { 11 | margin-top: 20px; 12 | } 13 | `; 14 | 15 | 16 | class Content extends PureComponent { 17 | 18 | constructor(props: any) { 19 | super(props); 20 | } 21 | 22 | 23 | 24 | componentDidMount() { 25 | console.log('进来了----------------------------'); 26 | fetch("https://easy-mock.com/mock/59a90a31e0dc6633419878e6/example/menu/lists", { 27 | method: 'GET', 28 | mode: 'cors', 29 | }) .then(res => res.json()) 30 | .then(json => window.localStorage.setItem("data",JSON.stringify(json))); 31 | 32 | console.log('出来了----------------------------'); 33 | } 34 | 35 | onClose = (event: any) => { 36 | console.log(event, 'I was closed.'); 37 | }; 38 | 39 | render() { 40 | let dataArray = null; 41 | let dataArrayString = localStorage.getItem('data'); 42 | if (dataArrayString) { 43 | dataArray = JSON.parse(dataArrayString); 44 | } 45 | 46 | console.log(dataArray); 47 | return ( 48 | 49 | this.onClose} 55 | /> 56 |
57 | 58 | { 59 | dataArray && dataArray.map((item: any, index: any) => { 60 | return ( 61 | 62 | 70 | 71 | 72 | ); 73 | }) 74 | } 75 | 76 |
77 |
78 | ); 79 | } 80 | } 81 | 82 | export default Content; 83 | -------------------------------------------------------------------------------- /hg-app/config/paths.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | const fs = require('fs'); 5 | const url = require('url'); 6 | 7 | // Make sure any symlinks in the project folder are resolved: 8 | // https://github.com/facebook/create-react-app/issues/637 9 | const appDirectory = fs.realpathSync(process.cwd()); 10 | const resolveApp = relativePath => path.resolve(appDirectory, relativePath); 11 | 12 | const envPublicUrl = process.env.PUBLIC_URL; 13 | 14 | function ensureSlash(inputPath, needsSlash) { 15 | const hasSlash = inputPath.endsWith('/'); 16 | if (hasSlash && !needsSlash) { 17 | return inputPath.substr(0, inputPath.length - 1); 18 | } else if (!hasSlash && needsSlash) { 19 | return `${inputPath}/`; 20 | } else { 21 | return inputPath; 22 | } 23 | } 24 | 25 | const getPublicUrl = appPackageJson => 26 | envPublicUrl || require(appPackageJson).homepage; 27 | 28 | // We use `PUBLIC_URL` environment variable or "homepage" field to infer 29 | // "public path" at which the app is served. 30 | // Webpack needs to know it to put the right