當前位置:首頁 » 編程軟體 » nodejs腳本

nodejs腳本

發布時間: 2022-10-29 17:15:55

『壹』 node.js是什麼

Node.js 是一個基於 Chrome V8 引擎的javaScript運行環境。 Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型。

Node 是一個讓 JavaScript 運行在服務端的開發平台,它讓 JavaScript 成為與PHP、Python、Perl、Ruby等服務端語言平起平坐的腳本語言。發布於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。

Node對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下運行得更好。V8引擎執行Javascript的速度非常快,性能非常好。Node是一個基於Chrome JavaScript運行時建立的平台, 用於方便地搭建響應速度快、易於擴展的網路應用。Node 使用事件驅動, 非阻塞I/O模型而得以輕量和高效,非常適合在分布式設備上運行數據密集型的實時應用。

(1)nodejs腳本擴展閱讀:

Node採用一系列「非阻塞」庫來支持事件循環的方式。本質上就是為文件系統、資料庫之類的資源提供介面。向文件系統發送一個請求時,無需等待硬碟(定址並檢索文件),硬碟准備好的時候非阻塞介面會通知Node。

該模型以可擴展的方式簡化了對慢資源的訪問, 直觀,易懂。尤其是對於熟悉onmouseover、onclick等DOM事件的用戶,更有一種似曾相識的感覺。

『貳』 nodejs 是什麼

Node.js是一個基於Chrome V8引擎的JavaScript運行環境,一個讓JavaScript 運行在服務端的開發平台,它讓JavaScript 成為與PHP、Python、Perl、Ruby 等服務端語言平起平坐的腳本語言。
Node.js底層是JavaScript,不過它不能幫助我們實現頁面特效,偏重點是後端編程。因為Node.js執行速度非常快,因此可以將Node.js當做前後端的中間者,比如要頻繁從資料庫刪除數據,那麼可以通過Node.js搭建web伺服器,通過node web伺服器來連接資料庫來刪除,速度快速。

如果滿意,望採納,謝謝!

『叄』 node js-nodejs怎麼獲取腳本所在的路徑

nodejs提供了一個path的模塊,它提供了一系列的工具還是,用於處理文件和目錄的路徑。引入模塊:

constpath=require('path');

1、獲取一個文件的目錄名 path.dirname()

constfilepath='/tmp/demo/js/app.js';//腳本路徑
console.log(path.dirname(filepath));//輸出:/tmp/demo/js

2、獲取當前工作進程的目錄

console.log(process.cwd());

『肆』 手把手教你使用nodejs編寫cli(命令行)

前端日常開發中,會遇見各種各樣的cli,比如一行命令幫你打包的webpack,一行命令幫你生成vue項目模板的vue-cli,還有創建react項目的create-react-app等等等等。這些工具極大地方便了我們的日常工作,讓計算機自己去干繁瑣的工作,而我們,就可以節省出大量的時間用於學習、交流、開發、 逛steam 。

但是有時候一些十分特別的需求,我們是找不到適合的cli工具去做的。比如說,你的項目十分龐大,你給項目添加一個新的路由,要經過 創建目錄 -> 創建.vue文件 -> 更新vue-router的路由列表 這一趟流程,就算快捷鍵創建目錄文件用得再熟悉,也比不過你一行命令來得快,特別是路由目錄嵌套深,.vue文件初始化模板復雜的時候。

所以呢,何不為自己項目寫一個cli?就專門做這些繁瑣的活?

nodejs的cli,本質就是跑node腳本嘛,基本上每位前端er都會:

然後命令行調用

可以做得更逼真一點,我們在package.json裡面的scripts欄位上添加一下腳本名:

然後命令行調用:

但是,看到這里你肯定會說,人家webpack還有vue-cli都是「有名字」的!什麼 vue-cli init app 、 webpack -p 的,多漂亮,看看這個命令行, node index.js ,還 npm run hello ,誰不會啊,丑不拉幾的,怕又不是來水文章的哦?差評!!

別急啊各位大人,接下來就說說,如何給這個node腳本起個名字。

姑且,先把這個cli的名字命名為 hello-cli ,就是我們能夠在命令行裡面,輸入 hello-cli ,然後它就列印一句 hello world ,沒有 node 也沒有 npm ,就是:

這樣,你的第一個cli腳本就成功安裝了,可以在命令行裡面,直接敲你的cli名字,看看結果輸出吧。

另外,如果你僅希望你的cli腳本僅在項目里執行,則需要在你項目裡面新建一個目錄,重復上述的操作,只是在第三步的時候,不要llink到全局裡面去,而是使用 npm i -D file:<你的腳本cli目錄路徑> ,把它當成項目的依賴安裝到node_moles裡面去,如果安裝成功,那麼在項目的package.json你會看到多了一條依賴,這條依賴的值不是版本號,而是你腳本的路徑。然後在node_moles裡面會有一個.bin目錄,裡面就存放著你的可執行文件。

當然,這樣安裝的cli腳本,必須在項目的package.json的scripts欄位上聲明腳本命令,然後通過 npm run 的方式執行。

哦?這樣子使用的話不就回到最最最開始的時候那種原始的 npm run hello 一樣么。

是的,但是有質的區別。使用 node index.js 這種方式調用的話固然簡單靈活,但是嚴重依賴腳本路徑,一旦目錄結構發生變動,寫在scripts的命令就要更改一次;但是使用npm安裝之後,本地的cli腳本就被拉到node_moles裡面,目錄結構變動對其影響不大。其次是不利於分享與發布,如果你想把你的cli腳本發布出去,那麼有一個好聽響亮的名字,比起在說明文檔裡面告訴使用者如何找到你的腳本路徑再用node執行它,簡直好上那麼一萬倍不是么?

這里也給我們提供了一個cli開發流程思路:

名字有了,輸出也有了,看看我們跟那些大名鼎鼎的cli工具,在形式上還差點啥?對了,人家可以支持不同參數選項的,還可以根據輸入的不同,產生不同的結果。

這樣吧,我們給這個cli加一個功能,既然叫 hello-cli ,那不能只會 hello world 吧,必須要見誰就說 hello 才行:

雖然這個功能很簡單,但是至少也是實現了「根據輸入的不同,產生不同結果」的效果。

命令行上的參數,可以通過 process 這個變數獲取, process 是一個全局對象而不是一個包,不需要通過 require 引入。通過 process 這個對象我們可以拿到當前腳本執行環境等一系列信息,其中就包括命令行的輸入情況,這個信息,保存在 process.argv 這個屬性里。我們可以列印一下:

列印結果:

可以看出,argv是個數組,前兩位是固定的,分別是node程序的路徑和腳本存放的位置,從第三位開始才是額外輸入的內容。那麼實現上面的功能就很簡單了,只要讀取argv數組的第三位,然後輸出出來就可以了。

npm社區中也有一些優秀的命令行參數解析包,比如 yargs ,tj的 commander.js 等等

如果你想使用比較復雜的參數或者命令,建議還是用第三方包比較好,手寫解析太耗精力了。

現在,你可以自由自在的寫你自己的cli腳本了。
如果你希望寫一個項目打完包自動推上git的cli,或者自動從git倉庫裡面拉取項目啟動模板,那麼,你需要通過node的 child_process 模塊開啟子進程,在子進程內調用git命令:

不僅是git命令,包括系統命令、其他cli命令都可以在這里執行。特別是系統命令,使用系統命令對文件目錄進行操作,效率比fs高到不知道哪裡去了。

社區上也有一些不錯的包,比如阮一峰老師推薦的 shelljs

如果你不那麼希望你的cli用起來那麼「硬核」,希望更人性化一點,比如提供一些友好的輸入、提示啊,給你的輸出加點顏色區分重點啊,寫個簡單的進度條啊等等,那麼你就需要美化一下你的輸出了。

除了顏色這部分,不使用第三方包實現起來非常繁瑣復雜,其他的功能,都可以試試自己寫。
顏色部分使用了第三方包 colors ,這里就不演示了。
其他都是由nodejs自帶的 readline 模塊實現的。

繪制的思路跟canvas繪制動畫一樣,只不過canvas是清除畫布,而命令行這里是通過 readline.clearScreenDown 清除輸出。

這樣,一個簡易的,人性化的,帶點點進度條動畫的命令行cli工具就寫好了,你也可以發揮你的想像力,去寫一些更有趣的效果出來。

畢竟我們前端,有瀏覽器我們可以寫動畫,沒了瀏覽器我們一樣可以寫動畫。

『伍』 .net環境下如何使用node.js

//你要先有一個nodejs的javascript的腳本,內容是:
console.log("Hello world");

//然後在你的asp.net裡面:
using System.Diagnostics;
using System.IO;
Process p=Process.Start("你的nodejs的executable","你的上面的那個javascript腳本");
//然後nodejs輸出給你的hello world在p.StandardOutput裡面:
StreamReader sr= myProcess.StandardOutput;

string hello_world_string=sr.ReadLine();
//最後你要等待node的process退出:
p.WaitForExit();
p.Close();

『陸』 nodejs 寫好的腳本可以在沒有node.js的環境下運行嗎

使用:
>>> @memo
>>> def fib(i):
>>> if i < 2: return 1
>>> return fib(i-1) + fib(i-2)

『柒』 nodejs可以做什麼

nodejs是谷歌推出的一個JavaScript平台,即在這個平台上編寫程序用的是js腳本語言。理論上來說,通過nodejs,同時藉助一些模塊和組件,能夠實現很多其他編程語言才能實現的功能,比如傳統的桌面軟體的開發、服務端程序的開發等等。當然可能性能方面還有待加強(到底用nodejs做其他方面的開發性能如何我也不清楚,瞎猜的)。

『捌』 nodejs版本的腳本壓縮和compo工具怎麼使用

一、下載並安裝NodeJS for Windows 0.6.5 或進入NodeJS官網下載最新版本。
二、查看版本:
運行cmd
node -v

npm -v

如果上訴兩個命令出錯,請打開系統環境變數Path,直接點確定。再試。
三、安裝UglifyJS 這里我們安裝最新的版本,具體版本可在npm官網查看,uglify-js版本頁面。
npm install uglify-js -g

然後等待命令完成,這個過程時間可能有點長。
如果出錯請刪除
C:\Users\Administrator\AppData\Roaming\npm 內相關內容
C:\Users\Administrator\AppData\Roaming\npm-cache 內相關內容
C:\Users\Administrator 下的錯誤信息文件
然後再次運行

四、修改配置
上述安裝後自動生成的配置文件是不可直接使用的,我們需要手工去修改。
打開C:\Users\Administrator\AppData\Roaming\npm\uglifyjs.cmd
內容為:
:: Created by npm, please don't edit manually.
"%~dp0\.\node_moles\uglify-js\bin\uglifyjs" %*

修改為:
:: Created by npm, please don't edit manually.
@IF EXIST "%~dp0"\"node.exe" (
"%~dp0"\"node.exe" "%~dp0\.\node_moles\uglify-js\bin\uglifyjs" %*
) ELSE (
node "%~dp0\.\node_moles\uglify-js\bin\uglifyjs" %*
)

五、使用uglifyjs對javascript進行壓縮美化
壓縮:
uglifyjs f.js > f.min.js

美化:
uglifyjs -b f.min.js > f.b.js

『玖』 nodejs怎樣寫post腳本

HTML頁面內容

<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
</head>
<body>
<formaction="http://127.0.0.1/dopost"method="post">
<inputtype="text"name="name"><br><br>
<inputtype="text"name="age"><br><br>
性別:<br>
<inputtype="radio"name="sex"value="男">男
<inputtype="radio"name="sex"value="女">女<br><br>
愛好:<br>
<inputtype="checkbox"name="like"value="睡覺">睡覺
<inputtype="checkbox"name="like"value="畫畫">畫畫
<inputtype="checkbox"name="like"value="游戲">游戲<br><br>
<inputtype="submit">
</form>
</body>
</html>

NODEJS的公式,如下:

varhttp=require('http');
varquerystring=require('querystring');
varserver=http.createServer(function(req,res){
//如果你的訪問地址是這個,並且請求類型是post
if(req.url=='/dopost'&&req.method.toLowerCase()=='post'){
varallData='';
//下面是post請求接收的一個公式
//node為了追求極致,它是一個小段一個小段接收的。
//接受了一小段,可能就給別人去服務了。防止一個過大的表單阻塞了整個進程
req.addListener('data',function(chunk){
allData+=chunk;
console.log('數據:'+allData);
});
//全部傳輸完畢
req.addListener('end',function(){
varoData=allData.toString();
variDa=querystring.parse(oData);
res.end('success');
console.log(iDa);
console.log(iDa.like);
console.log(iDa.name);
console.log(iDa.sex);
});
}
})
server.listen(80,'127.0.0.1');
熱點內容
安卓70能用什麼軟體 發布:2025-05-16 01:45:09 瀏覽:480
編程發展史 發布:2025-05-16 01:38:52 瀏覽:528
android圖片氣泡 發布:2025-05-16 01:38:40 瀏覽:885
文件加密編輯器下載 發布:2025-05-16 01:30:41 瀏覽:343
linuxapacheyum安裝 發布:2025-05-16 01:30:31 瀏覽:476
大連賓利浴池wifi密碼是多少 發布:2025-05-16 01:25:36 瀏覽:172
緩存數據生產服務 發布:2025-05-16 01:08:58 瀏覽:584
普通電腦伺服器圖片 發布:2025-05-16 01:04:02 瀏覽:971
伺服器地址和埠如何區分 發布:2025-05-16 01:03:17 瀏覽:834
重新編目資料庫 發布:2025-05-16 00:54:34 瀏覽:514