资讯专栏INFORMATION COLUMN

路由的后端配置

ashe / 602人阅读

摘要:前几天写了路由的前端设置,也是的必要条件,既然前端路由设置好了,那么后端势必也要有路由系统相配套。这里不涉及排查重复路由,当然添加上去也是很简单的。接下来要做的就是前端路由和后端路由相配合。

前几天写了路由的前端设置,也是spa的必要条件,既然前端路由设置好了,那么后端势必也要有路由系统相配套。这里以nodejs为例,简单的路由实现,参考了一些网上的文章以及express等开源库,是很简单的路由实现。
这里不涉及排查重复路由,当然添加上去也是很简单的。
先是index.js的代码:

</>复制代码

  1. var server=require("./server");
  2. var app = server.router();
  3. app.set("/demo",function () {
  4. return "demo";
  5. })
  6. app.set("/test",function () {
  7. return "test";
  8. })
  9. app.start()

从上面大概可以看到router的api了,只有两个api,一个是set,一个是start,set负责设置路由,start负责启动服务器。
然后是server.js:

</>复制代码

  1. var http = require("http");
  2. var url = require("url");
  3. var router = function () {
  4. function App () {
  5. this.path={};
  6. }
  7. App.prototype = {
  8. set : function (route,handler) {
  9. this.path[route]=handler;
  10. },
  11. start: function () {
  12. var path = this.path
  13. function handleRequest (req,res) {
  14. if( typeof path[req.url] === "function" ){
  15. var content = path[req.url]();
  16. }else {
  17. var content = "404 Not Found";
  18. }
  19. var pathname = url.parse(req.url).pathname;
  20. console.log("request for " + pathname +"recevied");
  21. res.write(content);
  22. res.end();
  23. }
  24. http.createServer(handleRequest).listen(3000,()=>{console.log("port 3000");})
  25. }
  26. };
  27. return new App();
  28. }
  29. exports.router = router;

如上,可以看到引入了url和http模块,url负责解析pathname,http负责创建服务器,最后返回App的实例,this.path里存储着已经在设置好的路由及其回调函数,这边仅仅是简单的返回一个值,具体还要更改。至于start里的handleRequest就是具体返回内容了,具体可以看http的相关api。就这简单的代码就是一个初级的路由模块。

当然还有更多的功能可以实现。比如渲染模板,类似flask的render_template

代码如下:

</>复制代码

  1. var fs = require("fs");
  2. var path = require("path");
  3. function renderTemplate (file) {
  4. var html = fs.readFileSync(path.dirname()+"/templates/"+file).toString();
  5. return html;
  6. }
  7. module.exports=renderTemplate

都是很简单的实现。虽然没有具体看express的渲染部分,不过我估计也是差不多的。

</>复制代码

  1. app.set("/demo",function () {
  2. return renderTemplate("index.html")
  3. })

我这里是先放在templates的文件夹里,模仿flask。大概如此。
接下来要做的就是前端路由和后端路由相配合。构成spa的雏形。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79226.html

相关文章

  • adapter与serializer使用示例一

    摘要:由于能力有限本示例不会完全自定义适配器和序列化器,示例仍然是使用官方推荐方式,重写或者扩展以实现自定适配器和序列化器。在序列化器中调用响应请求的方法格式化返回的数据。上述就是的一个简单实用示例。 文章来源:http://xcoding.tech/tags/Emberjs欢迎访问源网站Ember Teach,Ember Teach致力于为您提供最权威、最前沿的Ember技术教程。。 ad...

    Near_Li 评论0 收藏0
  • 基于容器后端服务架构

    摘要:结构大致为安装如果检测到多个会报错,可以用指定一个指定启动因为需要调用,所以需要把映射到容器内部,如果你使用了,那么需要设置对应的。我这里是启动服务,这里需要注意的是这些环境变量,作用是的默认值,见名知意,在文档中有详细介绍。 基于容器的后端服务架构 在探索kubernetes的应用时,调研了几个gateway,发现fabio支持发现服务,自动生成路由,结合consul,registr...

    nifhlheimr 评论0 收藏0
  • 细说 Vue 组件的服务器端渲染

    摘要:所以,这次就来聊聊组件的服务器端渲染。这种模式下,后端只提供接口,传统的服务器端路由模板渲染则都有层接管。这样,前端开发人员可以自由的决定哪些组件需要在服务器端渲染,哪些组件可以放在客户端渲染,前后端完全解耦,但又保留了服务器端渲染的功能。 细说 Vue 组件的服务器端渲染 声明:需要读者对 NodeJs、Vue 服务器端渲染有一定的了解 现在,前后端分离与客户端渲染已经成为前端开发的...

    reclay 评论0 收藏0
  • 使用keepalived全面实现高可用

    为什么要用Keepalived来实现负载均衡器高可用,这里只拿HaProxy负载均衡器来进行说明:对于所有懂运维的小伙伴来说,都应该知道,无论后端的服务器都强大,这里的后端服务器说的是真正提供服务的主机,负载均衡器后面有缓存服务器,缓存服务器后面才是真正提供服务的服务器。而这个服务器小编称它为"后端服务器",而在这后端服务器后面是我们的数据缓存服务器,之后是数据库,也是整个企业的命脉。这整个架构是...

    BingqiChen 评论0 收藏0

发表评论

0条评论

ashe

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<