Nuxt3哔哩哔哩移动端项目实战

   日期:2024-12-26    作者:yfcailiao 移动:http://ljhr2012.riyuangf.com/mobile/quote/42177.html

Nuxt 框架提供了一种基于 Node.js 的服务端渲染方案 SSR(Server Side Rendering,可以让 Vue 应用在服务器端进行渲染,从而提高页面的加载速度和 SEO。

Nuxt3哔哩哔哩移动端项目实战

在线预览

https://bilibili.megasu.top/

直播收获

完成带数据交互的 哔哩哔哩移动端 项目,包括以下知识点的实战应用。

  • SEO 优化
  • 基于文件的路由系统
  • 自动导入
  • Nuxt DevTools 调试工具
  • 自定义组件
  • @vant/nuxt 组件库
  • 移动端 vw 适配
  • 接口服务器
  • 数据获取
  • 分页加载
  • 动态路由传参
  • 项目打包上线
  • 电脑系统 - Windows 10
  • 开发工具 - VS Code (需安装 Volar 扩展插件)
  • Node.js - v16.15.0
  • Npm - 9.4.0
  • Nuxt - 3.6.5

Nuxt 官网 https://nuxt.com/

初始化命令

 

其中 换成自己的项目名称。

下载问题

由于国内访问受限,通过命令行下载可能会失败。

解决方案参考修改 host 文件

Windows 系统

 

映射关系为访问 映射到 IP 地址 。

Mac 系统

参考链接

  • Windows 修改 hosts
  • Mac 修改 hosts
  • 手动下载地址

运行项目

  1. 进入项目目录,并安装项目依赖 。
  2. 启动项目,。
  3. ✨ 浏览器访问 http://localhost:3000

服务端渲染

SPA 和 SSR 是什么

  • SPA(Single Page Application)单页面应用,在客户端通过 JS 动态地构建页面。
  • SSR(Server-Side Rendering)服务器端渲染,在服务器端生成 HTML 页面并发送给客户端。

有什么不同

  • SPA 的特点是页面切换流畅,动态渲染变化的部分用户体验好,但是对搜索引擎的支持不够友好。
  • SSR 的特点是对搜索引擎友好,可以提高页面首次加载速度SEO,但是页面切换可能不够流畅,因为每次都是请求一个完整的 HTML 页面。

Nuxt 框架优势

  • Nuxt 采用了混合的架构模式,同时支持 SSR 和 SPA。
  • SSR 服务端渲染: 首次访问页面 ,Nuxt.js 在服务器端执行 Vue 组件的渲染过程,并生成初始 HTML。
  • SPA 客户端激活:一旦初始 HTML 被发送到浏览器,Vue.js 会接管页面,后续的页面切换则使用 SPA 的方式进行。
  • Nuxt 框架优势兼顾了 SSR 和 SPA 的优点

适用场景

企业网站、商品展示 等 C 端网站,对 SEO 搜索更友好,且页面切换流畅,用户体验更好。

开启或关闭服务端渲染

Nuxt 默认开启 SSR 服务端渲染,推荐开启,从而兼顾了 SSR 和 SPA 的优点,也利于 SEO 搜索引擎优化。

 
 

目录结构

我们先来认识 Nuxt3 项目的目录结构。

 

案例练习

nuxt 有一些约定的目录,有特殊功能,如 pages 目录的 vue 文件会自动注册路由。

 

Nuxt.js 自带基于文件的路由系统,无需安装 vue-router,无需额外配置。

参考目录

 

参考代码

 
  • 页面路由 相当于
  • 页面跳转 相当于

项目资料

  • 在线体验
  • 参考代码

通过设置网页 title 和 description 等 SEO 优化信息,由服务端渲染,可提高网页在搜索引擎结果页面中的排名和可见性 。

 

参考链接

  • SEO 和 Meta

按照和配置

  • 安装 nuxt 版 vant-ui
 
  • 添加配置
 
  • 使用
 

PS: 在 Nuxt 项目中,vant 组件会自动按需导入(需重启服务)。

修改主题色

在 app.vue 的样式全局生效。

 

参考链接

  • vant-nuxt
  • vant 样式变量

安装依赖

 

添加配置

 

参考文档

  • nuxt 配置 - postcss
  • vant 进阶用法 - postcss

素材和样式准备

拷贝素材中的 目录项目中,包含项目所需的图片、基础样式、字体图标。

下载安装 sass

 

项目中导入基础样式和字体图标。

 

静态结构

 

组件封装

基于首页的静态结构,抽离到 目录。

  • 头部组件

  • 视频组件

抽离到 目录的组件可自动导入,在首页、视频详情页中直接使用即可,页面也变得更简洁。

 

参考链接

  • components 目录

Nuxt 支持在 目录写服务器接口,用于数据请求。

为了让大家更好地了解 Nuxt 接口服务器,我们仅提供了静态数据,但这个 目录可以用于对接数据库等更复杂的操作。这样,您可以通过编写自定义的服务器接口来满足项目的需求。

频道接口

静态数据

 

频道接口

Nuxt 基于文件生成接口,在 目录下的 ,会自动生成接口 ,请求方式为 。

 

可通过 http://localhost:3000/api/channel 访问以上频道接口, 文件名的后缀可以是 , , , 等,以匹配请求的 HTTP 方法 。

参考资料

  • server 目录

渲染频道列表

  • 通过 useFetch 发送请求

获取频道列表数据

 

渲染数据

 

视频列表接口

静态数据

 

视频列表接口

 

动态渲染视频

获取视频列表数据

 

v-for 循环展示

 

参考链接

  • utils 目录

分页组件

通过 vant-list 列表 实现滚动触底,加载分页数据。

 

滚动触底,触发 onLoad 事件,加载完成,处理 finished 结束。

 

类型处理

指定正确的 TypeScript 类型可以让项目更安全,在 VS Code 中可通过 插件,快速基于 JSON 生成 TS 类型声明文件。

类型声明文件

 

类型升级

 
 

跳转路由传参

修改面经详情的目录结构

 

点击跳转

 

页面中获取参数

 

视频详情接口

 

代码实现

 
 

没有做页面缓存的话,切换页面时会重新发送请求,用户体验不友好,开启 keepalive 优化体验。

 
  • NuxtPage 开启 keepalive
  • keepalive issues

nuxt 脚手架只是开发过程中,协助开发的工具,当真正开发完了 => 脚手架不参与上线

参与上线的是 => 打包后的源代码

打包

  • 语法解析,ts 解析成 js,scss 解析成 css 等
  • 代码分割,代码压缩,tree-shaking (树摇

打包后,可以生成,浏览器能够直接运行的网页 => 就是需要上线的源码

打包命令

nuxt 脚手架工具已经提供了打包命令,直接使用即可。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号