NodeJS 在服务器端和客户端执行javascript的方式混淆

eh57zj3b  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(154)

我不确定我是否问对了问题。我提前为我的无知道歉,我自学全栈JS和Web应用架构才一年,我正试图在一个粒度的层面上理解这个问题。以前尝试问这个问题似乎冒犯了一些开发人员,所以这可能是一个愚蠢的问题。
我试图理解如何,或者如果可能的话,显式地指定或分配一个特定的文件或javascript块在服务器上处理/运行/执行,而不是在客户端/浏览器上。
在app.js文件中编写一些javascript并运行node app.js似乎仍然会将该脚本暴露给浏览器,可以在开发工具的源选项卡中查看。
PHP由服务器解释,然后将静态HTML发送到客户端。这是“预处理”,等同于Javascript应用框架的服务器端渲染吗?还是编写一个.php文件与HTML服务器端内联(就像你在WordPress中看到的)更等同于内嵌JavaScript客户端?还有一种不同的方法可以让JS在服务器端解释?
我阅读过关于GENERATE_SOURCEMAP的文章,但看起来更像是用来隐藏客户端JS模块的。

本问题的其他可能措辞

  • 如何不向客户端暴露服务器端Javascript?
  • 如何在服务器上运行/执行Javascript与在浏览器中运行/执行Javascript?
  • 不问服务器端与客户端JS的定义,也不问服务器端应用程序框架的建议。*

再次,我想我已经把自己搞糊涂了或者忽略了一些非常基本的东西。也许唯一的答案是将你的私有web应用程序从你的客户端应用程序中分割出来,并通过API访问。谢谢你的帮助。

iibxawm4

iibxawm41#

总结:由服务器端的节点守护进程执行的JavaScript在客户端是不可见的,唯一可见的是JS的输出。
创建扩展名为.php的文件时,需要一个执行此文件的可执行文件,以将结果返回给客户端进行渲染。
例如:

  • 创建一个php文件index.php,语法如下:
<?php
    echo '<script>console.log("HelloWorled")</script>'
?>

要运行这个文件,您需要PHP守护进程(php解释器)来运行这个文件,以获得下面的输出<script>console.log("HelloWorled")</script>;输出返回客户端,在客户端浏览器上执行;
在PHP的情况下,此操作由http服务器(如nginx)通过以下配置直接管理:

server{
   location ~ \.php$ {
     include snippets/fastcgi-php.conf;
     fastcgi_pass unix:/run/php/php<version>-fpm.sock;
   }
}

您可以在/etc/nginx/sites-available/default文件中找到它
这个规则只是告诉nginx让所有扩展名为.php的文件通过php代理执行,然后只将执行结果返回给客户端。
你必须对nodej进行完全相同的想象。
我用以下语法创建了一个index.js文件:

....
process.write( '<script>console.log("HelloWorled")</script>');
....

node index.js运行文件,你只会得到输出<script>console.log("HelloWorled")</script>,你的服务器(例如expressJS)将发送回客户端运行它,客户端得到与php代码相同的结果。
注:

  • 你不需要暴露你的JS代码,你只需要一个代理来服务它,就像PHP和NGINX一样(阅读更多关于expressJS和其他nodejs服务器框架的信息)。
  • 如果需要公开客户端脚本、图像、样式,则需要在代理配置中指定

相关问题