首页 文章

Angular和Express路由如何在mean.js应用程序中协同工作?

提问于
浏览
9

我正在努力研究Angular和Express Routing(顺便说一句,我不知道是Express的新手),我一直用Angular处理路由 - 用ui-router - 但现在我开始构建一个MEAN.js应用程序我注意到我可以处理服务器端路由和客户端路由......这就是让我感到困惑的原因,这里有一些我的问题:

  • 他们有什么不同?

  • 如果我切换到快速路由,我还会有SPA吗?

  • 我可以同时使用两者吗?怎么样?这是好习惯吗?它有什么好处吗?

  • 我应该何时只使用其中一个?

  • 我将如何处理路线参数?

  • 等......

如果有人可以详细解释这些问题,以及人们需要知道的其他额外事情我会非常感激 .

另外,我想知道的是:我只需要在Express中设置服务器内容,还是需要在Node中编码?

3 回答

  • 1

    Express中的路由与角度中的路由略有不同

    在快递

    路由是指应用程序的 endpoints (URI)的定义以及它如何响应客户端请求 .

    因此,如果您使用angularjs进行路由,那么您不需要使用express为html模板设置路由 .

    您只需使用express创建RESTAPI然后使用angularjs $http$resource 来使用这些API

    Summary:

    • Angular中的路由支持SPA背后的想法 . 最终,您希望通过Angular处理基于UI的路由更改(即,不需要服务器调用/逻辑) . 任何到达后端的路由更改,最终需要服务器逻辑,都应该使用Express路由 .

    Example

    这是创建rest API的快速路由 .

    app = express();
    
    app.get('/dowork',function(res,req){
        console.log(req.params.msg);
      /... code to do your work .../
    });
    

    现在在angularjs呼叫做工作

    $http.get('http://localhost:8080/dowork',{"msg":"hi"}).success(function(data){
     console.log(data);
    });
    
  • 3

    这里只有两美分 . 其他专家应该纠正我并进一步解释:

    前端路由通常意味着在#之后的URL中进行路由管理 . 这是因为浏览器忽略#之后的任何内容 . 所以这是由角度来利用ajax调用并根据#之后的路径路径获取资源 .

    什么表达句柄是#之前的URL . 这用于从浏览器到服务器发出实际请求 .

    他们有什么不同:回答

    如果我切换到Express路由,我还会有SPA:

    如果您在前端手动管理网址,同时进行ajax调用以填充单个页面,则可以随时使用SPA . 管理前端的网址应具有可读性 .

    我可以同时使用这两种吗?怎么样? :

    每个人都使用两者 . SPA也使用两者 . 通常基于认证的事物由快速路由处理,而授权和其他基于路由的交互(例如请求资源和其他),前端路由被使用 . 即使您使用前端路由,对于场景后面的ajax请求,您仍然依赖于express的路由 .

    这是好习惯吗?它有什么好处吗? :

    使用express的路由进行身份验证并提供资源,并使用前端的角度路由来保持SPA的运行始终是一个好习惯 .

    我什么时候才应该只使用其中一个? :回答

    我将如何处理路线参数? :

    前端使用路径参数(如果使用ng-route)和后端使用slug,bodyparser等处理参数 . 你需要花一些时间来学习它们 .

  • 7

    Can we use both

    当然,你可以使用两者 . 根据您的应用程序要求,您的应用程序的哪个部分需要成为spa以获得更好的用户体验以及您的快速应用程序需要呈现的部分视图 .

    If i switch to Express routing will i still have a SPA?

    如果特定路由不是由角度处理的,并且您希望通过快速应用程序生成视图,则可以执行此操作 . 如果你想开发一个完整的水疗中心,那么你需要在快递应用程序中开发一个api(http终点)来响应你的角度应用程序的AJAX请求 . Angular routing是所有bout clint side routing,用于生成模板并从服务器获取数据(在您的case case中)并呈现视图 . 通过所有角度路由调用您的快速路由来获取json数据或任何模板以给出spa的印象

    我们有快递

    app.get("/", function (req, res) {
        res.render("home");
    });
    

    您的主页必须包含所有角度脚本文件以初始化角度应用程序

    你可以在克林特边码

    var app = angular.module("myApp", ["ui.router"])
        .config(function ($stateProvider, ) {
    
            $stateProvider.state("home", {
                url: "/"
            })
             .state("manas", {
                  url: "/manas",
                  templateUrl: "/templates/manas.html"
                  // when the state or url is manas its fetch the static  manas.html from server and inject that  to ui view
                })
    
    // i am using angular UI router here
    

    Can i use both at same time? How? Is it good practice? Does it has any benefit?

    我们可以同时使用两者 . 这取决于您的应用程序逻辑,它们对使用两者都没有害处或好处 .

    When should i use only one of them? 使用快速路由只有你更关心搜索引擎优化 . 由于SPA不是默认的搜索引擎友好型,因此您需要采取一些额外的操作以使其对搜索引擎友好 .

    How will i handle route parameters? 这取决于您使用的角度路由 . 我的意思是香草角度路由或UI路由 . 但这两个概念都是一样的

    passing parameters

    要通过UI路由将参数传递给服务器,请通过https://github.com/angular-ui/ui-router/wiki/URL-Routing#url-parameters

    对于UI路由,请点击此链接https://github.com/angular-ui/ui-router/wiki

    如果你的应用程序不是更复杂,你不关心嵌套视图子视图等我的建议与角平面路由 . 毫无疑问,UI路由器提供了更多先进的路由概念,但学习曲线也很陡峭 . 如果你的应用程序很简单,请使用角度路由

相关问题