├── .gitignore ├── site ├── articles │ ├── explore │ │ ├── README.md │ │ ├── javascript-toolchain-rome.md │ │ └── create-react-app-intro.md │ └── blitzjs │ │ ├── README.md │ │ ├── blitz-introduction-2.md │ │ └── blitz-introduction-1.md ├── TIMELINE.md ├── README.md └── index.tsx ├── mod.ts ├── deps.ts ├── README.md ├── .github └── workflows │ └── gh-pages.yml ├── pagic.config.tsx └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | dist/* -------------------------------------------------------------------------------- /site/articles/explore/README.md: -------------------------------------------------------------------------------- 1 | # 探索篇 2 | -------------------------------------------------------------------------------- /mod.ts: -------------------------------------------------------------------------------- 1 | export { React } from './deps.ts' 2 | -------------------------------------------------------------------------------- /site/articles/blitzjs/README.md: -------------------------------------------------------------------------------- 1 | # Blitz.js 篇 2 | -------------------------------------------------------------------------------- /deps.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'https://esm.sh/react@18.2.0' 2 | 3 | export { React } 4 | -------------------------------------------------------------------------------- /site/TIMELINE.md: -------------------------------------------------------------------------------- 1 | # 开发日志 2 | 3 | ## 2024-01-01 4 | 5 | * 正式以 nextjs-tutorial 为中心开启 2024 博文分享和探索 6 | 7 | ## 2021-03-23 8 | 9 | * 初始化仓库,使用 Pagic v1.2.0 和 Deno v1.8.0 构建 10 | * 从《Deno 钻研之术》仓库中迁移之前的 React 相关文章到这里 11 | * 发布第一篇 Blitz.js 文章 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Next.js 全栈开发手册 2 | 3 | > 前身命名曾为 fullstack-react & blitzjs-tutorial.js 4 | > 目前 Next.js 已经非常成熟,Blitz 也全力拥抱 Next.js 5 | > 因此集中到 Next.js tutorial 中即可 6 | 7 | 2024 年再启动。 8 | 9 | ## 历史博文 10 | 11 | |序号|文章名|发布时间|备注| 12 | |2021-03-23|[Blitz.js 入门教程:基于 Next.js 的下一代 React 全栈框架](https://blitzjs-tutorial.js.org/articles/blitz/blitzjs-introduction.html)|| 13 | |2020-04-10|[欲取代绝大多 JavaScript 工具链?Rome 尝鲜](https://deno-tutorial.js.org/articles/explore/javascript-toolchain-rome.html)|| 14 | |2020-01-10|[深入浅出 Create React App](https://deno-tutorial.js.org/articles/explore/create-react-app-intro.html)|| 15 | |...|...|...|...| 16 | 17 | ## 订阅 18 | 19 | 本项目文档内容均采用 [CC-BY-SA-4.0] 协议进行共享,欢迎 Star, Watch 本仓库。 20 | -------------------------------------------------------------------------------- /site/README.md: -------------------------------------------------------------------------------- 1 | # Next.js 全栈开发手册 2 | 3 | > 前身命名曾为 fullstack-react & blitzjs-tutorial.js 4 | > 目前 Next.js 已经非常成熟,Blitz 也全力拥抱 Next.js 5 | > 因此集中到 Next.js tutorial 中即可 6 | 7 | 2024 年再启动。 8 | 9 | ## 历史博文 10 | 11 | |序号|文章名|发布时间|备注| 12 | |2021-03-23|[Blitz.js 入门教程:基于 Next.js 的下一代 React 全栈框架](https://blitzjs-tutorial.js.org/articles/blitz/blitzjs-introduction.html)|| 13 | |2020-04-10|[欲取代绝大多 JavaScript 工具链?Rome 尝鲜](https://deno-tutorial.js.org/articles/explore/javascript-toolchain-rome.html)|| 14 | |2020-01-10|[深入浅出 Create React App](https://deno-tutorial.js.org/articles/explore/create-react-app-intro.html)|| 15 | |...|...|...|...| 16 | 17 | ## 订阅 18 | 19 | 本项目文档内容均采用 [CC-BY-SA-4.0] 协议进行共享,欢迎 Star, Watch 本仓库。 20 | -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: gh-pages 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build-and-deploy: 7 | runs-on: ubuntu-18.04 8 | steps: 9 | - uses: actions/checkout@v2 10 | 11 | - name: Build 12 | env: 13 | DENO_INSTALL: /home/runner/.deno 14 | run: | 15 | curl -fsSL https://deno.land/x/install/install.sh | sh 16 | export PATH="$DENO_INSTALL/bin:$PATH" 17 | deno --version 18 | deno upgrade --version 1.8.0 19 | deno install --unstable --allow-env --allow-read --allow-write --allow-net --allow-run -n pagic https://deno.land/x/pagic@v1.2.0/mod.ts 20 | pagic build 21 | 22 | - name: Deploy 23 | if: github.ref == 'refs/heads/main' && github.event_name == 'push' 24 | env: 25 | GA_ID: UA-169223577-1 26 | uses: peaceiris/actions-gh-pages@v3 27 | with: 28 | github_token: ${{ secrets.GITHUB_TOKEN }} 29 | publish_dir: ./dist 30 | cname: blitzjs-tutorial.js.org 31 | -------------------------------------------------------------------------------- /pagic.config.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'https://esm.sh/react@18.2.0' 2 | 3 | export default { 4 | srcDir: 'site', 5 | theme: 'docs', 6 | plugins: ['sidebar', 'prev_next'], 7 | title: 'Blitz.js + React 全栈开发手册', 8 | description: 'Blitz + React 全栈开发手册,构建下一代 React 全栈应用', 9 | github: 'https://github.com/hylerrix/blitzjs-tutorial', 10 | head: (), 11 | nav: [ 12 | { text: '文章', link: '/articles/' }, 13 | { 14 | text: '打赏一下!!', 15 | link: 'http://qiniu.ningo.cloud/hylerrix/reward-alipay.png', 16 | target: '_blank', 17 | popover: ( 18 | <> 19 | 20 | 21 | 22 | ) 23 | }, 24 | { text: 'Deno 钻研之术', target: '_blank', link: 'https://github.com/hylerrix/deno-tutorial' }, 25 | { text: 'Deno 算法之旅', target: '_blank', link: 'https://github.com/hylerrix/deno-algorithm' }, 26 | { text: 'Blitz.js', target: '_blank', link: 'https://blitzjs.com/' }, 27 | { text: '持续添加中...', target: '_blank', link: 'https://github.com/hylerrix' }, 28 | { 29 | text: '凝果屋', 30 | link: 'https://github.com/ningowood', 31 | target: '_blank', 32 | popover: ( 33 | 34 | ) 35 | }, 36 | { text: '关于', target: '_blank', link: 'https://github.com/hylerrix' }, 37 | ], 38 | sidebar: { 39 | '/articles/': [ 40 | 'articles/README.md', 41 | { 42 | link: 'articles/blitz/README.md', 43 | title: 'Blitz.js 篇', 44 | children: [ 45 | 'articles/blitz/blitz-introduction-1.md', 46 | 'articles/blitz/blitz-introduction-2.md', 47 | ], 48 | }, 49 | { 50 | link: 'articles/blitz/README.md', 51 | title: '探索篇', 52 | children: [ 53 | 'articles/explore/create-react-app-intro.md', 54 | 'articles/explore/javascript-toolchain-rome.md', 55 | ], 56 | }, 57 | // 'articles/THANKS.md', 58 | ], 59 | }, 60 | tools: { 61 | editOnGithub: true, 62 | backToTop: true 63 | }, 64 | port: 8011 65 | } 66 | -------------------------------------------------------------------------------- /site/index.tsx: -------------------------------------------------------------------------------- 1 | import { React } from '../mod.ts' 2 | 3 | const style = ` 4 | h2 { 5 | font-weight: normal; 6 | } 7 | .main_article { 8 | width: 960px; 9 | max-width: 960px; 10 | padding-bottom: 0; 11 | } 12 | .cards { 13 | display: flex; 14 | justify-content: center; 15 | margin: 3rem -1rem 0 -1rem; 16 | padding-top: 1rem; 17 | border-top: 1px solid var(--color-border); 18 | } 19 | .cards > div { 20 | width: 20rem; 21 | padding: 0 1rem; 22 | } 23 | .cards ul { 24 | color: var(--color-text-muted); 25 | } 26 | .btn { 27 | padding: 0.5rem 1rem; 28 | margin: 0 1rem; 29 | border: 0; 30 | cursor: pointer; 31 | opacity: 0.9; 32 | font-size: 14px; 33 | text-decoration: none; 34 | background-color: var(--color-border); 35 | color: var(--color-text); 36 | } 37 | .btn:hover { 38 | text-decoration: none; 39 | } 40 | .btn-primary { 41 | background-color: var(--color-primary); 42 | color: var(--color-background); 43 | } 44 | .btn:hover { 45 | opacity: 1; 46 | } 47 | @media screen and (max-width: 44rem) { 48 | h2 { 49 | text-align: center; 50 | } 51 | .cards { 52 | flex-direction: column; 53 | } 54 | .cards > div { 55 | width: 100vw; 56 | } 57 | .cards ul { 58 | text-align: center; 59 | padding-left: 0; 60 | list-style: none; 61 | } 62 | pre { 63 | margin-left: -1rem; 64 | margin-right: -1rem; 65 | } 66 | } 67 | ` 68 | 69 | const IndexPage = () => ( 70 | <> 71 |
72 |