1. 如何用nodejs搭建web伺服器
創建一個記事本將下面的代碼復制進去 保存為app.js
var http = require('http');//引入響應頭
http.createServer(function (request, response) {
//參數一是與請求相關的對象
//參數二是與響應有關的對象
// 發送 HTTP 頭部
// HTTP 狀態值: 200 : OK
// 內容類型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 發送響應數據 "Hello World"
response.end('Hello World\n');
}).listen(8888);//監聽埠
// 終端列印如下信息
console.log('Server running at http://127.0.0.1:8888/');
以下以我的電腦上的路徑為准 我是將app.js 保存在E:\NODE這個文件夾下面
接下來就是運行了打開cmd
第一步:E:
第二步:cd NODE //CD是 命令行改變目錄的命令
第三步:node app.js
這個是運行效果接下來訪問localhost:8888就可以看到hollo word
建議多看一些node的模塊 比如 express和session mysql之類的模塊
2. nodejs搭建web伺服器就是這么簡單!
Node.js 是一個基於 Chrome V8 引擎的 javaScript 運行環境。 Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。Node.js 的包管理器 npm,是全球最大的開源庫生態系統。(nodejs官網上的介紹),正如官網上介紹的那樣,nodejs確實很牛!怎麼個牛法?看看下面的代碼就知道了。
//引入http模塊
var http = require("http");
//設置主機名
var hostName = 飗.0.0.1'
//設置埠
var port = 8080;
//創建服務
var server = http.createServer(function(req,res){
res.setHeader('Content-Type','text/plain');
res.end("hello nodejs");
});
server.listen(port,hostName,function(){
console.log(`伺服器運行在http://${hostName}:${port}`);
});
短短幾行代碼就把一個簡單的web伺服器搭建完成了,為了驗證效果,我們在瀏覽器請求,結果如下
運行成功!
到此為止,一個web伺服器就建立成功了! 沒錯就是這么簡單,然後我們就可以寫個html界面愉快的玩耍了,哈哈哈!果斷的寫了一個html頁面來請求一下我們的web伺服器。
代碼簡單,點擊p獲取數據並將伺服器返回的數據展示。好了,我們運行一下demo.html文件,我擦來!居然出現了……
很明顯,通過jquery請求不到數據,這是因為跨域請求的原因。我們的web伺服器並不支持跨域請求,所以報錯了。解決方式:在伺服器的響應頭文件里加上如下代碼:
再次重啟伺服器,運行demo.html,顯示結果很是令人欣喜!
通常請求伺服器都會拼接參數的,最常用的就是get請求,post請求。很明顯,我們現在的代碼還不能支持。express框架很好的封裝了nodejs的http模塊,使我們用起來非常的簡單。
引入express :$ cnpm install express –save
使用方式變化不大,通過express()方法開啟服務,然後在通過get方法來設置匹配參數的路由,通過在回調函數的req中可以獲取請求參數和地址。post請求也是類似,不過有不同的是,post請求在獲取參數的時候要引入body-parser 中間件,用於處理 JSON, Raw, Text 和 URL 編碼的數據。
運行結果:
完整的get以及post請求就是以上了。下一篇文章會結果fs文件模塊介紹http是如何返迴文件的,敬請期待!!
學習從來不是一個人的事情,要有個相互監督的夥伴,想要學習或交流前端問題的小夥伴可以私信「學習」小明加群獲取2019web前端最新入門資料,一起學習,一起成長!
3. 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);
4. 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方式請求 "/"。詳細的路由方法參考鏈接: 路由方法
5. nodejs-koa2(mvc模式)前後端分離 前端設計
前後端分離,前端nodejs運行環境,使用koa2集成負責資源分配與用戶交互,實現token驗證用戶身份,路由控制。等!
自行 網路 解決;
"program": "${workspaceFolder}app.js"
此處就是是將app.js作為啟動文件。${workspaceFolder}代表根目錄,vsc啟動時會在根目錄下找到並載入app.js文件。
參數介紹: name 項目名稱、 version 版本號、 description 項目描述、 main 項目啟動文件、 scripts 啟動快捷設置, author 作者, dependencies 第3方中間件名稱及版本。
最重要的
「 dependencies 」這里添加一些要用到的包,以上是這次要用到的所有的包,版本自己更改。
「 scripts 」這里是一些nodejs的便捷命令,上線的時候會用到,直接在終端中,package.json同級目錄 ,執行『npm start』 即 可啟動app.js。
別的沒啥太大作用瞎寫即可。
啟動相關配置,封裝到config/init.js中,啟動文件直接引用即可
3-6-1、init.js項目核心。
異常友好處理方法封裝
路由配置
視圖渲染
核心集成
3-6-2、config.js項目參數配置。為什麼不用json文件 因為json不能加註釋
3-6-3、token.js項目token相關方法封裝。
執行後項目結構會增加兩個文件
新增
src/hello.js。
views/index.html
瀏覽器訪問: http://127.0.0.1:3000/koa/login
輸入值獲取token
獲取的token如圖:
先不用帶token進行訪問: http://127.0.0.1:3000/koa/ hello/jiaobaba,被token攔截,返回401
帶上token訪問: http://127.0.0.1:3000/koa/ hello/jiaobaba
測試頁面渲染,及跳轉html頁面,直接訪問 http://127.0.0.1:3000/koa /views
結束!!!!!!
需要源碼聯系我
6. nodejs 中express框架中request有哪些屬性和方法
最近本人在學習開發NodeJs,使用到express框架,對於網上的學習資料甚少,因此本人會經常在開發中做一些總結。
express獲取參數有三種方法:官網介紹如下
Checks route params (req.params), ex: /user/:id
Checks query string params (req.query), ex: ?id=12
Checks urlencoded body params (req.body), ex: id=
1、例如:127.0.0.1:3000/index,這種情況下,我們為了得到index,我們可以通過使用req.params得到,通過這種方法我們就可以很好的處理Node中的路由處理問題,同時利用這點可以非常方便的實現MVC模式;
2、例如:127.0.0.1:3000/index?id=12,這種情況下,這種方式是獲取客戶端get方式傳遞過來的值,通過使用req.query.id就可以獲得,類似於PHP的get方法;
3、例如:127.0.0.1:300/index,然後post了一個id=2的值,這種方式是獲取客戶端post過來的數據,可以通過req.body.id獲取,類似於PHP的post方法;
下面舉例介紹下這三個方法:
如下一個test.html代碼
<form action="/index" method="get">
<input type="text" name="login_name"/>
<input type="submit" value="Sign In" />
</form>
在nodeJs中我們要自定義HTTP,因此創建index.js
var app = require('express').createServer();
app.get('/:key', function(req, res){
console.log(req.params.key);//輸出index
console.log(req.query.login_name);//輸出表單get提交的login_name
res.send('great you are right for get method!');//顯示頁面文字信息
});
app.post('/:key', function(req, res){
<pre name="code" class="javascript"> console.log(req.params.key);//輸出index
console.log(req.body.login_name);//輸出表單post提交的login_name
res.send('great you are right for post method!');//顯示頁面文字信息
});app.listen(3000);
之後運行node index.js就可以看到本效果,當然前提是你要先訪問test.html,至於如何通過express訪問一個html文件我就不詳細描述了,可以參考如下代碼:
global.fs=require('fs');
var realpath = VIEW + "test.html";
var file = fs.readFileSync(realpath);
res.end(file);