V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DavidNineRoc
V2EX  ›  问与答

现在前端都已经这么高级了吗?

  •  
  •   DavidNineRoc · 2018-03-19 11:37:48 +08:00 · 18425 次点击
    这是一个创建于 2452 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我只是想问一个问题,如果有说的不对的地方,勿喷: 现在的项目前后台分离,我负责 api, 同时把他的前端给我,让我部署到服务器。(还要我装 node,yarn 什么之类的) 我惊呆了,前端为什么还要求服务器装这些?不是开发的时候用,部署时管你用什么 es6,不都打包成 html ? 然后我就懵逼了,我的前端还停留在 jq 的时代; 我也不知道用的什么框架,截图一张。 111 难道现在不支持打包成浏览器直接运行的? ps:我另一个同事用的 rn,说可以的,然后争不过另外一个。求大神解释一下

    129 条回复    2018-03-22 21:51:55 +08:00
    1  2  
    wotemelon
        101
    wotemelon  
       2018-03-20 00:32:36 +08:00 via Android
    看了前几个评论差点吐血。这明显是 ssr 服务端渲染啊,不要 ssr 直接给你静态文件了
    ericls
        102
    ericls  
       2018-03-20 01:17:35 +08:00 via iPhone   ❤️ 1
    @wotemelon 从图中看的确是像是 SSR 但是 就算不是 ssr 可能也不好 本地 build. 可能会涉及到 assets 的处理…… 当然 各种情况都有可能 也各有好坏。

    另外 前端从来都很复杂 你看看 Android 还用 Java 写前端呢……
    huba
        103
    huba  
       2018-03-20 01:32:06 +08:00 via Android
    我就想知道一件事,你说的这个前端月薪是有多少。。。。总感觉很恐怖。
    markx
        104
    markx  
       2018-03-20 05:06:49 +08:00
    @mkeith 你说的是没错。 我想说的是,无论楼主懂不懂 node 的服务端渲染,他是负责 API 的。
    fulvaz
        105
    fulvaz  
       2018-03-20 05:51:41 +08:00
    给他个 nginx 让他自己维护去
    ymcz852
        106
    ymcz852  
       2018-03-20 09:16:40 +08:00
    也没什么的,身为一个前端,虽然懂一点 SSR,但是直接上来就丢给你这不懂的知识,不事先商量,我觉得是不行,身为程序员多了解点为人处世,比懂多点知识更高级
    Clarencep
        107
    Clarencep  
       2018-03-20 09:20:55 +08:00
    服务端渲染而已,大惊小怪。

    不过作为一个 PHPer,我还是觉得 "用户 <--> node 服务 <--> PHP 服务” 这样的服务端渲染流程不太靠谱 -- node 的部署比较麻烦,可能会中断服务而影响用户体验。

    我建议使用 "用户 <--> PHP 服务 <--> node 服务" 这样的流程。从 PHP 调 node 服务的时候设个超时时间(比如 500ms ),超时的话就别服务端渲染了,PHP 直接渲染出个基本页面就得了。这样能有效地防止不靠谱的前端的 node 服务出 bug。
    AppxLite
        108
    AppxLite  
       2018-03-20 09:28:47 +08:00
    @abcbuzhiming 笑了,没有服务器权限你行你上啊!!!
    int64ago
        109
    int64ago  
       2018-03-20 09:42:38 +08:00
    @Clarencep #107 淘宝、天猫里有很多用了 Node 作为前置渲染层,靠不靠谱不是你说了算
    DavidNineRoc
        110
    DavidNineRoc  
    OP
       2018-03-20 09:47:09 +08:00
    @Muninn 下次让他自己来 ^_^
    @jasperjia 我还在用 var >_
    @keikeizhang 用远程 windows 服务器远程管理多个 linux 主机,我上 windows 帮看看。
    @miyalee 以前的前端同事给我的直接丢 dist
    @duan602728596 展示类的网站,而且前端不搞服务端渲染,你再怎么 es6 写法,还不是语法糖,最后直接打包成浏览器能直接识别的?
    @markx
    @mkeith
    @orzzyd 前端见识少,别见怪
    DavidNineRoc
        111
    DavidNineRoc  
    OP
       2018-03-20 09:50:26 +08:00
    @wotemelon 看前端。。。
    @huba 要是都知道同事的工资就好了
    @fulvaz 下次就是了
    @ymcz852 下次让他来就行了
    @Clarencep 中断立马帅锅给前端。。。
    jasperjia
        112
    jasperjia  
       2018-03-20 10:03:54 +08:00
    @DavidNineRoc 该同事看书只看第一页吧 一个 let 用到天荒地老
    GavinGuo
        113
    GavinGuo  
       2018-03-20 10:08:37 +08:00
    我是做前端的
    目前前端确实大多用 node 来部署的,node 充当 http 服务器,但你说前后端分离,那也可以 build 成纯 html+js 的形式,再用 apache 或 nginx 来做 http 服务器,这些都不是事
    luoway
        114
    luoway  
       2018-03-20 10:13:47 +08:00
    @Clarencep
    “用户 <--> PHP 服务 <--> node 服务”是不可能的,两个 js 栈之间无论什么理由都不会出现别的语言。
    raphaelsoul
        115
    raphaelsoul  
       2018-03-20 10:17:38 +08:00
    @mritd 不做 服务器服务器国外的 速度很好 而且 layer 有了后面实际上也不会再去下载了 因为 layer 内容没变
    jyf
        116
    jyf  
       2018-03-20 11:08:04 +08:00
    用什么很正常 不过要别人给你的技术战买单不太好 所以最好贵厂提倡 dockernize
    zpf124
        117
    zpf124  
       2018-03-20 11:19:29 +08:00
    @DavidNineRoc 你们这前端太奇葩了,你贴的这玩意是 nodejs,是一套服务端程序,相当于一个什么流程呢。

    既然你是 php 的,那就用 php 举例, 目前这样就像是:

    他做了一个 php 的全套网站, 只不过数据查询不是用 mysql 的库,而是通过 http 请求,去访问了你的网站。

    --------------------------------------------------------------------

    也就是说一个用户如果访问你们项目,实际的流程是这样:

    1,用户请求之后,访问了他做的服务器程序,然后他的服务器返回 html 页(静态的或者是他服务器生成的动态页面)。

    2,(根据他这个幺蛾子思路,估计他前端的异步请求也是访问的他自己的服务器),用户浏览器执行 js,异步请求他的服务器,他的服务器再调用你的 api,获取查询结果然后返回。

    也就是说,根本没有前后端分离, 只是你们前端的同志自己也搞了一套后端项目,你们这做的玩意应该叫做服务化。
    zhjie
        118
    zhjie  
       2018-03-20 11:26:20 +08:00
    @zpf124 #117 请教一下您认知里的前后端分离
    coalo
        119
    coalo  
       2018-03-20 11:47:44 +08:00
    @zpf124 #117 你思路说清楚了,不过这个就是前后端分离的基本思路,前端收到用户请求后,调用后端数据 api,渲染页面。后端只负责数据业务的处理
    coalo
        120
    coalo  
       2018-03-20 11:50:21 +08:00
    前端的技术栈在近三年内确实更新到了这种层次,一般不会前端渲染相关技术的前端程序员都找不到高薪工作了
    coalo
        121
    coalo  
       2018-03-20 11:52:45 +08:00
    楼主可以看下这篇文章就明白了 https://github.com/camsong/blog/issues/8
    zpf124
        122
    zpf124  
       2018-03-20 12:19:41 +08:00
    @zhjie 因为没有贴出 js 代码,我不确定这个 node 是做了后端的功能了,还是仅仅是做服务端渲染。

    前后端分离在我的理解里是这样的。

    如果没有服务端渲染:
    用户访问服务器, 服务器直接发送静态 html 页和其他资源, 用户浏览器端 js 执行异步请求访问后端动态服务器获取数据。

    如果有服务端渲染:
    用户访问服务器,做服务端渲染用的 node 服务器,读取 html 页,向后端服务器请求数据,然后将数据渲染到 html 中发送给浏览器,当切换页面时用户浏览器端 js 执行异步请求访问后端动态服务器获取数据。


    服务的渲染的服务器仅仅用来第一次用户访问时生成带数据的 html 页,之后完全不访问这个服务器。
    DavidNineRoc
        123
    DavidNineRoc  
    OP
       2018-03-20 12:34:26 +08:00
    @jasperjia 给我讲讲为什么 let 不好 >_<
    @GavinGuo 我也不是很清楚,不过肯定的是他只是服务端渲染,没有写后端的代码
    zhjie
        124
    zhjie  
       2018-03-20 12:40:05 +08:00
    @DavidNineRoc #123 let 和 cost 的区别,就算百度都能搞清楚,大体上是这样的,需要修改变量的用 let,不需要修改的如引入的模块,方法规范点用 const。假如项目用了 eslint 检测,这个 let 肯定是要报警的。
    suzic
        125
    suzic  
       2018-03-20 12:46:11 +08:00 via Android
    他写了一层 node 中间件,用来做服务端渲染
    xylophone21
        126
    xylophone21  
       2018-03-20 12:46:45 +08:00
    这种做法确实存在,只不过为什么会在你们都开发好了再撕?你们的系统工程师呢?
    Thiece
        127
    Thiece  
       2018-03-20 15:04:32 +08:00
    一个帖子暴露了 V2EX 的平均水平
    Clarencep
        128
    Clarencep  
       2018-03-22 21:50:57 +08:00
    @DavidNineRoc 不是甩锅的事儿,咱得对整个系统负责
    Clarencep
        129
    Clarencep  
       2018-03-22 21:51:55 +08:00
    @luoway 有,理由就是可维护性和可靠性。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.