當前位置:首頁 » 網頁前端 » nodeweb
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

nodeweb

發布時間: 2022-01-26 06:36:56

① node.js 用什麼web伺服器

bmob的伺服器不錯,支持雲端代碼,直接部署在上面很輕松

② web開發為什麼選擇nodejs

太長的不知道你會不會看完:
Node.js其實有很多大公司都在用的,比如eBay, Microsoft, 你可以去Node.js官網看看:node.js要想知道更詳細的列表,可以看這里:https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node
再稍微花點時間,搜集一些網上資料:優勢和劣勢。

講清楚這個問題,先講講整個Web應用程序架構(包括流量、處理器速度和內存速度)中的瓶頸。瓶頸在於伺服器能夠處理的並發連接的最大數量。
Node.js解決這個問題的方法是:更改連接到伺服器的方式。每個連接發射一個在Node.js引擎的進程中運行的事件,而不是為每個連接生成一個新的
OS線程(並為其分配一些配套內存)。Node.js不會死鎖,因為它根本不允許使用鎖,它不會直接阻塞 I/O
調用。Node.js還宣稱,運行它的伺服器能支持數萬個並發連接。

Node本身運行V8 JavaScript。V8
JavaScript引擎是Google用於其Chrome瀏覽器的底層JavaScript引擎。Google使用V8創建了一個用C++編寫的超快解
釋器,該解釋器擁有另一個獨特特徵:您可以下載該引擎並將其嵌入任何應用程序。V8
JavaScript引擎並不僅限於在一個瀏覽器中運行。因此,Node.js實際上會使用Google編寫的V8
JavaScript引擎,並將其重建為可在伺服器上使用。

Node.js優點:
1、採用事件驅動、非同步編程,為網路服務而設計。其實Javascript的匿名函數和閉包特性非常適合事件驅動、非同步編程。而且JavaScript也簡單易學,很多前端設計人員可以很快上手做後端設計。
2、
Node.js非阻塞模式的IO處理給Node.js帶來在相對低系統資源耗用下的高性能與出眾的負載能力,非常適合用作依賴其它IO資源的中間層服務。
3、Node.js輕量高效,可以認為是數據密集型分布式部署環境下的實時應用系統的完美解決方案。Node非常適合如下情況:在響應客戶端之前,您預計
可能有很高的流量,但所需的伺服器端邏輯和處理不一定很多。

Node.js缺點:
1、可靠性低
2、單進程,單線程,只支持單核CPU,不能充分的利用多核CPU伺服器。一旦這個進程崩掉,那麼整個web服務就崩掉了。

不過以上缺點可以可以通過代碼的健壯性來彌補。

③ node.js 是web伺服器嗎

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。要說起來的話也可以算是。

④ 怎麼使用nodejs做前端.java做後端 搭建web工程

使用CommonJS編寫前端JS模塊,使用Browserify打包JS,同時可以使用gulp進行其他前段構建工作,比如assets, Sass/Less, minify等。

後端:使用Java編寫Restful API供前端consume,或者直接渲染前端頁面。

⑤ 如何用nodejs搭建web伺服器

您好 很高興為您解答:
這個web伺服器包括三塊,app.js是程序入口,負責響應url請求;route.js是路由,用來分發處理復雜的業務邏輯;system.js是配置文件,用來配置伺服器參數,如host、port等

首先來看app.js,引用模塊,http處理url請求,url用來解析請求參數和路徑,path只是用來匹配路徑的擴展名o(╯□╰)o,fs用來讀取本地靜態文件,剩下兩個模塊後面詳解。

接下來正式創建伺服器處理請求,請求大致分兩類,一類是靜態文件,如xxx.html、xxx.js等等,另一類是進行業務處理,如常見的增刪查改操作,這一部分操作交給路由處理,這里用了一個簡單的判斷邏輯:通過後綴名,後綴名在system.js中配置。

讀取本地文件的時候要注意一點,那就是緩存。如果客戶端發出重復請求,伺服器需要判斷文件自上次請求後是否發生了修改,如果未修改返回304,這樣可以加快瀏覽器端的響應速度。這里的判斷方式是通過判斷請求的header的if-modified-since時間和本地文件修改時間是否一致,如果一致則返回304,否則重置該時間,第一張圖是代碼,第二張圖是通過chrome調試工具看到的請求頭部時間。

如果需要進行業務處理,則交給路由處理了。首先路由引入具體的業務邏輯模塊,然後通過解析具體的路徑名來執行具體的業務邏輯,這里注意的是:由於node.js的並發特性,記得傳入回調函數來獲得相應的處理結果。
望採納 謝謝

⑥ 如何用命令行開啟nodejs搭建web伺服器

首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的v0.12版本。

安裝完成後可以通過命令行測試安裝是否成功,輸入:node -v,應該會顯示當前安裝node版本號。


本文中用到的模塊,都是nodejs核心模塊,不需要從外部下載,如果有需要,可以使用以下命令安裝:npm install xxx。


開始
下一步,新建js文件,可以命名為server.js,代碼如下:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三個參數,用來接收目錄,可為空,相對當前server.js文件的目錄名稱


// 比如使用命令 node server debug,意思就是debug文件夾與server.js文件同級
// 且你想以debug文件夾啟動web服務



http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;

⑦ Node.js 適合用來做 web 開發嗎

非同步的思維是js的特點,也是node高並發性能優勢的原因之一,你從傳統的同步語言過來可能不習慣,但是像我們這種從前端寫js過來的人就自然得像說話一樣,關鍵還是適應。熟悉之後可以用async,Promise系 (q, bluebird) 或者 eventproxy 之類的庫來改善代碼嵌套的問題。

異常的問題 - Node 核心庫的 API 拋異常大致有三種常見情況:
1. 非同步回調。按慣例,接收的回調函數第一個參數都是可能出現的異常,沒有特殊情況的話你應該把異常按照同樣的參數位置一層層傳下去,直到最頂層的回調里進行統一處理。
2. 同步版本的api會直接拋異常。所以如果確實無法避免拋錯的可能,直接 try catch,要麼就避免用同步版本。
3. Stream形態的API,必須在stream對象上添加 error 的偵聽函數,不然異常會直接拋出。

如果出現導致進程中斷的異常,說明你的代碼有邏輯層面的問題(以上幾點沒有完全做好),你應該在開發的時候發現並處理這些異常,而不是讓它們在部署環境中發生。

如果你實在避免不了問題發生,你可以用 Node 的 Domain API 來對整塊代碼的異常進行捕捉。
另外可以用進程管理工具比如 forever, pm2 或是 monit 監視應用進程,崩潰後自動重啟。

最後回到你的問題,node是否適合做web開發 - node的獨特優勢是高並發,高實時性,或者單頁富前端的web應用,比如實時聊天,游戲,另外node也是寫JSON API的最好選擇。

⑧ 如何讓 nodejs web伺服器

varhttp=require('http');

varhttpServer=http.createServer(helloWorld);

functionhelloWorld(req,res){
res.writeHead(200,{'Content-type':'text/html','charset':'utf-8'});
varreqUrl=req.url;
if(reqUrl=='/'){
res.write('<htmllang="zh-CN"><head><title>歡迎訪問NodeJsWeb應用</title></head><body><h1>歡迎訪問NodeJsWeb首頁</h1></body></html>');
res.end();
}else{
varhtml='您當前訪問的路徑是:'+reqUrl;
res.write('<htmllang="zh-CN"><head><title>歡迎訪問NodeJsWeb應用</title></head><body><h1>'+html+'</h1><ahref="/">返回首頁</a></body></html>');
res.end();
}
}

httpServer.listen(8000);

//一個簡單的nodeJs服務,windows環境下先安裝node.js.
//以上內容保存為demo.js,命令行工具在當前目錄使用nodedemo.js通過127.0.0.1:8000訪問.

⑨ 如何選擇Node.js Web開發框架

Node.js非常適用於Web開發,但是現在無論是一個網站,還是Web
App都已經成為包括很多不同部分,如前端、資料庫、業務模塊、功能模塊等等的大型項目,使用Node.js從零開始進行Web開發,也許大中型團隊能夠
勝任,但對於個人和小型團隊來說是不現實的。這時候框架就成為Web開發利器,對於個人開發來說幾乎是必不可少。那麼如何選擇Node.js
Web開發框架呢?

首先,我們必須要弄清楚的是,我們需要的是——

程序 or 框架?

程序是已經成型的應用,你需要的是為它搭建環境、添加配置,然後就可以運行起來;框架則是應用的骨架,你需要為它添加數據模型、業務邏輯,它才能成為應用,開始提供服務。

事實上,對於Web開發來說,程序和框架的區別正越來越模糊,比如幾乎婦孺皆知的Wordpress,它是一個博客程序,但它豐富的插件以及
高度的
自定義能夠支持很大程度上的二次開發,在這點上它比起一些PHP框架也並不遜色。我個人認為,如果重心在於提供服務而不是掌握技術,有WordPress
這樣的程序是沒有必要使用框架的。

可惜的是,由於Nodejs還很年輕,目前還沒有WordPress這樣的程序,因此目前在Node.js開發里,如果想做出自己想要的作品,框架是必然的選擇。如果是某些特定類型的應用,可以嘗試一些開源的程序,比如要用Nodejs做博客,有Hexo、Ghost等。

Node.js Web框架有哪些?

Node.js里的Web框架分為API框架和Web應用框架。前者能夠開發出RESTful的API,後者也能開發出RESTful API,但還包括模板、渲染等為前端所准備的功能。

API框架的使用場景是為跨平台應用提供統一的數據模型,而渲染由前端/客戶端自行解決。目前比較知名的API框架有

restify(文檔、Github、NPM)
ActionHero.js(官網、Github、NPM)
LoopBack(官網、Github、NPM)
Frisby(官網、Github、NPM)
Fortune.js(官網、Github、NPM)

Web應用框架顧名思義,就是為了打造Web應用所開發的框架。這里有兩種風格的Web應用框架。

一個是Sinatra風格,另一個是Rails風格。Sinatra和Rails都是Ruby語言的Web框架,後者的影響力更大也更為知名。這里簡單的解釋一下兩種風格是什麼意思。

Sinatra風格是指高度可配置,注重開發的自由度。代表性的Nodejs Web框架有:

Express(官網、Github、NPM)TJ大神開發,Node.js官方推薦
hapi(官網、Github、NPM)
koa.js(官網、Github、NPM)
flaliron(官網、Github、NPM)
total.js(官網、Github、NPM)
locomotive(官網、Github、NPM)

Rails風格則是指不重復自己和約定優於配置,以及嚴格遵循MVC結構開發。代表性的框架有:

Sails.js(官網、Github、NPM)
geddy(官網、Github、NPM)
CompoundJS(官網、Github、NPM) 原railswayjs

這兩種風格無所謂誰優誰劣,全憑使用者的偏好。

而在這兩種Web框架之外,還有更大型的框架,即全棧框架,其中的代表是MEAN。

⑩ nodejs當web伺服器行不行

可以呀

使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。

作為一個Web伺服器應具備以下幾個功能:

1、能顯示以.html/.htm結尾的Web頁面

2、能直接打開以.js/.css/.json/.text結尾的文件內容

3、顯示圖片資源

4、自動下載以.apk/.docx/.zip結尾的文件

5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。

6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。

引入需要用到的幾個模塊:


//http協議模塊varhttp = require('http');//url解析模塊varurl = require('url');//文件系統模塊varfs = require("fs");//路徑解析模塊varpath = require("path");

創建服務並在指定的埠監聽:


//創建一個服務varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的埠監聽服務httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});

在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。

processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//對請求的路徑進行解碼,防止中文亂碼pathName = decodeURI(pathName);//如果路徑中沒有擴展名if(path.extname(pathName) ===''){//如果不是以/結尾的,加/並作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默認的訪問頁面,但這個頁面不一定存在,後面會處理pathName +="index.html";hasExt =false;//標記默認頁面是程序自動添加的}//獲取資源文件的相對路徑varfilePath = path.join("http/webroot",pathName);//獲取對應文件的文檔類型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返迴文件內容stream.pipe(response);}else{//文件名不存在的情況if(hasExt){//如果這個文件不是程序自動添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自動添加的且不存在,則表示用戶希望訪問的是該目錄下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用戶訪問目錄varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//獲取用戶訪問路徑下的文件列表varfiles = fs.readdirSync(filedir);//將訪問路徑下的所以文件一一列舉出來,並添加超鏈接,以便用戶進一步訪問for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您訪問的目錄不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}

請求處理函數中有幾個重點需要說一下:

對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,

當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到

如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8

核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,

如果要運行demo,打開cmd切換到根目錄,運行node start 即可。