{"id":25547020,"url":"https://github.com/fishjar/comparison-note","last_synced_at":"2026-02-11T21:30:14.933Z","repository":{"id":37098823,"uuid":"245106662","full_name":"fishjar/comparison-note","owner":"fishjar","description":"对比学习笔记","archived":false,"fork":false,"pushed_at":"2024-04-26T02:24:05.000Z","size":2837,"stargazers_count":3,"open_issues_count":12,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-28T23:02:41.284Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://fishjar.github.io/comparison-note/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fishjar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-03-05T08:22:22.000Z","updated_at":"2024-04-26T02:24:10.000Z","dependencies_parsed_at":"2024-04-26T03:28:05.028Z","dependency_job_id":"690f8c9a-3ff9-4717-9a37-dfbb61909ce2","html_url":"https://github.com/fishjar/comparison-note","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fcomparison-note","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fcomparison-note/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fcomparison-note/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fcomparison-note/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fishjar","download_url":"https://codeload.github.com/fishjar/comparison-note/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239808525,"owners_count":19700455,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-20T09:19:11.341Z","updated_at":"2026-02-11T21:30:14.862Z","avatar_url":"https://github.com/fishjar.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 对比学习笔记\n\ndemo 浏览地址：https://fishjar.github.io/comparison-note/\n\n## 前记\n\n- 不同编程语言，许多特性是相似的，也有许多特性是不同的。\n- 在学习多种语言之后，记忆上有诸多混淆，查找文档又散落各处。\n- 所以萌发了做一个这样的笔记项目，通过直观的对比记录来学习、查阅相关知识。\n\n## 项目特性\n\n- 支持`markdown`文档，支持无限深度的目录\n- 支持导出静态页面\n- 支持 github 自动集成/部署\n- 初衷是为编程语言学习做的笔记系统，其实不限于此\n\n## 技术栈\n\n- reactjs\n- nextjs\n- markdown\n- bootstrap\n- github actions\n\n## 目录说明\n\n```sh\n├── bin\n│   └── index.js            # 递归导出菜单的脚本\n├── src\n│   ├── components          # 公用组件\n│   │   ├── CodeBlock.js\n│   │   ├── Footer.js\n│   │   ├── Header.js\n│   │   ├── Layout.js\n│   │   ├── MarkDown.js\n│   │   └── Nav.js\n│   ├── pages\n│   │   ├── _app.js\n│   │   ├── index.js\n│   │   └── [...param].js\n│   └── utils\n│       ├── index.js\n│       └── navs.json       # 导出的菜单数据\n├── docs                    # 导出静态页面的文件夹\n├── LICENSE\n├── next.config.js\n├── notes                   # markdown笔记文件夹\n├── package.json\n├── README.md\n└── yarn.lock\n```\n\n## 笔记编写说明\n\n- 笔记使用`markdown`格式，文件后缀请使用`.md`\n- 全部笔记必须保存到`notes`文件夹\n- 每个文件夹请编写一个`README.md`文件，且支持`title`字段定义显示的文件夹名称\n- 每个文件夹的其他`.md`文件会当作比较笔记\n\n## 开发说明\n\n```sh\n# 安装依赖\nyarn\n\n# 导出菜单\nyarn nav\n\n# 开发\nyarn dev\n\n# 编译\nyarn build\n\n# 运行\nyarn start\n\n# 导出静态页面\nyarn export\n```\n\n## github 部署说明\n\n- 修改`next.config.js`中的`ASSET_PREFIX`\n- 修改`package.json`中的`homepage`\n- 给`action`创建一个名为`ACCESS_TOKEN`的`secrets`\n- 直接`push`到`master`分支，`actions`会自动部署\n\n## 截图\n\n![comparison-note 1](/screenshot/01.png)\n![comparison-note 2](/screenshot/02.png)\n\n## 一些坑\n\n- `getInitialProps`\n  - 按理在服务器运行可以使用`fs`，`path`等`nodejs`库，但是没运行成功。\n  - 最后只好加了一个独立脚本`bin/index.js`来生成菜单列表。\n- `react-syntax-highlighter`\n  - 导入类似`react-syntax-highlighter/dist/esm/styles/hljs`是不行的\n  - 必须改成`react-syntax-highlighter/dist/ejs/styles/hljs`。\n- `next.js`的路由\n  - 开发时的路由是 js 控制的，可能没有`/`结尾\n  - 但是到处静态`html`后，其实是访问某目录下的`index.html`文件，所以路径会有个`/`结尾\n  - 并且部署到非顶级目录时，路由参数也会有变化\n  - 这会导致一些路由判断的麻烦\n- `github pages`部署\n  - 所有`css`和`js`文件 404。\n  - 解决是添加`.nojekyll`文件，否则`_next`目录下的`css`和`js`访问不到。\n\n## 后记\n\n- 初次使用`nextjs`，发现坑不少，局限性也挺大\n- 转一圈，发现\n  - 如果只是简单的几个页面，根本不需要什么`nextjs`，也不需要`react`，\n  - 或许直接一个脚本更简单灵活\n- 有时间再写一个脚本版本\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffishjar%2Fcomparison-note","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffishjar%2Fcomparison-note","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffishjar%2Fcomparison-note/lists"}