導航:首頁 > 編程語言 > nodejsrouter

nodejsrouter

發布時間:2023-12-31 15:36:14

『壹』 express nodejs怎麼使用

Express 是一個簡潔、靈活的 node.js Web 應用開發框架, 它提供一系列強大的特性,幫助你創建各種 Web 和移動設備應用。
1.express組織結構
app demo
|---node_moles------用於安裝本地模塊。
|---public------------用於存放用戶可以下載到的文件,比如圖片、腳本、樣式表等。
|---routes------------用於存放路由文件。
|---views-------------用於存放網頁的模板。
|---app.js------------應用程序的啟動腳本。
|---package.json------項目的配置文件。
2..創建express伺服器

//app.js文件
var express = require('express');
var app = express();
//指定更目錄顯示的內容
app.get('/', function(req, res){
res.send('Hello World');
});
//指定監聽埠
var server = app.listen(3000, function() {
console.log('Listening on port %d', server.address().port);
});
運行nodejs應用程序
/>node app.js
3.中間件
中間件(middleware)就是處理HTTP請求的函數.
當一個HTTP請求進入伺服器,伺服器實例會調用第一個中間件,完成後根據設置,決定是否再調用下一個中間件.
中間件的參數為:
.四個的時候---第一個為錯誤處理,第二個為客戶請求request,第三個為伺服器響應respond,第四個為next中間件. 如function(error, request, response, next){}
.三個的時候---第一個客戶請求request,第二個為伺服器響應respond,第三個為next中間件. 如function(request, response, next){}
.兩個的時候---第一個客戶請求request,第二個為伺服器響應respondfunction. 如function(request, response){}
4.使用中間件use
use是express調用中間件的方法,它返回一個函數.

app.use(function(request, response) {
response.writeHead(200, { "Content-Type": "text/plain" });
response.end("Hello world!\n");
});
5.錯誤內容顯示

app.use(express.bodyParser());//使用body參數
app.use(express.methodOverride());//使用函數覆蓋
app.use(app.router);//使用路由
app.use(function(err, req, res, next){
console.error(err.stack);
res.send(500, 'Something broke!');
});//錯誤內容顯示
6.路由
express路由的方式有多種,這里舉例常用的幾種:
.app.use('/', middleware);//get/post時,對於路徑/的處理
.app.get("/", middleware);//http中get時,對於路徑/的處理
.app.post("/", middleware);//http中post時,對於路徑/的處理
.app.put("/", middleware);//http中put時,對於路徑/的處理
.app.delete("/", middleware);//http中delete時,對於路徑/的處理
7.路徑通配符*
.*表示所有路徑

app.get("*", function(request, response) {
response.end("404!");
});//所有路徑都返回404
.:捕獲路徑內容

app.get("/hello/:who", function(req, res) {
res.end("Hello, " + req.params.who + ".");
});//如"/hello/alice」網址,網址中的alice將被捕獲,作為req.params.who屬性的值
8.設置環境變數set
set用於指定變數的值.
app.set("view engine", "ejs");//使用ejs作為模版
9.response對象方法
.重定向redirect
response.redirect("/hello/anime");//重定向到/hello/anime
.發送文件sendFile
response.sendFile("/path/to/anime.mp4");
.渲染網頁模板render,即把變換的內容載入到網頁.
response.render("index", { message: "Hello World" });//將message變數傳入index模板,值為"Hello World"渲染成HTML網頁
10.requst對象方法
.獲取客戶ip地址:request.ip
.獲取上傳的文件:request.files
11.啟動腳本package.json
package.json用於指定app信息,nodejs版本號和其他組件的依賴關系

{
"name": "demo",
"description": "My First Express App",
"version": "0.0.1",
"dependencies": {
"express": "3.x"
}
}
12.app入口app.js
app.js主要包含http的創建,基本路由,監聽埠號
13.動態網頁模板views
views文件夾,用於存放所有的放網頁模板.

//app.js
app.get('/', function(req, res) {
res.render('index',{title:"最近文章"});
});
//index.js
this is <%=title%>!
14.指定靜態網頁目錄
//app.js
app.use(express.static('public'));//指定靜態網頁目錄,當瀏覽器發出非HTML文件請求時,伺服器端就到public目錄尋找這個文件
如:<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">, 伺服器端就到public/bootstrap/css/目錄中尋找bootstrap.css文件

『貳』 NodeJS項目基礎結構簡單介紹

按照常規,去執行npm start

或者在Terminal中手動輸入命令,結果如下:

可以看到是執行了test/package.json文件中的 start 命令,初始packagejson.json文件內容如下:

執行 start ,對應的命令為 node ./bin/www 並在命令行執行。現在項目已經啟動成功了,可以打開瀏覽器輸入 localhost:3000 查看一下,但是本次側重點在於項目啟動時候發生的完整的過程。所以……

那麼我們需要看一下 ./bin/www 文件

通過 require() 來引入本地安裝的包,這里載入了三個包 app、debug 、http ,主要關注一下app.js

可以看到app載入的為該項目基礎組件,核心為 var app = express(); 看一下express.js

將app用到的中間件等暴露出來,所以 app = express() 實際上就是載入應用基礎組件,生成項目的根節點(當然這個節點是復合的)。所以在app.js中,進行的是載入應用基礎組件並進行應用設置初始化(包含了視圖目錄設置、頁面模板引擎設置、中間件的設置、靜態資源目錄設置以及錯誤捕捉相關內容)。

繼續回到 www.js ,同樣將debug配置、http相關組件進行載入。繼而是默認埠號的設定。通過http.createServer(app),創建應用服務相關信息,並對埠進行監聽。

瀏覽器輸入 localhost:3000

控制台顯示:

說明在以 GET 方式請求URI為 "/" 的資源,並以 GET 方式請求 /stylesheets/style.css 資源,這個發生在app.js中我們設定的資源請求。

我們來看下 ./routes/index 文件

即定義網站主頁的路由

使用 express.Router 類創建模塊化、可掛載的路由句柄(簡稱:路由模塊)。Router 實例是一個完整的中間件和路由系統。最終,在應用中載入路由模塊app.use('/', indexRouter);

通過 res.render 對視圖進行渲染,上述為對index.ejs的渲染。 ps:在app.js中已經設定了views的所在目錄 。語法: res.render(view [,locals] [,callback])

示例:

區別:路由句柄

為請求處理提供多個回調函數,其行為類似 中間件 。唯一的區別是這些回調函數有可能調用 next('route') 方法跳至下一個同路由的回調函數而略過其他路由回調函數。路由句柄有多種形式,可以是一個函數、一個函數數組,或者是兩者混合。

使用一個回調函數處理路由:

使用多個回調函數處理路由(記得指定 next 對象):

使用回調函數數組處理路由:

混合使用函數和函數數組處理路由:

區別:路由方法

一個路由示例:

路由方法源於 HTTP 請求方法,和 express 實例相關聯。

獲取express的一個實例 app ,通過路由方法(和HTTP請求對應),GET方式請求 "/"。詳細的路由方法參考鏈接: 路由方法

『叄』 nodejs中報以下錯誤的

.

Mole這里,
看看有這樣的代碼沒得
mole.exports=router;

『肆』 nodejs express 路由設置網頁跳轉

1、首先創建app.js,輸入:

varexpress=require("express")

varport=process.env.PORT||3000

varapp=express()

app.set('views','./views')

app.set('viewengine','jade')

app.listen(port);

『伍』 nodejs router.get怎麼在裡面調用方法

做過web開發的朋友對get和post 的請求的區別肯定十分了解,我就不多講述了。
下面主要介紹一下get和post請求在node中使用的不同
場景就是單純大登錄操作:傳遞兩個參數用戶名和密碼

get請求:
前台:
function login() {
var name = $('#name').val();
var password = $('#password').val();
if (!name || !password) {
alert('用戶名和密碼都不能為空');
return;
}
$.ajax(
{
type: 'get',
url: '/login',
data: {
name: name,
password: password
},
dataType: 'json',
success: function (data) {
if (data) {
}
},
error: function () {
alert('登錄失敗!');
return;
}
});
}
後台:
var express = require('express');
var router = express.Router();
router.get('/login', function (req, res, next) {
var name = req.query.name;
var pass = req.query.password;
console.log('name:' + name);
console.log('pass:' + pass);
if (name == 'sis' && pass == '1') {
res.send('1');
}
res.end('is over');
});
post請求:
前台:
function login() {
var name = $('#name').val();
var password = $('#password').val();

if (!name || !password) {
alert('用戶名和密碼都不能為空');
return;
}
$.ajax(
{
type: 'post',
url: '/login',
data: {
name: name,
password: password
},
dataType: 'json',
success: function (data) {
if (data) {
}
},
error: function () {
alert('登錄失敗!');
return;
}
});
}
後台:
var express = require('express');
var router = express.Router();
router.post('/login', function (req, res, next) {
var name = req.body.name;
var pass = req.body.password;
console.log('name:' + name);
console.log('pass:' + pass);
if (name == 'sis' && pass == '1') {
res.send('1');
}
res.end('is over');
});
從文章中可以明顯看出get和post請求在node中區別,使用get請求時一定要使用get方法進行監聽,並且獲取傳遞過來的參數是要使用query,使用post請求時一定要使用post方法進行監聽,同時獲取數據是要使用body。至於為什麼這樣做我暫時不是很清楚,如果我搞清楚了會及時補充上去,歡迎大家補充。
順帶補充,還有一種方法傳遞參數給server,就是使用路徑的方式,可以利用web server的http routing來解析,常見於各種web Framework。這不算是傳統標准規范的做法,是屬於htto routing的延伸使用
router.get('/login', function(req, res) {
console.log(req.params.name);
console.log(req.params.password);
});

閱讀全文

與nodejsrouter相關的資料

熱點內容
630升級工程武器 瀏覽:936
用換機助手接收的軟體文件在哪找 瀏覽:282
閱達app一教一輔五年級有哪些 瀏覽:7
win10系統用f2調節音量 瀏覽:19
壓縮文件密碼器 瀏覽:840
線下活動數據分析有哪些 瀏覽:314
助聽器插片式編程線如何連接 瀏覽:293
怎麼刪除系統休眠文件 瀏覽:914
搜索文件內容中包含的文字並替換 瀏覽:542
微信相冊程序圖標 瀏覽:714
win8怎麼顯示文件格式 瀏覽:547
文件伺服器中毒 瀏覽:721
如何修改網站訪問次數 瀏覽:518
mdfldf是什麼文件 瀏覽:569
文件在桌面怎麼刪除干凈 瀏覽:439
馬蘭士67cd機版本 瀏覽:542
javaweb爬蟲程序 瀏覽:537
word中千位分隔符 瀏覽:392
迷你編程七天任務的地圖怎麼過 瀏覽:844
word2003格式不對 瀏覽:86

友情鏈接