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

对于前端,网站/网页, nginx 以及 node 总是迷糊,有没有兄弟姐妹帮忙解释得简单明白一点?

  •  
  •   yazoox · 2020-05-30 16:12:43 +08:00 · 929 次点击
    这是一个创建于 1667 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直都对 网站,或者说 nginx, apache 服务,以及 node 搞不清楚。下面说说我自己的理解,不对请大家指正。

    比如,一般我们前端开发,最终生成 /发布的,应该都是类似下面这三大类吧

    index.html (入口文件,会引用下面的.js )
    bundle.js (通常,我们的 typescript 什么的,编译成兼容的 js,全打包压缩成一个 bindle.js )
    /public (一个文件夹,用于存放资源文件,什么图片, css, 等等)
    

    开发过程中,webpack-dev-server 会启动一个 node 然后跑一个 express server 。express server 的默认路由 http://localhost:3000/ 就指向我们打包的根目录,比如 <project dir>/dist 。这样,我们打开浏览器,输入默认的地址,就读取&下载 index.html,接着 bindle.js 资源,等等,浏览器会解析运行 js,于是我们最终成功打开“网站”了。

    最终发布打包,加上参数比如"production”,就会生成优化后的三大件,放到 dist 目录下。

    接着把这个 dist 下面的所有内容,布置到远程服务器机器上。远程的服务器运行的,可能是个 nginx 或者 apache,等等。

    我的理解正确么?还是哪里有误解?

    至于 node 我现在只知道用 node 除了可以用来运行 /跑 js 外,可以开起一个 express server,用户输入 http(s)://xxx/ 或者 http(s)://xxx/bbb, 就路由到 express server 中绑定的实现代码上去。这个是不是相当于 node 用于服务端开发了?

    nginx,我的理解,就是用户输入一个网址+路由,然后 nginx 返回对应(远程)目录下的 index.html 文件。 至于 node 跑的 server, 是不是和 nginx 一样,还是怎么回事儿,楼主就不懂,不太理解了。

    大家有没有通俗易懂的解释?

    谢谢

    2 条回复    2020-05-30 16:30:27 +08:00
    kidlj
        1
    kidlj  
       2020-05-30 16:24:24 +08:00
    Node.js 一开始出来的时候,是叫 Server Side Javascript,就是把 Chrome 里的 V8 Javascript 解释器拿出来做成一个运行时,跑在服务器上面。之前 Javascript 只能跑在浏览器里面。有了 Node 以后,Javascript 在服务器编程领域就跟 Python,Ruby 等语言平齐了,可以写各种服务,包括 HTTP 服务,聊天服务,文件服务等。

    Express 就是 Javascript 代码,跑在 Node 运行时之上,是一个 web 框架,方便用 Javascript 写 web 服务用的,相当于 Python 的 Django 或 Ruby 的 Rails 。

    至于 Nginx,是一个用 C 语言实现的文件服务器和反向代理服务器,也是一个负载均衡中间件。当然,如果有能力,你也可以用 Node + Javascript 实现和 Nginx 一模一样功能的一个软件,只是没人这么做,因为不同语言有各自的适用场景。
    ljpCN
        2
    ljpCN  
       2020-05-30 16:30:27 +08:00 via Android
    从楼主的描述来讲,基本正确,不过缺失了一个东西,就是后端的逻辑处理。在楼主的描述中,网站只是由服务器返回一个已经写好的网页。这可能就是楼主不能区分 node 与 nginx 的功能的原因。nginx 只是做一个反向代理,它可以代理静态资源也就是楼主说的把网页发给浏览器。但是 node 除了做这个,还可以处理浏览器发送的其它请求,比如数据库的 crud,然后把数据返回给浏览器。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4052 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 05:15 · PVG 13:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.