国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這有一篇Nodejs+Express的初級(jí)指南……

txgcwm / 2728人閱讀

摘要:程序執(zhí)行完畢管道流管道提供了一個(gè)輸出流到輸入流的機(jī)制。當(dāng)有用戶連接了就觸發(fā)一個(gè)內(nèi)部事件,通過非阻塞事件驅(qū)動(dòng)機(jī)制,讓程序宏觀上也是并行的。使用,一個(gè)內(nèi)存的服務(wù)器,可以同時(shí)處理超過萬用戶的連接。沒有行列的概念。

寫在前面:

</>復(fù)制代碼

  1. 這是小生跟著視頻學(xué)習(xí)的總結(jié),文末貼的有地址,很容易上手,自己都跟著敲了一遍,覺得不錯(cuò),
  2. 值得總結(jié)安利一下,歡迎糾錯(cuò)……
一、 Nodejs創(chuàng)建第一個(gè)應(yīng)用

引入 http 模塊

</>復(fù)制代碼

  1. var http = require("http");

創(chuàng)建服務(wù)器

接下來我們使用 http.createServer() 方法創(chuàng)建服務(wù)器,并使用 listen 方法綁定 8888 端口。 函數(shù)通過 request, response 參數(shù)來接收和響應(yīng)數(shù)據(jù)。

</>復(fù)制代碼

  1. var http = require("http");
  2. http.createServer(function (request, response) {
  3. // 發(fā)送 HTTP 頭部
  4. // HTTP 狀態(tài)值: 200 : OK
  5. //設(shè)置 HTTP 頭部,狀態(tài)碼是 200,文件類型是 html,字符集是 utf8 response.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
  6. // 發(fā)送響應(yīng)數(shù)據(jù) "Hello World"
  7. res.end("哈哈哈哈,我買了一個(gè) iPhone" + (1+2+3) + "s"); }).listen(8888 );
  8. // 終端打印如下信息
  9. console.log("Server running at http://127.0.0.1:8888/");

運(yùn)行程序

node server.js

二、HTTP模塊, URL模塊

2.1 HTTP 模塊的使用

</>復(fù)制代碼

  1. //引用模塊
  2. var http = require("http");
  3. //創(chuàng)建一個(gè)服務(wù)器,回調(diào)函數(shù)表示接收到請(qǐng)求之后做的事情
  4. var server = http.createServer(function(req,res){ //req 參數(shù)表示請(qǐng)求,res 表示響應(yīng)
  5. // 設(shè)置一個(gè)響應(yīng)頭
  6. res.writeHead(200,{"Content-Type":"text/htm l;c harset=UTF8"});
  7. console.log("服務(wù)器接收到了請(qǐng)求" + req.url);
  8. res.end(); // End 方法使 Web 服務(wù)器停止處理腳本并返回當(dāng)前結(jié)果
  9. });
  10. //監(jiān)聽端口
  11. server.listen(3000,"127.0.0.1");

2.2、URL 模塊的使用

</>復(fù)制代碼

  1. url.parse() 解析 URL
  2. url.format(urlObject) //是上面 url.parse() 操作的逆向操作
  3. url.resolve(from, to) 添加或者替換地址

url.parse()

url.format()

url.resolve()

三、 Nodejs 自啟動(dòng)工具 supervisor

supervisor 會(huì)不停的 watch 你應(yīng)用下面的所有文件,發(fā)現(xiàn)有文件被修改,就重新載入程序文件這樣就實(shí)現(xiàn)了部署,修改了程序文件后馬上就能看到變更后的結(jié)果。麻麻再也不用擔(dān)心我的重啟 nodejs 了!

首先安裝 supervisor

</>復(fù)制代碼

  1. npm install -g supervisor

使用 supervisor 代替 node 命令啟動(dòng)應(yīng)用

三、 Nodejs中的 FS 模塊

fs.stat 檢測(cè)是文件還是目錄

</>復(fù)制代碼

  1. fs.stat("hello.js", (error, stats) =>{
  2. if (error){
  3. console .log(error)
  4. } else {
  5. console .log(stats)
  6. console .log(`文件: ${stats.isFile()}` )
  7. console .log(`目錄: ${stats.isDirectory()}` )
  8. }
  9. })

fs.mkdir 創(chuàng)建目錄

</>復(fù)制代碼

  1. const fs = require("fs")
  2. fs.mkdir("logs", (error) => {
  3. if (error){
  4. console .log(error)
  5. } else {
  6. console .log("成功創(chuàng) 建目錄:logs" )
  7. }
  8. })

fs.writeFile 創(chuàng)建寫入文件

</>復(fù)制代碼

  1. fs.writeFile("logs/hello.log", "您好 ~
  2. ", (error) => {
  3. if(error) {
  4. console .log(error)
  5. } else {
  6. console .log("成功寫入文件" )
  7. }
  8. })

fs.appendFile 追加文件

</>復(fù)制代碼

  1. fs.appendFile("logs/hello.log", "hello ~
  2. ", (error) => {
  3. if(error) {
  4. console .log(error) }
  5. else {
  6. console .log("成功寫入文件" )
  7. }
  8. })

fs.readFile 讀取文件

</>復(fù)制代碼

  1. const fs = require("fs")
  2. fs.readFile("logs/hello.log", "utf8", (error, data) =>{
  3. if (error) {
  4. console .log(error)
  5. } else {
  6. console .log(data)
  7. }
  8. })

fs.readdir 讀取目錄

</>復(fù)制代碼

  1. const fs = require("fs")
  2. fs.readdir("logs", (error, files) => {
  3. if (error) {
  4. console .log(error)
  5. } else {
  6. console .log(files)
  7. }
  8. })

fs.rename 重命名

</>復(fù)制代碼

  1. const fs = require("fs")
  2. fs.rename("js/hello.log", "js/greeting.log", (error) =>{
  3. if (error) {
  4. console .log(error)
  5. } else {
  6. console .log(" 重命名成功" )
  7. }
  8. })

fs.rmdir 刪除目錄

</>復(fù)制代碼

  1. fs.rmdir("logs", (error) =>{
  2. if (error) {
  3. console .log(error)
  4. } else {
  5. console.log("成功的刪除了目錄:logs")
  6. }
  7. })

fs.unlink 刪除文件

</>復(fù)制代碼

  1. fs.unlink(`logs/${file}`, (error) => {
  2. if (error) {
  3. console .log(error)
  4. } else {
  5. console.log(`成功的刪除了文件: ${file}`)

})

</>復(fù)制代碼

  1. 10. fs.createReadStream 從文件流中讀取數(shù)據(jù)

const fs = require("fs")
var fileReadStream = fs.createReadStream("data.json")
let count=0;
var str="";
fileReadStream.on("data", (chunk) => {

</>復(fù)制代碼

  1. console.log(`${ ++count } 接收到:${chunk.length}`);
  2. str += chunk;

})
fileReadStream.on("end", () => {

</>復(fù)制代碼

  1. console.log("--- 結(jié)束 ---");
  2. console.log(count );
  3. console.log(str );

})
fileReadStream.on("error", (error) => {

</>復(fù)制代碼

  1. console .log(error)

})

</>復(fù)制代碼

  1. 11. fs.createWriteStream 寫入文件

var fs = require("fs");
var data = "我是從數(shù)據(jù)庫獲取的數(shù)據(jù),我要保存起來";
// 創(chuàng)建一個(gè)可以寫入的流,寫入到文件 output.txt 中
var writerStream = fs.createWriteStream("output.txt");
// 使用 utf8 編碼寫入數(shù)據(jù)
writerStream .write(data ,"UTF8" ); // 標(biāo)記文件末尾
writerStream .end();
// 處理流事件 --> finish 事件
writerStream.on("finish", function() {
/finish - 所有數(shù)據(jù)已被寫入到底層系統(tǒng)時(shí)觸發(fā)。/

</>復(fù)制代碼

  1. console .log("寫入完成。" );

});
writerStream.on("error", function(err){

</>復(fù)制代碼

  1. console.log(err.stack);

});
console .log("程序執(zhí)行完畢" );

</>復(fù)制代碼

  1. 12. 管道流 管道提供了一個(gè)輸出流到輸入流的機(jī)制。
  2. 通常我們用于從一個(gè)流中獲取數(shù)據(jù)并將數(shù)據(jù)傳遞到另外一個(gè)流中。
  3. ![](https://user-gold-cdn.xitu.io/2018/12/14/167acf76097adf62?w=552&h=426&f=png&s=31527)
  4. 如上面的圖片所示,我們把文件比作裝水的桶,而水就是文件里的內(nèi)容,我們用一根管子(pipe )連接兩個(gè)桶使得水從一個(gè)桶流入另一個(gè)桶,這樣就慢慢的實(shí)現(xiàn)了大文件的復(fù)制過程。以下實(shí)例我們通過讀取一個(gè)文件內(nèi)容并將內(nèi)容寫入到另外一個(gè)文件中。

var fs = require("fs");
// 創(chuàng)建一個(gè)可讀流
var readerStream = fs.createReadStream("input.txt"); // 創(chuàng)建一個(gè)可寫流
var writerStream = fs.createWriteStream("output.txt");
// 管道讀寫操作
// 讀取 input.txt 文件內(nèi)容,并將內(nèi)容寫入到 output.txt 文件中
readerStream.pipe(writerStream );
console.log("程 序執(zhí)行完畢" );

</>復(fù)制代碼

  1. ### 四、 Nodejs 創(chuàng)建一個(gè) WEB 服務(wù)器。
  2. 1. server.js

// 引入http模塊
var http = require("http");
// 引入fs模塊
var fs = require("fs");
// 引入path模塊
var path = require("path");
// 引入url模塊
var url = require("url");
// 引入自定義的解析模塊;
var mime = require("./model/getMimeFile.js");
http.createServer(function (req,res) {

</>復(fù)制代碼

  1. var pathName = url.parse(req.url).pathname;
  2. res.writeHead(200, {"Content-Type": " " + mime.getMime(fs, path.extname(pathName))+ "; charset=utf-8"});
  3. if(pathName == "/") pathName = "/index/html";
  4. if(pathName !== "/favicon.ico") {
  5. // 文件操作去讀取static下面的index.html
  6. fs.readFile("static/"+pathName,function (err,data) {
  7. if(err){
  8. fs.readFile("static/404.html",function (err,data404) {
  9. res.write(data404);
  10. res.end();
  11. })
  12. } else {
  13. // console.log(data);
  14. res.write(data);
  15. res.end();
  16. }
  17. })
  18. }

}).listen("8002");

</>復(fù)制代碼

  1. 2. getMimeFile.js

exports.getMime = function (fs,extname) {

</>復(fù)制代碼

  1. var data = fs.readFileSync("./mime.json");
  2. var Mimes = JSON.parse(data.toString())
  3. return Mimes[extname] || "text/html";

}

</>復(fù)制代碼

  1. ### 五、 Nodejs 的非阻塞 I/O、異步、事件驅(qū)動(dòng)
  2. 1. Nodejs的單線程 非阻塞I/O事件驅(qū)動(dòng)

在 Java、PHP 或者.net 等服務(wù)器端語言中,會(huì)為每一個(gè)客戶端連接創(chuàng)建一個(gè)新的線程。
而每個(gè)線程需要耗費(fèi)大約 2MB 內(nèi)存。也就是說,理論上,一個(gè)8GB 內(nèi)存的服務(wù)器可以同時(shí) 連接的最大用戶數(shù)為 4000 個(gè)左右。
要讓 Web 應(yīng)用程序支持更多的用戶,就需要增加服務(wù)器 的數(shù)量,而 Web 應(yīng)用程序的硬件成本當(dāng)然就上升了。
Node.js 不為每個(gè)客戶連接創(chuàng)建一個(gè)新的線程,而僅僅使用一個(gè)線程。
當(dāng)有用戶連接了,就觸發(fā)一個(gè)內(nèi)部事件,通過非阻塞 I/O、事件驅(qū)動(dòng)機(jī)制,讓 Node.js 程序宏觀上也是并行的。
使用 Node.js,一個(gè) 8GB 內(nèi)存的服務(wù)器,可以同時(shí)處理超過 4 萬用戶的連接。

</>復(fù)制代碼

  1. 2. Nodejs 回調(diào)處理異步

//正確的處理異步:
function getData(callback){ //模擬請(qǐng)求數(shù)據(jù)

</>復(fù)制代碼

  1. var result="";
  2. setTimeout(function (){
  3. result="這是請(qǐng)求到的 數(shù)據(jù)";
  4. callback(result);
  5. },200);

}
getData(function(data){

</>復(fù)制代碼

  1. console.log(data);

})

</>復(fù)制代碼

  1. 3. Nodejs events 模塊處理異步

// 引入 events 模塊
var events = require("events");
var EventEmitter = new events.EventEmitter() ; /實(shí)例化事件對(duì)象/
EventEmitter.on("toparent",function(){

</>復(fù)制代碼

  1. console.log("接收到了廣播事件");

})
setTimeout(function (){

</>復(fù)制代碼

  1. console.log("廣播");
  2. EventEmitter.emit("toparent"); /*發(fā)送廣播*/

},1000)

</>復(fù)制代碼

  1. ### 六、 Nodejs的 ejs 模板引擎
  2. 1. 路由
  3. 官方解釋:
  4. 路由(Routing)是由一個(gè) URI(或者叫路徑)和一個(gè)特定的 HTTP 方法(GET、POST 等)組成 的,涉及到應(yīng)用如何響應(yīng)客戶端對(duì)某個(gè)網(wǎng)站節(jié)點(diǎn)的訪問。
  5. ![](https://user-gold-cdn.xitu.io/2018/12/14/167ad0dc9d1bfc6c?w=800&h=468&f=png&s=47406)
  6. 2. 初識(shí) EJS 模塊引擎
  7. 文檔: https://www.npmjs.com/package/ejs
  8. 安裝 :
  9. npm install ejs –save / cnpm install ejs --save
  10. Nodejs中使用:
  11. ejs.renderFile(filename, data, options, function(err, str){
  12. str => Rendered HTML string
  13. });
  14. EJS 常用標(biāo)簽
  15. * <%%>流程控制標(biāo)簽
  16. * <%=%>輸出標(biāo)簽(原文輸出HTML標(biāo)簽)
  17. * <%-%>輸出標(biāo)簽(HTML會(huì)被瀏覽器解析)

</>復(fù)制代碼

  1. 在客戶端和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),兩種最常被用到的方法是:GET 和 POST。
  2. GET - 從指定的資源請(qǐng)求數(shù)據(jù)。(一般用于獲取數(shù)據(jù))
  3. POST - 向指定的資源提交要被處理的數(shù)據(jù)。(一般用于提交數(shù)據(jù))**
  4. 獲取 GET 傳值:
  5. var urlinfo = url.parse(req.url,true);
  6. urlinfo.query();
  7. 獲取 POST 傳值:

var postData = ""; // 數(shù)據(jù)塊接收中
req.on("data", function (postDataChunk) {

</>復(fù)制代碼

  1. postData += postDataChunk;

});
// 數(shù)據(jù)接收完畢,執(zhí)行回調(diào)函數(shù)
req.on("end", function () {

</>復(fù)制代碼

  1. try {
  2. postData = JSON.parse(postData);
  3. }
  4. catch (e) { }
  5. req.query = postData;
  6. console.log(querystring .parse(postData));

});

</>復(fù)制代碼

  1. ## 七、 MongoDb 數(shù)據(jù)庫介紹、安裝、使用
  2. 1. 數(shù)據(jù)庫和文件的主要區(qū)別

1、 數(shù)據(jù)庫有數(shù)據(jù)庫表、行和列的概念,讓我們存儲(chǔ)操作數(shù)據(jù)更方便
2、 數(shù)據(jù)庫提供了非常方便的接口,可以讓 nodejs、php java .net 很方便的實(shí)現(xiàn)增加修改刪除功能。

</>復(fù)制代碼

  1. 2. NoSql 介紹

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是 SQL”,
它指的是非關(guān)系型的數(shù)據(jù)庫,是以key-value形式存儲(chǔ),和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫不一樣,
不一定遵循傳統(tǒng)數(shù)據(jù)庫的一些基本要求.

</>復(fù)制代碼

  1. 3. 什么時(shí)候建議使用 NoSql

1、對(duì)數(shù)據(jù)庫高并發(fā)讀寫的需求
2、對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問的需求
3、對(duì)數(shù)據(jù)庫的高可擴(kuò)展性和高可用性的需求

</>復(fù)制代碼

  1. 4. NoSql 和傳統(tǒng)數(shù)據(jù)庫簡(jiǎn)單對(duì)比

非結(jié)構(gòu)型數(shù)據(jù)庫。沒有行、列的概念。用 JSON 來存儲(chǔ)數(shù)據(jù)。
集合就相當(dāng)于“表 ”,文檔就相當(dāng)于“行”。

</>復(fù)制代碼

  1. ![](https://user-gold-cdn.xitu.io/2018/12/24/167df3506d17fbb7?w=535&h=348&f=png&s=59755)
  2. 5. mongodb的使用方法
  3. i. [mongodb的安裝方法](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/);
  4. ii. 開啟 mongodb服務(wù):要管理數(shù)據(jù)庫,必須先開啟服務(wù),然后進(jìn)行數(shù)據(jù)庫的相關(guān)操作
  5. iii. mongodb的常用指令
  6. 查詢 (find)
  7. 增加 (insert)
  8. 修改 (update)
  9. 刪除(remove

</>復(fù)制代碼

  1. 查看所有數(shù)據(jù)庫列表 show dbs
  2. 使用數(shù)據(jù)庫、創(chuàng)建 數(shù)據(jù)庫 use student (student代表 data_base_name);
  3. 插入(增加)一條數(shù)據(jù) db.student.insert({“name”:”xiaoming”});
  4. db.表名.insert({"name":"zhangsan"}); student 集合名稱(表)
  5. 顯示當(dāng)前的數(shù)據(jù)集合(mysql 中叫表) show collections
  6. 刪除數(shù)據(jù)庫,刪除當(dāng)前所在的數(shù)據(jù)庫 db.dropDatabase();
  7. 刪除集合,刪除指定的集合 刪除表 db.user.drop();
  8. 1、查詢所有記 錄
  9. db.userInfo.find();
  10. 相當(dāng)于:select* from userInfo;
  11. 2、查詢 age > 22 的記錄 db.userInfo.find({age: {$gt: 22}});
  12. 相當(dāng)于:select * from userInfo where age >22;
  13. 3、查詢 age < 22 的記錄
  14. db.userInfo.find({age: {$lt: 22}});
  15. 相當(dāng)于:select * from userInfo where age <22;
  16. 4、查詢 age >= 25 的記錄
  17. db.userInfo.find({age: {$gte: 25}});
  18. 相當(dāng)于:select * from userInfo where age >= 25;
  19. 5、查詢 age <= 25 的記錄
  20. db.userInfo.find({age: {$lte: 25}});
  21. 6. 按照年齡排序 1 升序 -1 降序
  22. 升序: db.userInfo.find().sort({age: 1});
  23. 降序: db.userInfo.find().sort({age: -1});
  24. 7. 查詢前 5 條數(shù)據(jù) db.userInfo.find().limit(5 );
  25. 相當(dāng)于:selecttop 5 * from userInfo;
  26. 修改數(shù)據(jù)
  27. 查找名字叫做小明的,把年齡更改為 16 歲:
  28. db.student.update({"name":"小明"},{$set:{"ag e":16}});
  29. 刪除數(shù)據(jù)
  30. db.collectionsNames.remove( { "borough": "Manhattan" } )
  31. db.users.remove({age: 132});
  32. ```
八、 express的介紹 1. express的安裝使用

</>復(fù)制代碼

  1. npm install express –save

</>復(fù)制代碼

  1. demo:
  2. var express=require("express"); /*引入 express*/
  3. var app=newexpress(); /*實(shí)例化express 賦值給app*/
  4. //配置路由 匹配 URl 地址實(shí)現(xiàn)不同的功能
  5. app.get("/",function(req,res){
  6. res.send("首頁");
  7. })
  8. app.get("/search",function(req,res){
  9. res.send("搜索"); //?keyword=華為手機(jī)&enc=utf-8&suggest=1.his.0.0&wq
  10. })
  11. app.get("/login",function(req,res){
  12. res.send("登錄");
  13. })
  14. app.get("/register",function(req,res){
  15. res.send("注冊(cè)");
  16. })
  17. app.listen(3000,"127.0.0.1");
2. Express 框架中的路由

</>復(fù)制代碼

  1. 當(dāng)用 get 請(qǐng)求訪問一個(gè)網(wǎng)址的時(shí)候,做什么事情:
  2. app.get("網(wǎng)址",function(req,res){
  3. });
  4. 當(dāng)用 post 訪問一個(gè)網(wǎng)址的時(shí)候,做什么事情:
  5. app.post("網(wǎng)址",function(req,res){
  6. });
  7. // user 節(jié)點(diǎn)接受 PUT 請(qǐng)求
  8. app.put("/user", function (req, res) {
  9. res.send("Got a PUT request at /user");
  10. });
  11. // user 節(jié)點(diǎn)接受 DELETE 請(qǐng)求
  12. app.delete("/user", function (req, res) {
  13. res.send("Got a DELETE request at /user");
  14. });
  15. 動(dòng)態(tài)路由配置:
  16. "/user/:id "
  17. app.get( ,function(req,res){
  18. var id = req.params["id"];
  19. res.send(id);
  20. });
  21. 路由的正則匹配:(了解)
  22. app.get("/ab*cd", function(req, res) {
  23. res.send("ab*cd");
  24. });
  25. 路由里面獲取 Get 傳值
  26. /news?id=2&sex=nan
  27. app.get("/news, function(req, res) {
  28. console.log(req.query);
  29. });

#### 3、Express 框架中 ejs 的安裝使用:

</>復(fù)制代碼

  1. i. npm install ejs --save-dev // 安裝
  2. ii. Express 中 ejs 的使用:
  3. var express = require("express");
  4. var app = express();
  5. app.set("view engine","ejs");
  6. app.get("/",function(req,res){ });
  7. res.render("news",{
  8. "news" : ["我是小新聞啊","我也是啊","哈哈哈哈"]
  9. }); app.listen(3000);
  10. iii. 指定模板位置 ,默認(rèn)模板位置在 views
  11. app.set("views", __dirname + "/views");
  12. iv. Ejs 后綴修改為 Html
  13. 這是一個(gè)小技巧,看著.ejs 的后綴總覺得不爽,使用如下方法,可以將模板文件的后綴換成我們習(xí)慣的.html。
  14. 1.在 app.js 的頭上定義 ejs:,代碼如下:
  15. var ejs = require("ejs");
  16. 2.注冊(cè) html 模板引擎代碼如下:
  17. app.engine("html",ejs.__express);
  18. 3.將模板引擎換成 html代碼如下:
  19. app.set("view engine", "html");
  20. 4.修改模 板文件的后綴為 .html。
4. 利用 Express.static 托管靜態(tài)文件

1、如果你的靜態(tài)資源存放在多個(gè)目錄下面,你可以多次調(diào)用 express.static 中間件:

</>復(fù)制代碼

  1. app.use(express.static("public"));

現(xiàn)在,public目錄下面的文件就可以訪問了

2、如果你希望所有通過 express.static 訪問的文件都存放在一個(gè)“虛擬(virtual)”目 錄(即目錄根本不存在)下面,可以通過為靜態(tài)資源目錄指定一個(gè)掛載路徑的方式來實(shí)現(xiàn)

</>復(fù)制代碼

  1. app.use("/static", express.static("public"));

現(xiàn)在,你就可以通過帶有 “/static” 前綴的地址來訪問 public 目錄下 面的文件了。

5、 Express 中間件 (powerful function)

應(yīng)用級(jí)中間件

路由中間件

錯(cuò)誤處理中間件

內(nèi)置中間件

第三方中間件

</>復(fù)制代碼

  1. body-parser 獲取post提交的數(shù)據(jù)
6、 獲取 Get Post 請(qǐng)求的參數(shù)

● GET 請(qǐng)求的參數(shù)在 URL 中,在原生 Node 中,需要使用 url 模塊來識(shí)別參數(shù)字符串。在Express 中,不需要使用 url 模塊了。可以直接使用 req.query 對(duì)象。

● POST 請(qǐng)求在 express 中不能直接獲得,可以使用 body-parser模塊。使用后,將可以用req.body得到參數(shù)。但是如果表單中含有文件上傳,那么還是需要使用 formidable 模塊。

</>復(fù)制代碼

  1. var express = require("express")
  2. var bodyParser = require("body-parser")
  3. var app = express()
  4. // parse application/x-www-form-urlencoded
  5. app.use(bodyParser.urlencoded({ extended: false }))
  6. // parse application/json
  7. app.use(bodyParser.json())
  8. app.use(function (req, res) {
  9. res.setHeader("Content-Type", "text/plain")
  10. res.write("you posted:
  11. ")
  12. res.end(JSON.stringify(req.body, null, 2))
  13. })

知識(shí)點(diǎn)大概總結(jié)這么多,也算是給前段時(shí)間的學(xué)習(xí)做了一個(gè)總結(jié),省得學(xué)點(diǎn),忘點(diǎn)[捂臉

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19444.html

相關(guān)文章

  • 這有一篇Nodejs+Express初級(jí)指南……

    摘要:程序執(zhí)行完畢管道流管道提供了一個(gè)輸出流到輸入流的機(jī)制。當(dāng)有用戶連接了就觸發(fā)一個(gè)內(nèi)部事件,通過非阻塞事件驅(qū)動(dòng)機(jī)制,讓程序宏觀上也是并行的。使用,一個(gè)內(nèi)存的服務(wù)器,可以同時(shí)處理超過萬用戶的連接。沒有行列的概念。 寫在前面: 這是小生跟著視頻學(xué)習(xí)的總結(jié),文末貼的有地址,很容易上手,自己都跟著敲了一遍,覺得不錯(cuò), 值得總結(jié)安利一下,歡迎糾錯(cuò)…… 一、 Nodejs創(chuàng)建第一個(gè)應(yīng)用 引入 ht...

    Invoker 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 程序員入門學(xué)習(xí)指南

    摘要:程序員的入門規(guī)劃我該學(xué)習(xí)什么語言這個(gè)問題困擾了幾乎所有的程序員,比如應(yīng)用廣好就業(yè),比如入門簡(jiǎn)單,和安卓待遇高,和開發(fā)效率高,是萬能語言,和前端缺人才等等個(gè)人見解先學(xué)習(xí)難度小,大眾化的編程語言,比如,,,這幾個(gè)學(xué)哪一種其實(shí)差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學(xué)習(xí)什么語言? 這個(gè)問題困擾了幾乎所有的程序員,比如java應(yīng)用廣好就業(yè),比如php入門簡(jiǎn)單,ios和安卓待遇高,rub...

    Kahn 評(píng)論0 收藏0
  • 程序員入門學(xué)習(xí)指南

    摘要:程序員的入門規(guī)劃我該學(xué)習(xí)什么語言這個(gè)問題困擾了幾乎所有的程序員,比如應(yīng)用廣好就業(yè),比如入門簡(jiǎn)單,和安卓待遇高,和開發(fā)效率高,是萬能語言,和前端缺人才等等個(gè)人見解先學(xué)習(xí)難度小,大眾化的編程語言,比如,,,這幾個(gè)學(xué)哪一種其實(shí)差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學(xué)習(xí)什么語言? 這個(gè)問題困擾了幾乎所有的程序員,比如java應(yīng)用廣好就業(yè),比如php入門簡(jiǎn)單,ios和安卓待遇高,rub...

    princekin 評(píng)論0 收藏1
  • 雙十二大前端工程師讀書清單

    摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們?cè)O(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡(jiǎn)單的頁面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...

    happen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

txgcwm

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<