本篇我们将通过一个完整的个人博客案例来驱动学习 Nuxt 核心知识,尽量做到理论实践相结合,这样大家能够更牢固的掌握所学知识。

# 内容概要

本节作为起步,主要涉及环境准备和项目创建,让大家对 Nuxt 项目有个整体认知。具体内容如下:

  • 开发环境和工具准备;
  • 创建并完成第一个 Nuxt.js 应用;
  • 如何打包和预览项目;
  • 如何解决创建项目时可能出现的 443 错误。

# 环境准备

我们需要安装node作为nuxt的运行时,开发工具官方推荐使用VS Code,语法支持需要安装Volar插件。

  • node.js lts;
  • VS Code;
  • Volar。

# 安装使用

# 创建项目

打开命令行终端,输入下面命令创建一个Nuxt3项目:

csharp
复制代码npx nuxi init nuxt3-app

踩坑指南:如果因为众所周知的原因出现 443 错误,请参考本文最后一部分的操作指南。

# 安装依赖

可以使用喜欢的包管理工具安装和管理依赖,npm/yarn/pnpm均可:

复制代码yarn install

# 启动项目

使用 yarn dev以开发模式启动 nuxt:

复制代码yarn dev

# 预览项目

✨浏览器会自动打开:http://localhost:3000

# 最小应用

在 Nuxt 中默认情况下有一个app.vue,如果我们只准备开发一个简单的单页应用或者就是一个落地页时,那么这样就够用了,此时Nuxt不会引入vue-router作为依赖。

但是这种情况很少见,我们通常需要创建不少页面再配置路由,并且在它们之间来回跳转。在 Nuxt 中要创建一个路由页面非常简单,你只需要创建一个pages目录,并创建一个index.vue这样的视图组件就好了,Nuxt会自动引入vue-router依赖,同时根据你创建的文件名称自动帮你配置一个路由。

下面我们来体验一下这个特性,我们创建pages/index.vue,并添加如下内容:

xml
复制代码<template>
  <div>Index Page</div>
</template>

想要生效还要对 app.vue 稍作修改:

  • 移除欢迎页面<NuxtWelcome />;
  • 添加一个路由出口<NuxtPage />:
xml
复制代码<template>
  <div>
    <!-- 移除欢迎页面 -->
    <!-- <NuxtWelcome /> -->

    <!-- 路由出口 -->
    <NuxtPage></NuxtPage>
  </div>
</template>

下面我们可以输入 http://localhost:3000 (opens new window) 看一下效果:

img

那如果我有另一个页面detail.vue想要跳转过去应该怎么做呢?

可以像下面这样,在index.vue中添加一个NuxtLink:

xml
复制代码<template>
  <!-- ... -->
  <!--跳转链接-->
  <NuxtLink to="/detail">Detail Page</NuxtLink>
</template>

现在可以自由的跳转了!

img

# 打包和预览

未来项目开发完毕,我需要打包并给用户提供预览服务。打开package.json,有如下 5 个命令:

  • build:打包创建项目;
  • dev:启动开发服务器;
  • generate:生成静态网站;
  • preview:启动预览服务;
  • postinstall:生成 .nuxt 目录。

# 项目打包

打开命令行终端,输入build命令打包项目:

复制代码yarn build

.output 目录即为打包结果。

# 预览服务

打包结果想要被用户浏览,需要启动预览服务,执行preview命令即可:

复制代码yarn preview

可以输入终端提示的地址测试一下结果,例如我这里是:http://localhost:3000。 (opens new window)

注意:这里是带有端口号的,未来可以在服务器配置nginx反向代理到该服务,用户就可以更方便地访问我们的站点。

# 项目创建错误踩坑指南

由于众所周知的原因,有些小伙伴可能在第一步创建项目的时候就遇到如下错误:

vbnet
复制代码➜  nuxt-in-action npx nuxi init nuxt3-app
Nuxi 3.0.0
 ERROR  Failed to download template from registry: request to
 https://raw.githubusercontent.com/nuxt/starter/templates/templates/v3.json failed,
 reason: connect ECONNREFUSED 0.0.0.0:443

这是因为nuxi在创建项目时需要到raw.githubusercontent.com拉取项目模版,由于域名解析失败导致创建流程失败。解决方案也很简单,我们可以获取这个网址的ip地址,并在/etc/hosts中配置好,这样就能够顺利拉取项目模版,并成功创建项目。

我们访问 ipaddress.com (opens new window),找到下面 IPv4 Addresses,例如:185.199.108.133

img

然后添加该 ip 地址到 hosts,mac下 hosts 配置路径:/etc/hosts。

bash
复制代码sudo vi /etc/hosts

新增一行,185.199.108.133 raw.githubusercontent.com。

vim操作步骤:

  • 输入i进入 insert 模式,添加完成;
  • 输入esc退出 insert 模式;
  • 最后输入:wq保存并退出。

添加完 host 后,再次执行npx nuxi init nuxt-app,创建成功!

其他情况:

  • 如果你是 windows 电脑,可以自行搜索:windows 如何修改 hosts 文件;
  • 如果不想尝试或还是失败,可以直接克隆我们的范例项目即可。
阅读全文