从后端加载AngularJS应用程序

时间:2014-10-21 11:30:06

标签: angularjs

首先,我必须说我很惊讶我没有找到任何资源,如果我错过了某些问题并且已经提出问题,我很抱歉

我们有一个很大的AngularJS应用程序,并希望:

  • 在Landing,Login,Profile和Main模块之间拆分应用程序,只加载相关资源(CSS,JavaScript),以实现更好的加载时间。

  • 检查我们是否有用户登录加载以避免在页面加载后重定向,以避免在此期间无法访问的页面闪烁。

我们的想法是从后端的应用程序中获得一个唯一的入口点:app.py。然后后端将检查路由并检查我们是否有登录用户。然后,它将仅加载与我们正在加载的模块关联的资源,如果需要,它还会将登录用户传输到客户端。

例如,如果用户尝试访问/login,我们会检查是否有用户从cookie登录,如果没有,我们只会加载登录所需的缩小的CSS和JavaScript。着陆页特别需要加载非常快,所以当我只需要一小部分时,我不想加载整个应用程序的资源。

登录时,我们会重新加载页面,以便后端加载Main模块的资源。

这就是app.py的样子:

from werkzeug.wrappers import Request, Response
import router
import rpc
import assets
import js_globals

@Request.application
def resolve(request):

  # Get the route path : [""], ["login"] or ["logged_in", "editor"] for example 
  route = router.get_route(request)
  # Get the logged in user if any
  user = rpc.authenticate_with_token(request)

  # LoggedIn or Login or Landing
  angular_module = router.get_module(route, user)

  # Load the assets from the module : JavaScript and CSS
  assets_output = assets.load(angular_module)

  if user:
    # Send the user to be available on the client-side 
    js_globals_output = js_globals.set(user)

  output = generate_output(assets_output, js_globals_output)

  return Response(output)

我的问题是:既然我还没有看到类似的东西,AngularJS已经存在了一段时间了,这是解决这些问题的正确方法吗?有更好的方法吗?

谢谢!

0 个答案:

没有答案