Next.js与TypeScript从零起步学习笔记-1.项目创建与路由
鉴于flow烂尾了,为了维护,故转写TypeScript.
然而苦等vue3未果,于是转向学习React.
鄙人React刚起步,英语渣一名,文章大部分内容为翻译官网示例,并重写,可能会存在与之相违的情况.
参考官网:https://nextjs.org/learn/basics/getting-started
开发环境:
window10 x64
node v10.16.3
npm v6.13.4
1.项目创建
首先,我们需要在电脑的某个地方,创建一个新的空文件(鄙人将其命名'next_js_learn'),然后打开命令行工具(cmd或powershell),并切换至新建的文件夹目录下,敲入'npm init -y'初始化一个空项目,此时文件夹里会生成一个'package.json'文件
ps:鄙人ide全程用vs cdoe
npm init -y
1.png
2.添加React,Next依赖
接着,我们需要把React,Next依赖添加进去,在命令行工具敲入'npm install --save react react-dom next'
npm install --save react react-dom next
待命令执行完毕,这时候文件夹的结构应该会如下图左边所示,并且'package.json'会把React,Next依赖添加进来.
2.png
3.添加TypeScript开发环境依赖
此依赖是为了让我们在开发中使用TypeScript,在命令行工具接着敲入'npm install --save-dev typescript @types/react @types/node'以安装TypeScript.
npm install --save-dev typescript @types/react @types/node
这里我们会发现会多一个'tsconfig.json',
以上,我们基本已经搭建完Next.js和TypeScript的开发环境.
4.添加一个页面以访问
这里,我们需要创建一个页面,好让我们能在打开浏览器时候能看到些东西,一般我们默认的页面都以index命名(不知道是谁规定的?),我们需要在原来文件夹里创建一个名叫'pages'的文件夹用以存放我们要访问的页面,注意,这个名字一定要叫'pages',在Next.js有两个文件夹比较特殊,一个是'pages',另一个是'public',这两个文件夹的命名是固定不能变.
创建pages文件夹,并在文件夹下添加文件'index.tsx',如下图
image.png
然后我们可以在'index.tsx'上开始写上我们伟大的code了,
//index.tsx
const Home = () =>
);
export default About;
image.png
保存,直接打开浏览器,url加上路径'about',页面就出来了...
image.png
Hello world!My Name is Kun Ho
; export default Home; 5.启动服务器,并打开浏览器访问 在我们启动服务器之前,我们需要配置Next.js的命令,打开'package.json'文件,并且修改'scripts'如下: //package.json "scripts": { "dev": "next", "build": "next build", "start": "next start" } image.png 然后,在命令行工具敲入'npm run dev',此时打开浏览器,输入'http://localhost:3000/',就能看到我们的第一个页面了. npm run dev image.png image.png 6.Typscript的严格模式约束 但这个页面实在是有点太简单了,简直就是简单得我自己看了都想打人,于是我们在页面添加一些浏览器的信息,修改'index.tsx',如下: //index.tsx const Home = ({ userAgent }) =>Hello world! My Name is Kun Ho - user agent: {userAgent}
; Home.getInitialProps = async ({ req }) => { const userAgent = req ? req.headers['user-agent'] : navigator.userAgent; return { userAgent }; }; export default Home; 保存一下,我们就能看到浏览器打印信息的变化: image.png 但上述这代码,我们无法知道'userAgent'是什么类型,而且编译器又不像.NET,Java这样报错提示我们. 于是,我们可以修改一下配置,把'tsconfig.json'中的"strict"设置为true: image.png 保存一下之后,我们立马就能看到错误,而且编译也编译不过 image.png 为了能正常编译,我们需要告诉编译器,这些是什么类型,用TypeScript主要就是为了这个,这时候我们修改一下'index.tsx',告诉编译器,userAgent是string //index.tsx import { NextPage } from 'next'; const Home: NextPage<{ userAgent: string }> = ({ userAgent }) => (Hello world!My Name is Kun Ho - user agent: {userAgent}
); Home.getInitialProps = async ({ req }) => { const userAgent = req ? req.headers['user-agent'] || '' : navigator.userAgent; return { userAgent }; }; export default Home; 然后我们又能愉快访问页面了 7.Next.js路由 这个简单得我自己都不敢相信(vue有个兄弟版本,叫nuxt.js,异曲同工),我们仅仅需要做的就是'pages'文件夹,添加一个新页面,然后直接浏览器输入路径,就能直接访问了,啥都不用配置. 如:在'pages'添加一个名叫'about.tsx'的文件,在文件输入如下代码: //about.tsx const About = () => (This is the about page
发表评论 (审核通过后显示评论):