2010-11-28 68 views
0

我有一個關於SSJS的問題。ServerSide JavaScript

使用SSJS,是否可以隱藏用戶的代碼?

其他服務器端語言,如PHP是不是在源觀看,因爲它們是在客戶端之前處理,瀏覽器

的我想要的一個小例子:

<html> 
<head> 
    <script runat="server"> 
    function getPassword(){ 
     var password = "myPass"; 
     return password; 
    } 
    </script> 
</head> 
<body> 
    <script> 
    alert(getPassword()); 
    </script> 
</body> 
</html> 

我測試了這一點,但密碼仍然可見

我做錯了什麼,所以我的例子很簡單CSJS或是不可能隱藏SSJS代碼?

+0

我不認爲加入`RUNAT =「服務器」`使得服務器邊JavaScript。如果您將JS代碼嵌入到HTML源代碼中,則它會自動在客戶端進行。 – 2010-11-28 12:50:30

回答

0

堅持T.J.的智慧語言克勞德,你的文件可能是一個基於Windows的主機(所以一個擴展名爲.asp文件)上的經典.asp文件,看起來像這樣:

<% @language=ecmascript %> 
<% 
    function getPassword(){ 
     var password = "myPass"; 
     return password; 
    } 
%> 
<html> 
<head> 
</head> 
<body> 
    <script> 
    alert('<%=getPassword()%>'); 
    </script> 
</body> 
</html> 
與你的風格可能看起來像行

或多種方法:

<script language="jscript" runat="server"> 
// mind the 'language' property, it is required. 
// The script tag doesn't have to be 
// in the header of the html-document. 
    function getPassword(){ 
    var password = "myPass"; 
    return password; 
    } 
</script> 
<html> 
<head> 
</head> 
<body> 
    <script> 
    alert('<%=getPassword()%>'); 
    </script> 
</body> 
</html> 

這兩種方式的服務器端腳本在頁面源代碼中都不可見。旁白:<%=...%>可以看作是速記Response.Write(...)

對於其他主機,請檢查您的供應商或大衛Dorwards答案給出的維基百科列表

0

是的,您的服務器端代碼可以隱藏起來,與其他服務器端語言一樣。您必須通過理解服務器端JavaScript的服務器來提供相關的HTML文件,並且您必須正確配置該服務器(默認情況下,.html文件可能不會被預處理;通常是帶有服務器端的HTML文件代碼將具有不同的擴展名,例如.shtml,.asp,.aspx等,具體取決於您運行它們的平臺;當然,如果配置正確,您可以正確處理任何事情)。如果你能通過網絡瀏覽器看到上面的代碼,那麼你錯過了其中一個步驟。

請注意,服務器端JavaScript將具有任何其他服務器端語言的優點和缺點。您不能(例如)用任何服務器端語言來編寫客戶端瀏覽器的腳本,這就是爲什麼您會看到如此多的客戶端代碼。 (或許這是顯而易見的:-))

0

任何服務器端JavaScript只會在服務器上可用,但正如您需要在將PHP發送到客戶端之前通過PHP引擎運行PHP一樣,您必須運行SSJS通過JS引擎發送之前。

維基百科,你可以找到a list of such engines,雖然node.js可能是目前最流行的。

runat="server"是,IIRC,一個ASP.NET構造。如果你想要走這條路,你需要使用ASP.NET來開始。我不知道你的語法是否正確。

+0

感謝您的快速回答。 正常(共享,Linux)託管,這是否支持SSJS? 換句話說,我可以假設大多數網站都可以運行SSJS嗎? – Chielus 2010-11-28 13:10:12