我只是想问一个问题,如果有说的不对的地方,勿喷: 现在的项目前后台分离,我负责 api, 同时把他的前端给我,让我部署到服务器。(还要我装 node,yarn 什么之类的) 我惊呆了,前端为什么还要求服务器装这些?不是开发的时候用,部署时管你用什么 es6,不都打包成 html ? 然后我就懵逼了,我的前端还停留在 jq 的时代; 我也不知道用的什么框架,截图一张。 难道现在不支持打包成浏览器直接运行的? ps:我另一个同事用的 rn,说可以的,然后争不过另外一个。求大神解释一下
101
wotemelon 2018-03-20 00:32:36 +08:00 via Android
看了前几个评论差点吐血。这明显是 ssr 服务端渲染啊,不要 ssr 直接给你静态文件了
|
102
ericls 2018-03-20 01:17:35 +08:00 via iPhone 1
@wotemelon 从图中看的确是像是 SSR 但是 就算不是 ssr 可能也不好 本地 build. 可能会涉及到 assets 的处理…… 当然 各种情况都有可能 也各有好坏。
另外 前端从来都很复杂 你看看 Android 还用 Java 写前端呢…… |
103
huba 2018-03-20 01:32:06 +08:00 via Android
我就想知道一件事,你说的这个前端月薪是有多少。。。。总感觉很恐怖。
|
105
fulvaz 2018-03-20 05:51:41 +08:00
给他个 nginx 让他自己维护去
|
106
ymcz852 2018-03-20 09:16:40 +08:00
也没什么的,身为一个前端,虽然懂一点 SSR,但是直接上来就丢给你这不懂的知识,不事先商量,我觉得是不行,身为程序员多了解点为人处世,比懂多点知识更高级
|
107
Clarencep 2018-03-20 09:20:55 +08:00
服务端渲染而已,大惊小怪。
不过作为一个 PHPer,我还是觉得 "用户 <--> node 服务 <--> PHP 服务” 这样的服务端渲染流程不太靠谱 -- node 的部署比较麻烦,可能会中断服务而影响用户体验。 我建议使用 "用户 <--> PHP 服务 <--> node 服务" 这样的流程。从 PHP 调 node 服务的时候设个超时时间(比如 500ms ),超时的话就别服务端渲染了,PHP 直接渲染出个基本页面就得了。这样能有效地防止不靠谱的前端的 node 服务出 bug。 |
108
AppxLite 2018-03-20 09:28:47 +08:00
@abcbuzhiming 笑了,没有服务器权限你行你上啊!!!
|
110
DavidNineRoc OP @Muninn 下次让他自己来 ^_^
@jasperjia 我还在用 var >_ @keikeizhang 用远程 windows 服务器远程管理多个 linux 主机,我上 windows 帮看看。 @miyalee 以前的前端同事给我的直接丢 dist @duan602728596 展示类的网站,而且前端不搞服务端渲染,你再怎么 es6 写法,还不是语法糖,最后直接打包成浏览器能直接识别的? @markx @mkeith @orzzyd 前端见识少,别见怪 |
111
DavidNineRoc OP |
112
jasperjia 2018-03-20 10:03:54 +08:00
@DavidNineRoc 该同事看书只看第一页吧 一个 let 用到天荒地老
|
113
GavinGuo 2018-03-20 10:08:37 +08:00
我是做前端的
目前前端确实大多用 node 来部署的,node 充当 http 服务器,但你说前后端分离,那也可以 build 成纯 html+js 的形式,再用 apache 或 nginx 来做 http 服务器,这些都不是事 |
114
luoway 2018-03-20 10:13:47 +08:00
@Clarencep
“用户 <--> PHP 服务 <--> node 服务”是不可能的,两个 js 栈之间无论什么理由都不会出现别的语言。 |
115
raphaelsoul 2018-03-20 10:17:38 +08:00
@mritd 不做 服务器服务器国外的 速度很好 而且 layer 有了后面实际上也不会再去下载了 因为 layer 内容没变
|
116
jyf 2018-03-20 11:08:04 +08:00
用什么很正常 不过要别人给你的技术战买单不太好 所以最好贵厂提倡 dockernize
|
117
zpf124 2018-03-20 11:19:29 +08:00
@DavidNineRoc 你们这前端太奇葩了,你贴的这玩意是 nodejs,是一套服务端程序,相当于一个什么流程呢。
既然你是 php 的,那就用 php 举例, 目前这样就像是: 他做了一个 php 的全套网站, 只不过数据查询不是用 mysql 的库,而是通过 http 请求,去访问了你的网站。 -------------------------------------------------------------------- 也就是说一个用户如果访问你们项目,实际的流程是这样: 1,用户请求之后,访问了他做的服务器程序,然后他的服务器返回 html 页(静态的或者是他服务器生成的动态页面)。 2,(根据他这个幺蛾子思路,估计他前端的异步请求也是访问的他自己的服务器),用户浏览器执行 js,异步请求他的服务器,他的服务器再调用你的 api,获取查询结果然后返回。 也就是说,根本没有前后端分离, 只是你们前端的同志自己也搞了一套后端项目,你们这做的玩意应该叫做服务化。 |
119
coalo 2018-03-20 11:47:44 +08:00
@zpf124 #117 你思路说清楚了,不过这个就是前后端分离的基本思路,前端收到用户请求后,调用后端数据 api,渲染页面。后端只负责数据业务的处理
|
120
coalo 2018-03-20 11:50:21 +08:00
前端的技术栈在近三年内确实更新到了这种层次,一般不会前端渲染相关技术的前端程序员都找不到高薪工作了
|
121
coalo 2018-03-20 11:52:45 +08:00
楼主可以看下这篇文章就明白了 https://github.com/camsong/blog/issues/8
|
122
zpf124 2018-03-20 12:19:41 +08:00
@zhjie 因为没有贴出 js 代码,我不确定这个 node 是做了后端的功能了,还是仅仅是做服务端渲染。
前后端分离在我的理解里是这样的。 如果没有服务端渲染: 用户访问服务器, 服务器直接发送静态 html 页和其他资源, 用户浏览器端 js 执行异步请求访问后端动态服务器获取数据。 如果有服务端渲染: 用户访问服务器,做服务端渲染用的 node 服务器,读取 html 页,向后端服务器请求数据,然后将数据渲染到 html 中发送给浏览器,当切换页面时用户浏览器端 js 执行异步请求访问后端动态服务器获取数据。 服务的渲染的服务器仅仅用来第一次用户访问时生成带数据的 html 页,之后完全不访问这个服务器。 |
123
DavidNineRoc OP |
124
zhjie 2018-03-20 12:40:05 +08:00
@DavidNineRoc #123 let 和 cost 的区别,就算百度都能搞清楚,大体上是这样的,需要修改变量的用 let,不需要修改的如引入的模块,方法规范点用 const。假如项目用了 eslint 检测,这个 let 肯定是要报警的。
|
125
suzic 2018-03-20 12:46:11 +08:00 via Android
他写了一层 node 中间件,用来做服务端渲染
|
126
xylophone21 2018-03-20 12:46:45 +08:00
这种做法确实存在,只不过为什么会在你们都开发好了再撕?你们的系统工程师呢?
|
127
Thiece 2018-03-20 15:04:32 +08:00
一个帖子暴露了 V2EX 的平均水平
|
128
Clarencep 2018-03-22 21:50:57 +08:00
@DavidNineRoc 不是甩锅的事儿,咱得对整个系统负责
|