只需cv,实战中学习next | next项目跑起来

avatar
前端开发 @微医

王志远 微医前端技术部

前言

前段时间在公司接手了个数字化运营平台项目,技术栈是 next,之前没接触过,于是借助这个五一临阵磨枪了下,这就是我们【保姆级指南:只需 cv,实战中学习 next】专栏的背景了。

本文也是整个系列的开端,废话几句,以后一切直奔主题(并不会,本菜是话痨)

我们在学习中会遇到很多大神,也会很羡慕 TA 们的牛,于是倾拜之下慕名求教学习之路,大师笑而不语,发来三个字:看文档。

img

我是真的明白文档的靠谱,我也是真的觉得枯燥,看着一行行的 API 在眼前略过,别人我不知道,至少我的心情是复杂的。

在心里默默告诉自己:“大神是不会有错的,看文档看文档”,一遍又一遍,从不会觉得厌倦,但事实上,反感的情绪一层层上来。

之前在学习极客时间《如何成为学习高手》专栏里有个理念,一下子击中过我:“意志力是资源,每一次抵抗都会消耗它”,醍醐灌顶,这就是为什么每次锻炼完都想吃一堆好吃的犒劳自己的原因?

不管怎么说,在看文档的道路上,我只学习到了自己是个菜狗的巨大领悟。文档不可或缺,但因人而异,阶段不同,大佬拿来查漏补缺自然轻车熟入;但本来就在放弃和自我鼓励的分界线上挣扎的新手小伙伴们,看文档是个很艰难的路,至少我承认了我是菜狗。

那怎么办呢?总不能不学了吧(那敢情好!),分享个学习体验:实战中学习。这是个很多人知道,很少人做到的事情,因为实操往往会踩坑,一踩坑就容易放弃。这也是本专栏的出发点。

本专栏文章特点

  • 学以致用:先看原理,然后只需 cv,你就能完成相关知识点的实战
  • 版本锁定:依赖包的版本锁定,避免版本更新导致的问题(不用 docker 的原因是,学习项目呀!你得自己实操)
  • 验证标准:均有最终效果 gif,看动图验证是否成功
  • 成就感保证:按文章一步步走,一定能有成效(这里安利下本人的另一篇文章,用过都说好:保姆级指南:jekins+docker 构建部署 react 项目实战

最重要的是,知识点拆分推动实战!我们不是为了写个 demo 项目,每个实现都有对应的知识点,整体流程本菜也亲身重新跑着验证过,亲测有效!

至此,我尽力了,快快一起学起来吧!

系列文章目录

  1. 最小单元跑起来 next 项目.md
  2. 路由守卫 -- 实现全局 loading.md
  3. 路由守卫 -- 受保护的路由.md
  4. next 支持 css.md
  5. 集成 antd.md
  6. 集成路由.md
  7. 服务端渲染钩子 -- getInitialProps.md
  8. koa 集成 next 作为中间件.md
  9. 集成后端服务.md
  10. 动态组件-实现用户信息组件.md
  11. 集成 redux -- 实现登陆逻辑.md
  12. 发布上线 -- pm2 发布 next 应用

本次项目依赖版本如下

  • typescript@3.7.4
  • react@16.12.0
  • @types/react@16.9.17
  • react-dom@16.12.0
  • @types/node@13.1.1
  • next@9.1.6
  • axios@0.19.0

实现目标

访问路由显示Hello Next

实现步骤

初始化项目

找到路径,创建项目目录,进入项目目录后初始化

npm init -y

安装依赖

yarn add --dev typescript@3.7.4 react@16.12.0 @types/react@16.9.17 react-dom@16.12.0 @types/node@13.1.1 next@9.1.6 axios@0.19.0

新建路由

next 采用的是约定大于配置的思想,项目根目录下pages的 js(或 tsx)文件都会被映射路由,所以我们只需要创建一个文件就完成了最基础路由配置,我们用下面一条命令完成如下动作

  1. 创建pages目录
  2. 创建pages目录下的index.tsx文件并写入Hello Next内容
mkdir pages && cd pages && cat > index.tsx <<eof
export default function () {
     return (
        <div>Hello Next</div>
    )
}
eof

启动项目

我们用 next 启动项目,先配置下package.json文件

"scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },

再执行下命令即可,默认 3000 端口

npm run dev

**优化:**这里我们可以做个小优化,实现快捷键一键启动,放在文末分享

测试效果

可以浏览器直接访问http://localhost:3000/,出现如下内容代表成功

可以执行 curl 模拟请求查看返回确定是否启动成功;

curl http://localhost:3000/ | grep 'Hello Next'

优化

实现快捷键一键启动项目

配置项目任务

vscode 存在配置文件.vscode,其下的tasks.json可以配置项目任务,执行如下命令即可将npm run dev绑定在任务test上,按如下步骤实现即可,具体可参考vscode 项目配置

mkdir .vscode && cd .vscode && cat > tasks.json <<eof
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "runNode",
            "type": "npm",
            "script": "dev",
            "group": {
                "kind": "test",
                "isDefault": true
            }
        }
    ]
}
eof
配置快捷键绑定

此时再配置下快捷键绑定,将 test 任务放在一个快捷键上,按如下步骤实现即可,具体可参考自定义快捷键

command+shift+p启动命令面板,输入keyboard选择Open Keyboard Shortcuts进入快捷键配置页

在筛选框中输入run test Task,双击后依次按下command+t(或者其他快捷键),回车,即完成了绑定

尾声

我有个leader对我说过一句话,记忆犹新,他说:追求到最后,会发现最终要的是共赢;希望这篇文章对你们能有帮助,也希望自己:笔耕不止,坚持成长。

thread_214569626974086_20201111224348_s_239569_o_w_178_h_154_73208