优化请求上一篇文章中,我们通过依赖第三方http_server这个包实现将html页面返回给浏览器,但是一般的服务器都包含请求html,json格式的传递,这样就有可能造成了混乱,下面我们使用http_server这个包进行优化吧!

在上一篇文章中,有人问了相对路径在不同的系统的表现是不一样的,那么,我们今天使用绝对路径,获取当前项目的绝对路径是很容易的,通过下面代码获取var webPath=Platform.script.toFilePath();

这里有一个Platform类,这个类主要提供有关计算机和操作系统的信息,而PlatForm.script主要获取当前运行脚本的绝对Uri,Uri内容为File://地址,然后toFilePath()就是获取当前Uri的地址

我们来输出运行一下看看吧!

pathToBuild的值.png

然后,我的html路径为

/Users/rhyme/WebstormProjects/ServerApp/webApp

那么我们怎么改为该路径呢,下面是我的代码import 'package:path/path.dart';  var webPath=dirname(dirname(Platform.script.toFilePath()))+'/webApp';

可以看到,我导入了path.dart这个文件,这个文件中有一个方法dirname().该方法可以知道,获取目录的名字,我获取了两次目录的名字,就是当前项目的根目录,然后就是拼接上"/webApp"这个字符串,就是html的存放位置了,我们来看一下现在的值吧!

image.png

可以看到成功的获取到了,这个就是我的html存放路径,如果你是win系统,也可以通过该方法去试着获取到html存放路径,下面就将该路径传入到http_server这个包的一个类中,在此之前,我们昨天有人可能对下面这一段代码有点疑问

main() async {

VirtualDirectory staticFiles=new VirtualDirectory('.');//.....

}

}

对的,这里的VirtualDirectory构造方法中,我们传入了一个“ . ”这个点就是要传入我们的html目录路径了,我们一定要记得,这里需要传入绝对路径,下面就是拼接的代码var webPath=dirname(dirname(Platform.script.toFilePath()))+'/webApp';

VirtualDirectory staticFiles=new VirtualDirectory(webPath);

接下来,我们要让VirtualDirectory这个类去接管收到的请求,并根据路径访问html页面var webPath=dirname(dirname(Platform.script.toFilePath()))+'/webApp';

VirtualDirectory staticFiles=new VirtualDirectory(webPath);  //允许目录监听,按照目录去请求

staticFiles.allowDirectoryListing=true;//目录处理,当请求根目录时,会返回该地址

staticFiles.directoryHandler=(dir,request){    var indexUri=new Uri.file(dir.path,).resolve('index.html');

staticFiles.serveFile(new File(indexUri.toFilePath()), request);

};  var requestServer = await HttpServer.bind(InternetAddress.loopbackIPv6, 8080);  print('监听 localhost地址,端口号为${requestServer.port}');  //监听请求

await for (HttpRequest request in requestServer) {//交给staticFiles处理了

staticFiles.serveRequest(request);//    logUtils.writeHeaders(request);    if(request.uri.toString()=='/'||request.uri.toString().endsWith('.html')){    }else{//      handleMessage(request);//    }//

}

最后,我们在webApp下面添加几个页面

添加几个页面.png

接下来我们根据路径请求一下服务器

页面一.png

页面二.png

关于页面.png

我们试着去请求一个不存在的页面

可以看到不存在.png

我们为没有找到的页面进行定制一下staticFiles.errorPageHandler=(request){    if(request.uri.pathSegments.last.contains('.html')){

staticFiles.serveFile(new File(webPath+'/404.html'), request);

}else{

handleMessage(request);

}

};

这里我们判断请求地址最后请求的文件是否为一个html页面,如果是,就为它返回一个404的页面,如果不是,就去处理消息

404页面png

启动服务器,我们重新请求之前找不到的地址,看看有什么变化

可以看到,返回了404的页面.png

接下来,我们优化一下代码main() async {  //获取文件根目录

var webPath=dirname(dirname(Platform.script.toFilePath()))+'/webApp';

VirtualDirectory staticFiles=new VirtualDirectory(webPath);  //允许目录监听

staticFiles.allowDirectoryListing=true;  //处理访问根目录

staticFiles.directoryHandler=(dir,request){    var indexUri=new Uri.file(dir.path,).resolve('index.html');

staticFiles.serveFile(new File(indexUri.toFilePath()), request);

};  //处理访问不存在的页面

staticFiles.errorPageHandler=(request){    if(request.uri.pathSegments.last.contains('.html')){

staticFiles.serveFile(new File(webPath+'/404.html'), request);

}else{

handleMessage(request);

}

};  var requestServer = await HttpServer.bind(InternetAddress.loopbackIPv6, 8080);  print('监听 localhost地址,端口号为${requestServer.port}');  //监听请求

await requestServer.forEach(staticFiles.serveRequest);

}

作者:rhyme_lph

链接:https://www.jianshu.com/p/2ca96f92efb6

dart服务器开发性能,DartVM服务器开发(第四天)--代码优化相关推荐

  1. 云服务器cpu性能,云服务器cpu性能

    云服务器cpu性能 内容精选 换一换 CPU积分是一种用来衡量云服务器计算.存储以及网络配置利用率的方式.云服务器利用CPU积分机制保证云服务器基准性能,解决超分云服务器长期占用CPU资源的问题.使用 ...

  2. 怎么查看服务器的性能,查看服务器进程性能查看

    查看服务器进程性能查看 内容精选 换一换 为了提高程序的运行的性能,可以通过把云服务器上运行的某个进程,指定在某个CPU上工作,实现CPU性能调优.为了获取更高的执行效率,我们应该保证一个CPU把一个 ...

  3. 如何增强服务器io性能,云服务器磁盘io性能提升

    云服务器磁盘io性能提升 内容精选 换一换 根据是否支持挂载至多台云服务器可以将磁盘分为非共享磁盘和共享磁盘.一个非共享磁盘只能挂载至一台云服务器,而一个共享磁盘可以同时挂载至多台云服务器.共享磁盘是 ...

  4. 华为裸金属服务器 虚拟化性能下降,服务器虚拟化 配置

    服务器虚拟化 配置 内容精选 换一换 Windows弹性云服务器虚拟化驱动异常(Tools没有正常运行).为保证弹性云服务器的正常使用,请参见本节内容进行修复.弹性云服务器虚拟化驱动异常会影响弹性云服 ...

  5. 服务器cpu性能最大值,服务器cpu性能排行

    原标题:"服务器cpu性能排行,详细教您服务器cpu性能排行"相关系统教程分享. 小伙伴们,你们知道服务器cpu是什么吗?或许小编应该说cpu,这样你们就能都知道是什么了.今天呢, ...

  6. 服务器多核性能排行,服务器内存多核性能

    服务器内存多核性能 内容精选 换一换 本文介绍了弹性云服务器ECS的功能发布和对应的文档动态,新特性将在各个区域(Region)陆续发布,欢迎体验.关于弹性云服务器(ECS)更多历史版本变更内容,请单 ...

  7. oa服务器的性能,oa服务器主要配置

    oa服务器主要配置 内容精选 换一换 设置"网络":在下拉列表中选择可用的虚拟私有云.子网,并设置私有IP地址的分配方式.弹性云服务器网络使用虚拟私有云(VPC)提供的网络,包括子 ...

  8. 二手服务器cpu性能,二手服务器cpu当主机

    二手服务器cpu当主机 内容精选 换一换 云手游服务器通过GPU硬件加速与图形接口支持,实现手游在云端运行效果,适用于手机游戏试玩推广.游戏智能辅助等场景.云手游服务器的CPU分为两类:Hi1616和 ...

  9. 服务器 台式机性能比较,服务器与台式机的区别

    服务器与台式机的区别 稳定性.可靠性的区别: 通常台式机只需要考虑每天能够持续运行8小时即可,而且它的故障不会影响其它机器和客户,即台式机的故障.重启不会造成太严重的影响和损失.因此它的设计比较简单, ...

最新文章

  1. python3.7.2版本怎么安装ipython_Linux升级安装python2.7版本至python3.6版本,系统centos7...
  2. css 的小细节,小总结
  3. 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
  4. 【Servlet】Cookie会话跟踪技术
  5. vs2010下载链接中国简体(中国含msdn)
  6. linux下面java配置,linux下面配置java环境变量
  7. 世界上最漂亮的写作工具Typora(创作者必备软件)
  8. 小学在班里排第几名家长才比较放心?
  9. solaris10上修改最大文件句柄数
  10. mysql数据库函数详解_MySQL数据库之字符函数详解
  11. 深入理解JavaScript系列(13):This? Yes,this!
  12. Effective Java 第三版 中文翻译
  13. VS2010版最常用的快捷键和其他快捷键
  14. 大一acmer日常记录day15
  15. numpy-poly1d、polyfit、polyval多项式使用
  16. 2011年春月游溧阳有感
  17. 依图科技暑期实习生面试经验
  18. 关于泊松分布在测序原理中的解释
  19. 用计算机撩人套路,各种撩人的套路句子40句
  20. MAC 笔记本快捷键使用总结

热门文章

  1. uni-app使用前的调研和开发心得
  2. mysql全表重命名备份_MySQL数据库重命名的快速且安全方法(3种)
  3. 微信限量纪念版code封面来啦,速看领取方式
  4. 由于业务需求,我是如何在需要页面添加悬浮按钮进行切换并添加水印的
  5. jsp页面页面post传值_在Js页面通过POST传递参数跳转到新页面详解
  6. skywalking使用方法_skywalking 6.2配置相关和使用
  7. jQuery文档就绪
  8. 关于nodejs中npm命令没有反应的解决方法
  9. jquery点击非div区域隐藏div
  10. element解决表格错位问题