繁体   English   中英

关于如何在服务器端和客户端执行 javascript 的困惑

[英]Confusion on how to execute javascript server-side vs client-side

我不确定我在这里问的问题是否正确。 我提前为我的无知道歉,我只花了一年的时间自学全栈 JS 和 Web 应用程序架构,我正试图在粒度层面上理解这一点。 以前提出这个问题的尝试似乎冒犯了一些开发人员,所以这可能是一个愚蠢的问题。

我试图了解如何,或者如果可能的话,明确指定或分配特定文件或 javascript 块以在服务器上与客户端/浏览器上进行处理/运行/执行。

在 app.js 文件中编写一些 javascript 并运行node app.js似乎仍然将该脚本暴露给浏览器,可以在 Dev Tools 的 Sources 选项卡中查看。

PHP 由服务器解释,然后将静态 HTML 发送到客户端。 这是“预处理”,相当于使用 Javascript 应用程序框架进行服务器端渲染吗? 或者是否编写与 HTML 服务器端内联的 .php 文件(就像您在 Wordpress 中看到的那样)更等同于内联 javascript 客户端? 还有一种不同的方法可以让 JS 在服务器端进行解释?

我一直在阅读有关 GENERATE_SOURCEMAP 的内容,但这似乎更像是用于隐藏客户端 JS 模块。

这个问题的其他可能的措辞

  • 如何不向客户端公开服务器端 Javascript?
  • 如何在服务器和浏览器中运行/执行 Javascript?

不是在询问服务器端与客户端 JS 的定义,或者服务器端应用程序框架的建议。

再一次,我想我把自己弄糊涂了,或者遗漏了一些非常基本的东西。 也许唯一的答案是将您的私有 Web 应用程序与您的客户端应用程序分开并通过 API 访问。 感谢您的任何帮助。

总结:你在服务器端由节点守护进程执行的 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代理执行,然后只将执行结果返回给客户端。

您必须想象与 nodejs 完全相同的事情。

我使用以下语法创建了一个index.js文件:

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

使用node index.js运行文件,您将得到输出<script>console.log("HelloWorled")</script> ,您的服务器(例如 expressJS)将发送回客户端以在客户端运行它以获取 los php代码的相同结果。

笔记:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM