【Blog.Core开源】快速预览Admin界面效果

3be4dd74743a3ee165750527be1693ee.png

( 半盏屠苏犹未举,灯前小草写桃符 )

书接上文《【Blog.Core开源】开发插件,给Swagger加权》,在上篇文章中,我们给项目的接口文档增加了一个控制界面,可以输入用户名密码,这样也算是简单的一个加密控制了,当然也可以使用Nginx的加权功能,具体写法大家搜索下就知道了,这里按下不表。

本文故事背景

花开两朵,各表一枝。今天忙中偷闲,看了看Github上的Issue,都已经四个了,该解决解决了,找了一个单元测试的Bug,简单解决了一下。本着负责的态度,还是要好好测试一下,打开前端项目,npm run serve启动下服务,然后配置下后端接口,点点,没问题,关掉项目,开始提交等等。

突然想到,我可以直接把Vue的项目发布好后,放到Blog.Core后端的wwwroot里,作为静态资源文件来访问,这样每次后端修改完成以后,就不用再打开前端了,比如这样同一个站点:

Blog.Core的Swagger接口文档:
http://localhost:9291/Blog.Admin的Vue界面展示效果:
http://localhost:9291/ui/

这样就很方便了,说来就来,简单修改下,便满足了,直接上代码。

01

PART

打包Vue前端

作为经常开发Vue的小伙伴肯定很熟悉,前后端比较有关联的地方,无非就那么几个:

1、api的base接口;
// src\api\api.js2、打包的相对路径;
// src\router\index.js

因为是前后端一个域名,所以直接用把base接口设置为后端接口绝对路径就行:

77dea7e304deadb182f250e7d1069e65.png

然后给前端增加一个/ui/的路由前缀,所以输出也要改一下:

482d9785d4901189fab44ce7f9804e84.png

然后除了那两个修改以外,还有个需要修改的,就是路由模式,经过测试在netcore里静态资源访问Vue项目,如果Vue用history路由的方式话,刷新页面会出现404的问题,毕竟不是nginx,不能修改try_file,不过我再研究下,有更新会发公众号补充。

所以这里先把路由模式改为hash模式:

1cfad1ce292e37a1986501227477c9b1.png

然后npm run build进行打包,万事俱备,再配置后端。

02

PART

修改后端,读取静态文件

后端就相对比较简单些,因为之前该配置的都已经配置好了,只需要将上文打包后文件,拷贝到wwwroot静态文件夹里就行,有一个简单修改的就是配置下默认的index.html作为首页:

e7feee19306a8cb1662a9fe6dd011ffa.png

// 使用静态文件DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();defaultFilesOptions.DefaultFileNames.Clear();defaultFilesOptions.DefaultFileNames.Add("index.html");app.UseDefaultFiles(defaultFilesOptions);app.UseStaticFiles();

记得要做一下gitignore哟,毕竟文件挺多的。

直接启动项目,浏览/ui/文件夹,就会看到效果了,动图展示下:

b3510354270a78fccd26599ba246ae79.gif

做到这里,其实我们的需求已经做完了,以后在不改变接口的情况下,可以直接预览效果,看看接口是否可以。但是却不是完美的,这里随便说一个问题,大家可以自己暂停思考下,看看和我想的是否一致。

这样把前端打包好的dist文件夹放到后端项目,会不会文件又多占地方,又不好看?

如何改进一下呢?

03

PART

其他静态文件优化

如果你之前看过我讲过微软的那个微服务架构eShopOnContainer的话,应该知道,它里边就有一个处理的方案,就是zip压缩包。

所以我也有压缩包的形式,放到wwwroot里,然后在项目启动的时候,把压缩包解压到wwwroot的ui文件夹即可。

/// <summary>/// 将前端UI压缩文件进行解压/// </summary>public static class UiFilesZipSetup{public static void AddUiFilesZipSetup(this IServiceCollection services, IWebHostEnvironment _env){if (services == null) throw new ArgumentNullException(nameof(services));string zipUiItemFiles = Path.Combine(_env.ContentRootPath, "wwwroot", "ui.zip");ZipFile.ExtractToDirectory(zipUiItemFiles, Path.Combine(_env.ContentRootPath, "wwwroot"));}}

然后在startup的服务配置中,引用一下就好,后端最终修改是这么多:

bc47733cddd93155587d6085aa9a72b0.png

好啦,今天的优化就这么多了,开发还是要尽量做到力所能及:

比如单元测试,比如静态文件修改,比如zip压缩。

希望能给小伙伴一些灵感吧!

最后祝大家马上到来的除夕愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视图添加字段_Odoo开发教程2-为模型添加字段

开启开发者模式后&#xff0c;我们可通过菜单 Settings > Technical > Database Structure > Models来查看模型的定义。这时搜索 res.partner(未安装其它应用的情况下第一个即是)&#xff0c;对应的模型描述为 Contact。点击打开表单视图&#xff0c;这时就可以看到 p…

改变listview中item选中时文字的颜色

摘要 当listview的某个item选中时&#xff0c;默认有个选中的高亮显示&#xff0c;如果你要自定义选中时的高亮显示效果&#xff0c;可以在listview中设置属性 android:listSelector"drawable/item_selector" 其中 item_selector 是在drawable目录下定义的一个xml文件…

安卓学习笔记2

1.IntentFilter Intent详解 http://www.cnblogs.com/engine1984/p/4146621.html <activity android:name".SecondActivity"><intent-filter><action android:name"hello1" /><action android:name"hello2" /><cate…

大公司视频转码

1. 其实基本思路很简单的切片 --》 转码 --》合片 就这个三部曲 2. 存储就是NAS或者hadoop之类的3. ffmpeg对不少切片兼容性有问题 4. 雪影(41044375) 2014-1-13 22:19:17帮上个东家挣了几百万~搞完了哦100台机器 分布式转码 5.怎么连续播放 不黑屏呢&#xff1f;6.雪影(410443…

linux之通过htop操作进程使用总结

1、htop介绍 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,htop比top更加人性化,有具体界面可以操作,读者可以先使用top看下效果,然后再安装htop. 2、安装htop 输入下面命令 sudo apt-get install htop 3、效…

6大奖项!首届 .NET 黑客松大赛圆满收官!

.NET Conf China 2021 是面向开发人员的社区峰会&#xff0c;基于 .NET Conf 2021&#xff0c;庆祝 .NET 6 的发布和回顾过去一年来 .NET 在中国的发展。峰会由来自北京、上海、苏州、深圳、武汉、广州、青岛、烟台、杭州等各地区的 .NET 技术社区共同发起举办&#xff0c;由微…

看完这套书才发现,以前的四大名著都白看了!

▲ 点击查看四大名著是我国最经典的古典文学作品&#xff0c;代表着传统文化在小说创作方面的最高成就。同时&#xff0c;也是必学书、必读书、必考书。从小了说&#xff0c;在语文学习上&#xff0c;全国统一的语文教材里&#xff0c;五年级下册已出现了四大名著的章节。作为整…

python使用spark sql查询impala_如何使用JDBC将Impala表直接加载到Spark?

我正在尝试使用Python编写一个spark作业,它将打开与Impala的jdbc连接,并将Impala直接从Impala加载到Dataframe中.这个问题非常接近,但在scala中&#xff1a;Calling JDBC to impala/hive from within a spark job and creating a table我该怎么做呢&#xff1f;其他数据源有很多…

在Windows Live Writer中插入C# code

平时都是用Windows Live Writer写博客&#xff0c;发布博客。遇到需要插入代码都是先在notepad中写好&#xff0c;或者是拷贝到notepad&#xff0c;再从notepad中拷到Windows Live Writer&#xff0c;比较麻烦。在博客中使用插件Code Snippet就能很好解决这个问题。 下载地址&a…

linux之vifm和ranger操作文件管理器使用总结

1、介绍vifm和ranger vifm和ranger都是有图形的文件管理操作,有点类是windows上面的“我的电脑” 2、安装vifm和ranger 在终端输入下面命令 sudo apt-get install vifmsudo apt-ger install ranger 3、常规使用vifm 安装成功之后,我们在控制台输入vifm命令,然后显示下面…

RHCS(概念篇)

一、 什么是RHCS RHCS是Red Hat Cluster Suite的缩写&#xff0c;也就是红帽子集群套件&#xff0c;RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合&#xff0c;它将集群系统中三大集群架构融合一体&#xff0c;可以给web应用、数据库应用…

.NET 运行时设置

.NET 运行时设置.NET 5&#xff08;包括 .NET Core 版本&#xff09;支持使用配置文件和环境变量在运行时配置 .NET 应用程序的行为。如果出现以下情况&#xff0c;则运行时配置是一个不错的选择&#xff1a;你不拥有或控制应用程序的源代码&#xff0c;因此无法以编程方式对其…

ElasticSearch——学习笔记

2019独角兽企业重金招聘Python工程师标准>>> Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields 转载于:https://my.oschina.net/u/2307114/blog/799905

opencv python安装linux_Ubuntu16.04、Python3.6下安装opencv4遇到的问题

1.安装opencv在网上搜索Ubuntu16.04下安装opencv4想必一定搜到大把的编译源码安装opencv的教程&#xff0c;其实安装opencv只需一句命令&#xff1a;pip3 install opencv-python说实在我着实没想明白为什么那么多人要编译源码安装呢。。。2.python3.6中导入opencv库终端敲入pyt…

linux之用wget下sublime简单使用总结

1、简单介绍wget 1&#xff09;、wget命令在linux系统上面主要通过url下载&#xff0c; wget url 2&#xff09;、比如我们需要断点续传我们加上参数 -c wget -c url 2、下载sublime 1&#xff09;电脑32位 wget http://c758482.r82.cf2.rackcdn.com/Sublime\ Text\ 2.0.2.tar.…

查看端口被占用的进程号然后结束进程(解决端口被进程占用的问题)

在dos窗口下输入netstat -ano|findstr 8080&#xff08;这里指所占用的端口号&#xff09; taskkill /pid 6865&#xff08;这里至查询出来占用8080端口的pid码&#xff09;转载于:https://www.cnblogs.com/tianhao/p/4231874.html

Python操作Excel——win32com模块和xlrd+xlwt+xlutils组合

今天&#xff0c;接到一个任务&#xff0c;要生成大约两百个excel文件&#xff0c;从2006年到2013年&#xff0c;每个月两个文件&#xff0c;这些文件中除了几个关于日期的单元格不同外&#xff0c;其他数据都相同&#xff0c;所以就想到可以用python写一个小脚本&#xff0c;自…