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

2020-05-30 16:12:43 +08:00
 yazoox

一直都对 网站,或者说 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 一样,还是怎么回事儿,楼主就不懂,不太理解了。

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

谢谢

855 次点击
所在节点    问与答
2 条回复
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
2020-05-30 16:30:27 +08:00
从楼主的描述来讲,基本正确,不过缺失了一个东西,就是后端的逻辑处理。在楼主的描述中,网站只是由服务器返回一个已经写好的网页。这可能就是楼主不能区分 node 与 nginx 的功能的原因。nginx 只是做一个反向代理,它可以代理静态资源也就是楼主说的把网页发给浏览器。但是 node 除了做这个,还可以处理浏览器发送的其它请求,比如数据库的 crud,然后把数据返回给浏览器。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/676975

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX