[英]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 模塊。
這個問題的其他可能的措辭
我不是在詢問服務器端與客戶端 JS 的定義,或者服務器端應用程序框架的建議。
再一次,我想我把自己弄糊塗了,或者遺漏了一些非常基本的東西。 也許唯一的答案是將您的私有 Web 應用程序與您的客戶端應用程序分開並通過 API 訪問。 感謝您的任何幫助。
總結:你在服務器端由節點守護進程執行的 JavaScript 在客戶端是不可見的,唯一可見的是你的 JS 的輸出。
當您創建一個帶有.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代碼的相同結果。
筆記:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.