构建一个综合视频社区网站的设计与实现

引言

在当今数字娱乐时代,视频内容平台已经成为人们日常生活中不可或缺的一部分。本文将介绍如何设计和实现一个综合性的视频社区网站,包含首页内容分类、个人主页和视频互动等核心功能模块。

一、网站整体架构

1.1 前端技术栈

  • Javascript、Node.js

  • SCSS 样式预处理器

1.2 后端技术栈

  • Node.js + Express 服务端框架

  • MySQL

二、核心功能模块实现

2.1 吸顶导航

// 吸顶导航
const nav = document.querySelector('.nav')
document.addEventListener('scroll', function () {
    const n = document.documentElement.scrollTop
    nav.style.top = n > 90 ? 0 : '-50px'
})

2.2 输入框文本提示轮播

 // 搜索栏内容变换
    const sousuo = document.querySelector('#sousuo')
    // 搜索关键词轮播数组
    let arr = ['跟我走吧', '少年白马醉春风', '遇见你的那天', '闪亮星电音', '寻护者', '抓娃娃']

    // 设置一个定时器,每5秒更换一下placeholder
    let i = 0
    function changeValue() {
        if (i === arr.length) {
            i = 0
        } else {
            sousuo.placeholder = arr[i]
        }
        i++
    }
    // 开启定时器
    setInterval(changeValue, 5000)

2.3 面包屑导航

// 封装面包屑设置函数
function updateBreadcrumb(text) {
    const breadcrumbContainer = document.querySelector('.breadcrumb');
    // 面包屑结构:首页 > 分类 > 当前页
    breadcrumbContainer.innerHTML = `
        <a href="/">首页</a> > 
        <a href="/category">分类</a> > 
        <span>${text}</span>
    `;
    
    // 更新搜索关键词
    currentKeyword = text;
    performSearch(currentKeyword);
}

// 在导航点击事件中调用
normalNavLinks.forEach(function(link) {
    link.addEventListener("click", function() {
        updateBreadcrumb(this.textContent);
    });
});

2.4 视频播放与互动

const danmu_btn = document.querySelector('#danmu_btn');
let flag = true;
danmu_btn.addEventListener('click', function () {
    if (flag) {
        danmu_btn.style.background = 'url(../../icon/tanmuclose.png) no-repeat center';
        danmu_btn.style.backgroundSize = 'cover';
        danmakuContainer.style.opacity = '0';
        flag = false;
    } else {
        danmu_btn.style.background = 'url(../../icon/tanmuopen.png) no-repeat center';
        danmu_btn.style.backgroundSize = 'cover';
        danmakuContainer.style.opacity = '1';
        flag = true;
    }
});

三、关键技术点

3.1 性能优化方案

  1. 图片懒加载:图片滚动到可视区再加载

  2. 数据分页加载:滚动到底部自动加载更多

  3. 视频预加载:提前加载下一段视频内容

四、项目部署

1.项目文件结构 (务必按照这个文件结构放置)

2.然后用VScode或者其他编辑器打开 (目录结构保持一致)

3.然后打开终端

4.输入命令 安装 express框架和一些库
npm i express mysql body-parser cors

但是你发现报错了

  • 原因是你并未安装  npm  包管理工具。如何安装呢?你可以去csdn上搜索node.js的安装教程,安装node.js的同时也会安装npm包管理工具。
  • node.js和npm 安装过了之后,再重新执行命令即可。

5.库安装成功、执行以下命令启动服务
node server.js

但是你发现报错了

  • 原因是你并未设置对应的数据库。如何解决呢? 你可以去csdn上搜索 mysql的安装教程,同时可以安装一个免费的  mysql  可视化工具  mysql workBench。

假设这时你已经安装好了mysql和mysql可视化工具

  • 创建videoweb数据库、创建alldate数据表
 -- 创建数据库
 create database videoweb;
 
 -- 使用数据库
 use videoweb;
 
 -- 创建数据表
 create table alldate(
	id int primary key auto_increment,
 	crumbs varchar(20) not null,
    url varchar(255) not null,
    src varchar(255) not null,
	uname varchar(255) not null
 );

注意:MySQL连接池中的password ,需要修改成自己的mysql密码,其他按照教程来就行。

这些都弄好之后、执行   node server.js   启动 server.js。

6.启动之后、你打开index.html发现、文件数据都是undefined

这是为什么呢?

  • 因为我将index.html所在的 文件夹设置为了静态资源、直接打开index.html肯定是不对的。

我们需要如何解决呢?

  • 我们要找自己的本地计算机的ipv4、很多小伙伴问怎么找,直接  菜单 + R 输入cmd ,打开命令终端,输入ipconfig ,找到 无线局域网适配器 WLAN 下的 ipv4 ,将这个ip复制。

打开浏览器,粘贴到 地址栏 后面要加上端口 3000, 例如你的ip 为 192.168.64.20 ,那么完整的地址就是  192.168.64.20:3000。

为啥是3000 而不是其他呢?

  • 因为我们服务监听的是3000端口

7.完成上述步骤你会发现,确实能访问到,而且和你在同一局域网的伙伴也能访问到了。

五、项目总结

  1. 多分类内容展示与导航

  2. 个性化用户主页

  3. 视频播放与实时互动

  4. 社交功能(评论、弹幕等)

六、项目链接

通过网盘分享的文件:陌染视频网站.zip
链接:https://pan.baidu.com/s/156GbqzUtSDf8I1ltamtGxg 提取码: aaaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值