vue+.net入门级书签项目

1 篇文章 0 订阅
这是一个结合Vue3和.net6webApi的书签管理项目,支持Docker部署,包含Swagger接口文档,使用VueUse插件和EFCore数据库。项目提供书签筛选、自定义菜单和百度搜索功能,并修复了文件夹嵌套上传的错误。
摘要由CSDN通过智能技术生成

vu3+.net6 webApi 书签管理项目

本项目已接入ChatGpt

前言

Gitee项目地址:https://gitee.com/zyplj/book-marks
Github项目地址:https://github.com/ZyPLJ/BookMarks

作为一个bug程序员,保存了很多书签,直接用浏览器的每次都还要找,很麻烦,比如我自己的Google浏览器就200多个书签。所以做了个简单的项目去管理他们,同样该项目可以作为vue3、.net6 webApi入门项目,很容易上手。

部署项目需要用到.net6 SDK,百度去官网下载即可。

使用到的技术

  • 前端:vue3
  • 后端:.net core webApi,EF Core
  • 数据库:mysql
  • 插件:VueUse-useDark(切换主题),一为API(通过url获取网站图标),x-pageList(分页)

接口文档

如何用控制台运行项目 :点击跳转

.net6 webapi自带Swagger接口文档,运行项目后,根据运行的url地址和端口号可以访问Swagger,如图所示:
image

前端地址

书签前端地址

如何使用命令行打包项目

对于使用其他编辑器的人,可以选择命令行、终端打包项目
命令行打包

vue如何docker部署

Docker部署vue

项目截图

新增原神首页
可以跳转最近很火的AI chatgpt

新增百度搜索功能

image

新增筛选功能

image

新增自定义菜单功能

image

初始化书签界面

image

查看所有书签-可以模糊查询,分页。

image

image

书签置顶栏-只能置顶12个书签,刚好一页。

image

点击跳转
image

主题切换

image

项目部署

建议采用Docker部署,方便快捷,还可以部署在自己电脑的本地,非常的nice

Docker下载链接:https://docs.docker.com/

后端部署

首先确保有数据库,如果没有则根据图片去创建,或者采用codefirst模式,或者执行sql文件,都行,3选1。

codefirst模式就不做演示了,需要的话可以去看我的另一个博客项目中有写。
博客项目地址:https://gitee.com/zyplj/personalblog

数据库名 BookMark

数据库表结构:

image

bookmarks表:

主键不需要自增

image

bookTops表:

主键需自增

image

class表:

主键需自增

image

数据库创建完成后就要修改项目的连接字符串了,如果不采用codefirst模式生成数据库,则只需要修改 Program.cs中的connStr即可,注意后面5,7,40是mysql数据库的版本号!

Server=数据库地址;Port=端口;Database=BookMark; User=root;Password=123456;

Server=localhost;Port=3306;Database=BookMark; User=root;Password=123456;

image

开始部署

打包项目,Visual Studio 2022去官网下免费的,然后步骤在博客项目中可以看到。

如果没有Visual Studio 2022如何打包呢,可以使用命名行,进入项目BrowserBookmarks目录(bin文件的那一层),输入dotnet publish即可
然后在BrowserBookmarks\bin\Debug\net6.0\publish 中可以看到打包的项目,打包后目录如图所示:

image

如果没有Dockerfile文件,可以使用本项目中的参考的文件copy进去

进入书签项目部署的目录,打开控制台,输入docker build -t 名称 .,如图:可以和我一样的名称

image

然后等待镜像下载完成,继续输入docker run -d --restart=always -p 9031:9031 --name 名称 名称,–restart=always让容器开机自动启动。如图:

image

出现一串字符就代表docker部署成功了。

注意端口号本项目默认9031,如果需要更改则要更改后端Dockerfile文件和Program.cs文件,如图:

image

image

前端部署

首先需要修改项目目录http中index.ts中httApi的值,它取决于你的后端部署url

image

然后修改初始化书签组件中上传文件的url路径

image

可以去看一下我的博客园文章,步骤一样。

https://www.cnblogs.com/ZYPLJ/p/17103691.html

跨域问题

需要修改Program.cs中文件代码,根据自己去修改,如果是本地则只需要关注端口号,如图所示:

image

项目使用介绍

怎么使用呢,非常简单,只需要找到你使用的浏览器的Boolmarks文件目录即可,然后上传文件。

//这是我的Google浏览器目录
C:\Users\Lenovo\AppData\Local\Google\Chrome\User Data\Default\Bookmarks

image

更新日记

2023/3/5

新增书签筛选,一开始准备用vue前端filter去解决,但是分页只展示12个书签。所以还是用后端去解决了,新增Classid参数。修改了书签的排列顺序,最新添加的书签将放在最前面。

优化了linq查询,将join联表换成了导航属性查询。

2023/3/14

新增百度搜索,一开始用axios去请求接口,但是发现部署之后会出现跨域问题,然后百度了很久,采用了script的方式做请求,也不是很明白,不过能用。

2023/3/21

新增菜单功能,可以自定义添加图标链接,可跳转/删除。现版本推荐使用sql文件(在git后端项目中)创建数据库。

2023/3/31 bug修复

修复Bookmarks书签文件上传时,出现文件夹嵌套文件夹引起程序报错,如图所示

image

原因是因为一开始只实现了文件夹套书签的json格式解析,没有考虑到文件夹套文件夹套书签。现在使用了递归去判断文件夹下面是否还有文件夹。目前测试文件夹->文件夹->文件夹->书签,3层文件夹没有问题。

优化了性能,使用了yield关键字返回实体。

2023/4/9

修改前端自定义书签的UI

将前端修改成了Vue3 + Vite项目
image

遇到问题

image

非常好的问题,以下是Vue .Net Core SignalR详细配置的步骤: 1. 在Vue项目中安装signalr客户端npm包 ``` npm install @aspnet/signalr ``` 2. 在Vue项目中创建一个名为`SignalR.js`的文件,并编写以下内容: ```javascript import * as signalR from "@aspnet/signalr"; export default { install(Vue, options) { Vue.prototype.$signalR = new signalR.HubConnectionBuilder() .withUrl(options.url) .configureLogging(signalR.LogLevel.Information) .build(); Vue.prototype.$signalR.start(); }, }; ``` 3. 在Vue项目中创建一个名为`main.js`的文件,并编写以下内容: ```javascript import Vue from "vue"; import App from "./App.vue"; import SignalR from "./SignalR"; Vue.use(SignalR, { url: "http://localhost:5000/chatHub", // SignalR后端地址 }); new Vue({ render: (h) => h(App), }).$mount("#app"); ``` 4. 在.Net Core项目中安装`Microsoft.AspNetCore.SignalR`包 5. 在`Startup.cs`中添加以下代码: ```csharp using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace SignalRServer { public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.AddSignalR(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); endpoints.MapHub<ChatHub>("/chatHub"); }); } } } ``` 6. 在.Net Core项目中创建一个名为`ChatHub.cs`的文件,并编写以下内容: ```csharp using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; namespace SignalRServer { public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } } } ``` 7. 在Vue项目中使用以下代码与SignalR服务器通信: ```javascript // 发送消息 this.$signalR.invoke("SendMessage", user, message); // 接收消息 this.$signalR.on("ReceiveMessage", (user, message) => { console.log(user + ":" + message); }); ``` 希望这个解答可以帮助你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值