客户端渲染和跳过服务器渲染方法?
我想呈现我的页面客户端,以帮助保持负载关闭服务器,并保持交通。我知道第一次调用服务器通常会导致服务器必须呈现请求的页面,然后将该页面发送给用户。当用户与页面交互时,JavaScript接管路由,路由将请求发送到服务器以获得特定的视图,然后通过客户端上的javascript更新。客户端渲染和跳过服务器渲染方法?
我在想如果这种方法存在与否,如果它是可行的。
比方说,我希望去的地址:
www.example.com/about
有其高度的作为参数传递到HTML页面/ JavaScript代码从服务器(同样,供应www.example.com/
)的方法。当客户端准备好客户端时,它会向服务器发送一个请求,请求数据,并在响应中更新客户端视图。这意味着完全跳过服务器端渲染。
还是我疯了?
不,你不是疯了。这是大多数单页面应用程序(SPA)框架(如AngularJS)的工作方式。
例如,我通常配置的网络服务器AngularJS的方式是有以下途径:
-
/pub/<relative_file_path>
只是提供由<relative_file_path>
指定的静态文件,如所有的JS,HTML泛音和CSS 。 -
/api/<whatever>
就是该客户端通过AJAX访问所有端点住 -
一切刚刚返回
index.html
,这是包含与对JS,CSS和标记引用整个页面的静态文件。
因此,当你去www.example.com/about
,你会得到index.html
页面,告诉浏览器下载JS整个应用程序,其中包括客户端的路由配置。一旦应用程序启动,它会看到该位置是www.example.com/about
,并说“我知道约,我将转到该页面!”。
当然,通过“转到该页面”,我的意思是“获取该页面的部分HTML,并通过AJAX获取任何数据”。没有可见的页面刷新/更改发生。
啊所以它会自动检查url中的某些部分在加载。问题是;它会首先显示原始索引内容(就好像用户在那里开始),然后*然后*请求'/ about'页面?如果是这样,我猜它会导致闪烁的效果,因为它更新? – 2015-03-24 23:43:38
是的,它可能有点闪烁,但它通常不是很明显。事实上,你通常首先看到的是“shell/skeleton”UI,然后在加载主内容区域时被填充。对于大多数用例来说,这通常足够快。 – GregL 2015-03-24 23:47:22
因为它被标记为Angular,我假设你知道它,对吧? 然后检查一下Angular-router,它就是那个模块。 – MrE 2015-03-24 23:37:22
@MrE确实!我标记为我通常使用这些平台,这篇文章可能会让那些开发者感兴趣。是的,我知道它并没有真正与他们有任何关系。 – 2015-03-24 23:38:22
这里的一个例子: https://scotch.io/tutorials/angular-routing-using-ui-router – MrE 2015-03-24 23:38:44