像在服務器上的操作,我們只要 require 引入的模塊,只要不是 nodejs 中的模塊,我們的下載環境都是開發環境
配置自動化:引用插件 nodemon
下載:npm i nodemon -g // 最好全局安裝
作用:之前,當我們改服務器的內容的時候,我們需要關閉服務器重新打開后,才能看到我們更改的內容;很不方便
所以,他的作用就是,當我們改服務器的東西,只要 ctrl+s 保存后,服務器的東西自動更改,省的我們關閉服
務器,然后在開啟服務器這樣子
使用方法:nodemon "文件名" // 之前都是 node "文件名" 來開啟服務器,現在使用他即可
模板引擎:引用插件 ejs render 方法的使用 及 引用文件 renderFile 方法的使用
下載:npm i ejs
作用:之前我們用的 underscore 里面的 template 特別爽,模板的寫法,現在 nodejs 也為我們提供了跟 underscore
一樣的東西,我們可以 <% js代碼 %> <%=引入數據 %>
使用方法: render() 第一個參數(必填):模板內容 第二個參數(必填):對象傳參
第一種:
let ejs = require("ejs");
let st = "hello";
let dt = "<%=data %>world";
let ft = ejs.render(dt,{data:st})
console.log(ft) // 打印的結果就是 helloworld
第二種:
let ejs = require("ejs");
let st = {data:hello};
let dt="<%=data %>world";
let ft=ejs.render(dt,st);
console.log(ft) // 打印的結果就是 helloworld
以上這兩種寫法的區別,相信大家也看到了,就是 ejs.render() 中 第二個參數 必須是一個對象,只不過這個對象是什么時候寫而已;
renderFile() 的使用方法 將 文件 模板進行傳參 有三個參數 第一個:文件 第二個:傳參 第三個:回調函數
我們在一個 ejs 文件上寫上內容
看到沒,與我們的 html 文件類型一致,然后,我們需要進行的操作 就是將 數據傳給 data,最終將內容展示出來
res.write() 往響應體里面些東西
中間件:兩個同樣的功能,誰在前執行誰
路由:對網址的偽裝(我的理解)
我們作為一個老實人,就會把具體的文件地址暴露出來,但是這樣不好,別人也可以通過文件地址來訪問我們的東西,包括秘密的文件,這當
然不是一個好事情,所以我們需要對網址進行處理,讓他們不再通過網絡地址也能訪問我們的內容,這樣一來,問題就解決了,老板也會加個雞腿
案例:
我們在 a.html 的內容是這樣的
來吧,讓我們看看效果
路由傳參
我們在網址上是這樣寫的:http://127.0.0.1:3000/a/12 (俗稱:前端的請求)
但是后台的匹配模式是這樣的:"/a/:id" 這樣的寫法,我們通過 req.params 得到的結果為 id=12
但是:以上的寫法:會不會顯得 low ,
所以:讓我們來使用高大上的東西:express 插件 這樣的插件:使我們少寫很多東西之外呢,也會讓我們寫的簡單了不少;
下載: npm i express --save
他的功能也是特別強大,我們來看一看吧
第一個創建服務器:
let express = require("express");
let app = express()
app.listen(3000) // 這樣我們便配好了一個 localhost:3000 的服務器
第二個:創建根目錄
app.use(express.static("./www")); // 這樣我們就創建了一個 www 的根目錄,且不需要我們在進行文件處理,因為 express 已經幫我們處理好了
第三個:路由:
說路由之前,我們先來說說前台的東西
1. app.get() 代表所有 get 方式發送的請求,都有它來接收
2. app.post() 代表所有 post 方式發送的請求,都有它來接收
3. app.all() 不管是 get 方式,還是 post 方式,都可以接收他的請求
對於請求的解析也是一件特別注意的事情
如 get 方式 獲取的參數
這種方式
let url = require("url");
let querystring = require("querystring"); // 將網絡地址參數進行解析
let obj = url.parse(req.url) // 這個是解析網絡地址的,在上面的路由案例出現過
let query = obj.query; // 這里我們便能得到傳參的字符串形式
let cont = querystring.parse(query) // 這里我們就可以將字符串形式轉化成對象的形式
get 方式通過 url 傳輸,只要我們將 url 種的 query 解析成對象,就可以獲取參數
說實話,get 是 最簡單的 ,post 可能需要處理的東西多一點;
post 解析:需要下載插件 body-parser 且跟網絡地址沒有關系
下載:npm i body-parser --save
這種方式
let bodyParser = require("body-parser");
let urlencodedParser = bodyParser
接下來實現路由傳參
效果圖