从后端的角度来说 Vue 做了哪些事情?
作为一个没有前后端分离开发经验的人,我有几个问题:
- 加入
vue
之后一共有三个角色是吗?浏览器、vue
服务器、后端服务器? html
文件从哪里来?vue
服务器?还是后端服务器?- 浏览器请求
json
数据是直接向后端服务器请求还是向vue
服务器请求再由vue
服务器请求后端服务器? vue
相当于把原本后端负责的模板渲染剥离了是吗?那模板的渲染工作是不是变成了从vue
服务器获取html
文件,再从后端服务器获取json
文件,然后再浏览器渲染拼凑在一起?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
不是,仍然是浏览器和后端服务器,vue只是编译前端代码
后端服务器,是vue编译出来的,后端服务器处理这个静态文件
直接向后端
后端只提供 HTTP 接口,vue编译前端js代码,浏览器通过js构造页面,当页面事件发生时,例如点击,浏览器会通过js请求后端HTTP接口,浏览器拿到数据后,更新页面元素
这事儿没法完全从后端的角度来说啊。关于前后端分离,要不参阅几篇文章
关于问题,回答如下:
加入
vue
之后一共有三个角色是吗?浏览器、vue
服务器、后端服务器?html
文件从哪里来?vue
服务器?还是后端服务器?浏览器请求数据是直接向后端服务器请求还是向
vue
服务器请求再由vue
服务器请求后端服务器?vue
相当于把原本后端负责的模板渲染剥离了是吗?那模板的渲染工作是不是变成了从vue
服务器获取html
文件,再从后端服务器获取json
文件,然后再浏览器渲染拼凑在一起?我觉得你需要了解一下前端工程相关的知识,要不来学习一下JavaScript全栈工程师养成记
从后端的角度来讲,我发给浏览器的是一个空白的 HTML 和一堆 JS,但是 Vue 这小子从 JS 里苏醒之后,积极响应用户操作,时不时从我这要点数据,硬是把这个空白的 HTML 给玩出花儿来了。
前后端分离主要是分离了模板渲染这个环节,以前做web页面的时候是不是你用某一个后端语言把渲染模板最终渲染成了静态html文件,html文件里加一些js代码使其能在浏览器执行一些脚本。现在分离之后后端不用管模板渲染了,把以前后端渲染需要的数据做成接口通过http请求发送给浏览器,然后渲染逻辑放在用js编写的浏览器端里。
由于数据不直接用后端渲染了,这样原本的静态html就可灵活放置,就像以前的static静态文件一样,随便放到哪个服务器里都可以去请求别的服务器。你说的vue服务器其实感觉上是这一块,但是没有vue服务器这一说法,因为这些vue文件可以随便放在哪个服务器都行。
vue利用了本地浏览器效率来编译模板,实现了其他一些更加灵活的功能
浏览器->web服务器(nginx, apache)->静态资源(html, js, css)
浏览器->web服务器(nginx, apache)->WSGI server(gunicron, uWSGI )-> app -> 动态数据
浏览器将动态数据和静态资源渲染生成页面
从上述过程可以看出, 你理解的vue服务器其实就是web服务器, 和后端服务放一起叫后端服务器也没问题但是:
(1) 通过web服务器获取的不是vue源代码, 而是已经构建好的目标文件(html, js, css)
(2) html通常由nginx返回, 当然也有通过后端指定返回已经构建好的html, json请求则会经nginx转发给后端
(3)以上是生产运行的示例, 开发模式下, 前端构建通常由cli提供, 后端请求则由框架自带的server处理
(4) WSGI是python Web服务器网关接口协议, 异步代码通常不走这个, java这个位置是tomcat
(5) nginx不是必须的, 请求都可以直接从后端返回(生产环境不建议这么做), 这种将vue构建好的目标文件由后端返回的情况不能算真正的前后端分离(分离开发和分离部署)
从后端角度来说,把vue当作jq或模板引擎就好了
建议你看B站这个视频,讲了从单体项目到前后端分离的演进,并详细介绍了使用vue的前后端分离项目的请求过程和加载过程,是怎么样请求流转加载渲染的:https://www.bilibili.com/vide...
可以简单理解为基于js的freeMarker。但是功能更强大。
vue 服务器.....兄弟你是不是想太多了
vue项目文件本质上其实静态文件,只不过是根据后端的接口做好了对应的页面渲染和交互逻辑而已(页面渲染渲染与你无关,你只需要提供他需要的数据即可),vue可以单独部署,也可以放在后端的静态目录中运行(一般是你放JS和CSS的地方,因为VUE本质上是静态文件)。
前后端分离在我的眼里就是:
1.前端负责项目的框架,只是一个架子没有内容的,拿网页来说就是只有HTML标签这些(你看到的内容,比如文章标题,文章内容等等都是后端API提供的),但是没有填充的内容。
2.后端则是提供填充内容(API)。
3.后端的数据通过异步ajax传递给前端,前端通过JS来拿到数据渲染页面。
所以针对你的问题,Vue只是负责搭建了项目的“框架”,当然针对“架子”可以单独部署一个服务器来发布“架子”,在没有后端数据的情况下访问这个页面,会发现网页是空的。JSON数据的请求一般使用的是axios(一个HTTP 库,可以运行在node金和浏览器的),因为在前端vue+axios属于主流使用方法。页面的渲染就是Vue负责的了,也就是JS负责渲染,最终是浏览器来渲染页面。
小白入门嘛,自己实现个。demo 就啥都明白了。。。