A. nodejs服務後台持續運行三種方法
forever是一個nodejs守護進程,完全由命令行操控。forever會監控nodejs服務,並在服務掛掉後進行重啟。
1、安裝 forever
npm install forever -g
2、啟動服務
service forever start
3、使用 forever 啟動 js 文件
forever start index.js
4、停止 js 文件
forever stop index.js
5、啟動js文件並輸出日誌文件
forever start -l forever.log -o out.log -e err.log index.js
6、重啟js文件
forever restart index.js
7、查看正在運行的進程
forever list
pm2是一個進程管理工具,可以用它來管理你的node進程,並查看node進程的狀態,當然也支持性能監控,進程守護,負載均衡等功能
npm install -g pm2
pm2 start app.js // 啟動
pm2 start app.js-i max //啟動 使用所有CPU核心的集群
pm2 stop app.js // 停止
pm2 stop all // 停止所有
pm2 restart app.js // 重啟
pm2 restart all // 重啟所有
pm2 delete app.js // 關閉
運行 pm2 startup ,即在/etc/init.d/目錄下生成pm2-root的啟動腳本,且自動將pm2-root設為服務。
運行 pm2 save ,會將當前pm2所運行的應用保存在/root/.pm2/mp.pm2下,當開機重啟時,運行pm2-root服務腳本,並且到/root/.pm2/mp.pm2下讀取應用並啟動。
nodejs 自帶node.js自帶服務nohub,不需要安裝別的包。
缺點:存在無法查詢日誌等問題,關閉終端後服務也就關閉了, 經測試是這樣的。
nohup node ***.js &
B. JS腳本怎麼運行
常見的執行js代碼都是放入到HTML引入後,然後通過HTML文件來執行胡查看代碼。顯然這是比較麻煩的事情,如果電腦裡面安裝了node.js,可以使用node來直接使用node來運行想要運行的js文件。
<html>
<body>
<script language="javascript">
function Card(owner,rate)
{
this.Owner=owner;
this.Rate=rate;
}
var mycard = new Card("X","150");
document.write("name:"+mycard.Owner+"speed:"+mycard.Rate);
</script>
</body>
</html>
(2)持續運行js腳本擴展閱讀:
JavaScript語言中採用的是弱類型的變數類型,對使用的數據類型未做出嚴格的要求,是基於Java基本語句和控制的腳本語言,其設計簡單緊湊。
腳本簡單地說就是一條條的文字命令,這些文字命令是我們可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。
C. JS 網頁腳本 重復使用
建一個js為擴展名的文件例如,myjquery.js 把你的js代碼放進去,就<script type="text/javascript"> 和</script>之間的內容,然後再html頁面中使用<script src="./myjquery.js" type="text/javascript"></script>導入進去。注意src的路徑問題,./表示當前路徑,../表示上一目錄的路徑。這個路徑找對了,所有的js方法和變數都能復用了。
D. java程序中運行js腳本
我們要在Java中執行JavaScriptMethods.js中的execute(s1,s2)方法,JavaScriptMethods.js文件內容如下:
function execute(s1, s2){
return s1 + s2;
}
首先需要定義一個介面,這個介面中給出與要執行的JavaScript方法一樣的方法簽名,我們定義介面Methods,它的內容如下:
/**
* 介面中的方法簽名必須與要執行的JavaScript方法一致
* @author yuncong
*
*/
public interface Methods {
public String execute(String s1,String s2);
}
然後,就可以用腳本引擎執行JavaScriptMethods.js中execute(s1,s2)方法了,具體內容寫在下面的ExecuteScript類中的:
import java.io.FileReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class ExecuteScript {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
String path = ExecuteScript.class.getResource("").getPath();
System.out.println(path);
// FileReader的參數為所要執行的js文件的路徑
engine.eval(new FileReader(path + "JavaScriptMethods.js"));
if (engine instanceof Invocable) {
Invocable invocable = (Invocable) engine;
Methods executeMethod = invocable.getInterface(Methods.class);
System.out.println(executeMethod.execute("li", "yuncong"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
運行ExecuteScript類,輸出如下:
?
1
2
/C:/Users/yuncong/git/login/target/classes/executescript/
liyuncong