Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 客户端渲染和跳过服务器渲染方法?_Javascript_Angularjs_Node.js_Template Engine - Fatal编程技术网

Javascript 客户端渲染和跳过服务器渲染方法?

Javascript 客户端渲染和跳过服务器渲染方法?,javascript,angularjs,node.js,template-engine,Javascript,Angularjs,Node.js,Template Engine,我想在客户端呈现我的页面,以帮助减少服务器的负载并降低通信量。我理解,对服务器的第一次调用通常会导致服务器必须呈现请求的页面,然后将该页面发送给用户。当用户与页面交互时,javascript将接管路由,该路由向服务器发送特定视图的请求,然后通过客户端上的javascript更新该视图 我在想这种方法是否存在,是否可行 假设我想去地址: www.example.com/about 是否有一种方法将/about作为参数附加到来自服务器的html页面/javascript代码(与服务www.exam

我想在客户端呈现我的页面,以帮助减少服务器的负载并降低通信量。我理解,对服务器的第一次调用通常会导致服务器必须呈现请求的页面,然后将该页面发送给用户。当用户与页面交互时,javascript将接管路由,该路由向服务器发送特定视图的请求,然后通过客户端上的javascript更新该视图

我在想这种方法是否存在,是否可行

假设我想去地址:

www.example.com/about
是否有一种方法将
/about
作为参数附加到来自服务器的html页面/javascript代码(与服务
www.example.com/
)中。当dom在客户机上准备就绪时,它会向服务器发送一个请求,请求
/about
数据,该数据会随响应更新客户机视图。这意味着完全跳过服务器端渲染


还是我疯了?

不,你没有疯。这是大多数单页应用程序(SPA)框架(如AngularJS)的工作方式

例如,我通常为AngularJS配置Web服务器的方式是使用以下路由:

  • /pub/
    只提供由
    指定的静态文件,例如所有JS、HTML部分和CSS
  • /api/
    是客户端通过AJAX live访问的所有端点所在的位置
  • 其他所有内容只返回
    index.html
    ,这是一个静态文件,包含整个页面,其中引用了JS、CSS和标记
因此,当您转到
www.example.com/about
时,您将看到
index.html
页面,它告诉浏览器为整个应用程序下载JS,其中包括客户端路由配置。一旦应用程序启动,它会看到位置是
www.example.com/about
,并说“我知道
/about
,我将转到该页面!”


当然,“转到该页面”,我的意思是“获取该页面的部分HTML,并通过AJAX获取任何数据”。没有可见的页面刷新/更改发生。

因为它被标记为角度,我想你知道它,对吧?然后检查Angular router,这是一个模块,它正是这样做的。@MrE真的!我给它加了标签,因为我通常使用这些平台,这篇文章对那些开发人员来说可能很有趣。是的,我知道这与他们没有什么特别的关系。举个例子:我相信这个答案是一个(如果不是唯一的)实现你想要的方法:@MrE我明白了!我还没有深入研究AngularJS,很好的链接!啊,所以它会自动检查加载过程中的某个部分的url。问题是,;它会首先显示原始索引内容(就像用户从那里开始一样),然后请求
/about
页面吗?如果是这样的话,我猜它会在更新时产生闪烁效果?是的,它可能会有点闪烁,但通常不会非常明显。实际上,您通常首先看到的是“shell/skeleton”UI,然后在加载时填充主内容区域。对于大多数用例,它通常足够快。