当前位置: 首页 > news >正文

个人主题网站设计wordpress 基础知识

个人主题网站设计,wordpress 基础知识,建设银行官网的网站首页,网站建设捌金手指下拉二八AgileConfig的UI使用react重写快完成了。上次搞定了基于jwt的登录模式#xff08;AntDesign Pro .NET Core 实现基于JWT的登录认证#xff09;#xff0c;但是还有点问题。现在使用react重写后#xff0c;agileconfig成了个确确实实的前后端分离项目。那么其实部署的话要分… AgileConfig的UI使用react重写快完成了。上次搞定了基于jwt的登录模式AntDesign Pro .NET Core 实现基于JWT的登录认证但是还有点问题。现在使用react重写后agileconfig成了个确确实实的前后端分离项目。那么其实部署的话要分2个站点部署把前端build完的静态内容部署在一个网站把server端也部署在一个站点。然后修改前端的baseURL让spa的api请求都指向server的网站。这样做也不是不行但是这不符合AgileConfig的精神那就是简单。asp.net core程序本身其实就是一个http服务器所以完全可以把spa网站使用它来承载。这样只需要部署一个站点就可以同时跑spa跟后端server了。其实最简单的办法就是把build完的文件全部丢wwwroot文件夹下面。然后访问http://localhost:5000/index.html 但是这样我们的入口是index.html这样看起来比较别扭不够友好。而且这些文件直接丢在wwwroot的根目录下会跟网站其他js、css等内容混合在一起也很混乱。那么下面我们就要解决这两个文件我们要达到的目的有2个spa的入口path友好比如http://localhost:5000/uispa静态文件存放的目录独立比如存放在wwwroot/ui文件夹下或者别的什么目录下。要实现以上内容只需要一个自定义中间件就可以了。wwwroot\uiwwwroot\ui 我们把build完的静态文件全部复制到wwwroot\ui文件夹内以跟其他静态资源进行区分。当然你也可以放在任意目录下只要是能读取到就可以。ReactUIMiddlewarenamespace AgileConfig.Server.Apisite.UIExtension {public class ReactUIMiddleware{private static Dictionarystring, string _contentTypes new Dictionarystring, string{{.html, text/html; charsetutf-8},{.css, text/css; charsetutf-8},{.js, application/javascript},{.png, image/png},{.svg, image/svgxml},{ .json,application/json;charsetutf-8},{ .ico,image/x-icon}};private static ConcurrentDictionarystring, byte[] _staticFilesCache new ConcurrentDictionarystring, byte[]();private readonly RequestDelegate _next;private readonly ILogger _logger;public ReactUIMiddleware(RequestDelegate next,ILoggerFactory loggerFactory){_next next;_logger loggerFactory.CreateLoggerReactUIMiddleware();}private bool ShouldHandleUIRequest(HttpContext context){return context.Request.Path.HasValue context.Request.Path.Value.Equals(/ui, StringComparison.OrdinalIgnoreCase);}private bool ShouldHandleUIStaticFilesRequest(HttpContext context){//请求的的Referer为 0.0.0.0/ui ,以此为依据判断是否是reactui需要的静态文件if (context.Request.Path.HasValue context.Request.Path.Value.Contains(.)){context.Request.Headers.TryGetValue(Referer, out StringValues refererValues);if (refererValues.Any()){var refererValue refererValues.First();if (refererValue.EndsWith(/ui, StringComparison.OrdinalIgnoreCase)){return true;}}}return false;}public async Task Invoke(HttpContext context){const string uiDirectory wwwroot/ui;//handle /ui requestvar filePath ;if (ShouldHandleUIRequest(context)){filePath uiDirectory /index.html;}//handle static files that Referer xxx/uiif (ShouldHandleUIStaticFilesRequest(context)){filePath uiDirectory context.Request.Path;}if (string.IsNullOrEmpty(filePath)){await _next(context);}else{//output the file bytesif (!File.Exists(filePath)){context.Response.StatusCode 404;return;}context.Response.OnStarting(() {var extType Path.GetExtension(filePath);if (_contentTypes.TryGetValue(extType, out string contentType)){context.Response.ContentType contentType;}return Task.CompletedTask;});await context.Response.StartAsync();byte[] fileData null;if (_staticFilesCache.TryGetValue(filePath, out byte[] outfileData)){fileData outfileData;}else{fileData await File.ReadAllBytesAsync(filePath);_staticFilesCache.TryAdd(filePath, fileData);}await context.Response.BodyWriter.WriteAsync(fileData);return;}}} } 大概解释下这个中间件的思路。这个中间件的逻辑大概是分量部分。1.拦截请求的路径为/ui的请求直接从ui文件夹读取index.html静态文件的内容然后输出出去这就相当于直接访问/index.html。但是这样的路径形式看起来更加友好。2.拦截react spa需要的静态资源文件比如css文件js文件等。这里比较麻烦因为spa拉静态文件的时候path是直接从网站root开始的比如http://localhost:5000/xxx.js那么怎么区分出来这个文件是react spa需要的呢我们判断一下请求的Referer头部如果Referer的path是/ui那么就说明是react spa需要的静态资源同样从ui文件夹去读取。这里还需要给每个response设置指定的contentType不然浏览器无法准确识别资源。 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseMiddlewareExceptionHandlerMiddleware();}app.UseMiddlewareReactUIMiddleware();......} 在Startup类的Configure方法内使用这个中间件。这样我们的改造就差不多了。运行一下访问下http://localhost:5000/ui 可以看到spa成功加载进来了。总结为了能让asp.net core承载react spa应用我们使用一个中间件进行拦截。当访问对应path的时候从本地文件夹内读取静态资源返回给浏览器从而完成spa所需要资源的加载。这次使用react spa来演示其实换成任何spa应用都是一样的操作。代码在这ReactUIMiddleware关注我的公众号一起玩转技术
http://wiki.neutronadmin.com/news/299801/

相关文章:

  • 筑建网站租车网站模板下载
  • 台州市住房和城乡建设厅网站科技期刊
  • 怎样讲卖灯的网站做的好安徽360优化
  • 上海网站设计哪家好html网页游戏制作
  • 用自己主机做网站视频网站没有icp备案怎么访问
  • 没有网站可以做百度推广吗greentree wordpress
  • 传媒网站建设公司太原关键词优化平台
  • 网网站基础建设优化知识h5做网站
  • 羊毛网站建设视频界面设计与制作就业方向
  • 什么网站做热能表好网络营销网站的功能
  • 司法政务网站群建设东凤网站
  • 怎么看网站是否被k过wordpress转服务器
  • 怀柔网站整站优化公司注册商标名字推荐
  • 贺州市八步区乡镇建设局网站扮家家室内设计网
  • php 小企业网站 cms军事新闻最新消息军事新闻
  • 涿州网站网站建设苏州企业网站建设开发
  • 购物网站建设 属于信息系统管理与设计么网站维护中是怎么回事
  • 做电影网站服务器需求海外网站购物平台有哪些
  • 做网站学的什么专业网站备案需要关闭网站吗
  • 分析网站设计对网站搜索引擎友好性的影响错题网站开发
  • 淘宝客网站html上海电商网站设计
  • 茶叶网站建站公司备案证查询网站查询
  • 做娱乐网站的意义目的建筑工程网上办事大厅登录
  • 网站建站备案专业seo网站优化公司
  • 网站后台培训方案江苏省建设厅官方网站公式公告
  • 哈尔滨网站建设吧公司创建流程
  • 大连网站建站WordPress搜索功能增强
  • 网站一般字体教育局网站群建设方案
  • 百度网站官网网址尚品中国网站
  • 大众点评网站团购怎么做太原互联网推广公司