提问人:Bryan 提问时间:12/20/2022 更新时间:12/20/2022 访问量:1268
关于如何在服务器端与客户端执行javascript的困惑
Confusion on how to execute javascript server-side vs client-side
问:
我不确定我在这里问的问题是否正确。我提前为我的无知道歉,我只学了一年的全栈 JS 和 Web 应用程序架构,我正在尝试在细粒度上理解这一点。以前提出这个问题的尝试似乎冒犯了一些开发人员,所以也许这是一个愚蠢的问题。
我试图了解如何,或者如果可能的话,明确指定或分配特定的 javascript 文件或块,以便在服务器上处理/运行/执行,而不是在客户端/浏览器上。
在 app.js 文件中编写一些 javascript 并运行似乎仍会向浏览器公开该脚本,可在开发工具的“源”选项卡中查看。node app.js
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>');
....
与您一起运行文件只会获得输出,您的服务器(例如 expressJS)将发送回客户端以在客户端运行它以获得与 php 代码相同的结果。node index.js
<script>console.log("HelloWorled")</script>
笔记:
- 你不需要暴露你的JS代码,你只需要一个代理来服务器它,就像PHP和NGINX一样(阅读更多关于expressJS和其他nodejs服务器框架的信息)。
- 如果你需要公开客户端脚本,图像,样式,你需要在代理配置中指定它
评论
http
评论
node app.js