https://github.com/kevinnan-teen/website-collection
网站收藏。浏览器书签收藏的网站内容太杂,本项目旨在实现一个网站收藏工具,用于收集经常浏览的技术网站,同时保存网站的子页面。前端使用layui框架,后端使用koa2框架。
https://github.com/kevinnan-teen/website-collection
koa2 layui nodejs
Last synced: about 1 month ago
JSON representation
网站收藏。浏览器书签收藏的网站内容太杂,本项目旨在实现一个网站收藏工具,用于收集经常浏览的技术网站,同时保存网站的子页面。前端使用layui框架,后端使用koa2框架。
- Host: GitHub
- URL: https://github.com/kevinnan-teen/website-collection
- Owner: Kevinnan-teen
- Created: 2022-02-19T07:49:50.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-03-01T14:45:25.000Z (over 3 years ago)
- Last Synced: 2025-06-22T17:08:10.935Z (5 months ago)
- Topics: koa2, layui, nodejs
- Language: EJS
- Homepage: https://wsc.nachr.top/
- Size: 429 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Website Collection
## Introduction
本项目是基于`nodejs`的网页收藏工具,前端使用`layui`框架,后端使用`koa2`框架,前端通过`ajax`向后端发起数据请求(GET/POST)。
## Usage
### 调试代码(建议本地安装nodejs环境)
- 在本地安装`npm`(8.1.2),配置`npm`国内下载源,使用`npm`安装`node`(16.13.2),进入项目根目录,执行`npm install`命令安装`nodejs`依赖包;
- 进入`models`目录:
- 创建数据库和数据表(网站信息、子页面信息、网站分类信息、用户信息);
```
node create_table.js
```
- 创建用户名和密码,注意将username和password替换为自己的用户名和密码;
```
node create_user_info.js username password
```
- 进入项目根目录,运行程序;
```
node app.js
```
- 在浏览器端用`http://ip:3000`访问项目主页;
### 部署运行(建议使用docker)
- 使用已经配置好的`Dockerfile`创建`image`镜像文件:
```
docker image build -t website-collection:1.0.0 .
```
- 用刚刚创建的`image`生成容器,并让容器在后台运行
```
docker container run -p 8000:3000 -dt website-collection:1.0.0
```
- 查看正在运行的容器,复制容器ID
```
docker container ls
```
- 进入在后台运行的容器。
```
docker container exec -it [containerID] /bin/bash
```
- 进入`models`目录:
- 创建数据库和数据表(网站信息、子页面信息、网站分类信息、用户信息);
```
node create_table.js
```
- 创建用户名和密码,注意将username和password替换为自己的用户名和密码;
```
node create_user_info.js username password
```
- 进入项目根目录,让程序在后台运行;
```
node app.js &
```
- 在浏览器端用`http://ip:3000`访问项目主页;
- 后续集成,为了方便更新在docker中运行的项目代码,我们可使用git来持续更新
- 将本地的代码变动提交到GitHub上;
- web服务器端把执行`git pull`命令拉取最新代码;
- 在项目跟目录下执行`docker cp`命令,更新容器中的目录/文件
```
docker container cp . [container/ID]:[dir]
```
## code
后端使用Koa2搭建,用到以下Koa2中间件模块:
- koa-bodyparser:解析GET/POST请求
- koa-static:支持静态资源访问
- koa-views:渲染页面
- ejs:提供koa-views的ejs渲染支持
- koa-router:页面/API路由
- koa-session:支持cookie/session
- koa-passport:支持页面鉴权访问
- passport-local:使用用户名和密码来进行验证登录
nodejs使用其他模块:
- koa
- crypto:密码加密
- sqlite3:提供sqlite3数据库API接口
前端使用Layui搭建,用到以下模块:
- 导航 nav
- 表单 form
- 数据表格 table
- 时间线 timeline
项目目录结构:
- app.js:代码入口
- models:封装数据库CURD操作
- routers:页面和API路由
- controllers:控制器存放目录,接收路由请求,处理逻辑
- views:视图页面文件(ejs、html)
- public:静态资源(css、js、img)
- utils
- test:测试代码
## Bug & Todo
- 表 website_info(website_title, website_url, website_class_1, website_class_2, website_detail) 和表 website_class_info(website_class_child, website_class_abbrativation, website_class_parent, website_class_detail) 设计错误,修改website_class_info的class字段不会影响website_info的class数据,
这导致对网站分类的修改删除对网站数据不能产生影响,因为分类数据在website_info中是早已写好的