使用AngularJ进行服务器渲染

2024-09-28 20:52:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用AngularJS(1.5)和Flask开发一个webapp,我自学成才。 我的webapplication不是公共的,因此保留了所有资源。你知道吗

在第一个版本中,我通过ngRoute和resolve管理AngularJS对页面的呈现,但我明白这是一个错误。
在第二个版本中,我将页面的呈现方式从Angular改为Flask,但是每次我都遇到相同的问题:Flask呈现一个页面,将它发送到Angular,但是Angular不显示它,而是在路由中显示模板。我试过很多案例:

  • 使用Angular呈现登录页面,只提供一个控制器来调用服务器并加载服务器呈现的页面
  • 用Flask和一个角度控制器来管理auth
  • 使用控制器中的resolve函数来管理保留页

对于每种情况,我都有相同的情况:服务器响应以html呈现页面,但它不是以角度显示的。你知道吗

我找到了一些解决问题的方法:升级到Angular2.0或实现节点.JS,或实现服务器。。。但我希望避免添加其他组件,并了解问题所在。你知道吗

角路由代码的一部分

var reserved = {
    name: "reserved",
    params: {aaa:true} }
var reservedContent = {
    name: "reserved.content",
    url: "/reserved",
    template: "<h1>Angular rendered</h1>" }

而且在应用程序运行你知道吗

$transitions.onBefore({ to: 'reserved.*' }, function(t){
    var AuthService = t.injector().get('appAuth');
    var authorization = appAuth.authorization(t.to().url.substr(1), $rootScope.token);
    authorization.then(function()   {
        $rootScope.resource = t.to().url;
        pySrv.app($rootScope.resource)
        .then(function(data){
            console.log("The html server rendered page: " + data);
            console.log("The Angular template in state" + t.to().template);
            t.to().template = data;
            },
            function(data){
                console.log("Reject");  }   );
        },
        function(){
            $state.target("403");   }); });

我总是在页面上看到“角度渲染”。你知道吗


Tags: to服务器urlflaskdatavarfunctiontemplate