九阴真经 第十五层--node.js 第2天
原生node.js
node.js 官網(wǎng) https://nodejs.org/zh-cn/
node.js 中文API http://nodejs.cn/api/
Node中,js文件和js文件,就是被一個個exports和require構(gòu)建成為網(wǎng)狀的。
不是靠html文件統(tǒng)一在一起的。
● 如果在require命令中,這么寫:
1 var foo = require("foo.js"); //沒有寫./, 所以不是一個相對路徑。是一個特殊的路徑
那么Node.js將該文件視為node_modules目錄下的一個文件
● node_modules文件夾并不一定在同級目錄里面,在任何直接祖先級目錄中,都可以。甚至可以放到NODE_PATH環(huán)境變量的文件夾中。這樣做的好處稍后你將知道:分享項目的時候,不需要帶著modules一起給別人。
● 我們可以使用文件夾來管理模塊,比如
1 var bar = require("bar");
那么Node.js將會去尋找node_modules目錄下的bar文件夾中的index.js去執(zhí)行。
每一個模塊文件夾中,推薦都寫一個package.json文件,這個文件的名字不能改。node將自動讀取里面的配置。有一個main項,就是入口文件:
1 { 2 "name": "kaoladebar", 3 "version": "1.0.1", 4 "main" : "app.js" 5 } 6package.json文件,要放到模塊文件夾的根目錄去。
1.我們的依賴包,可能在隨時更新,我們永遠想保持更新,或者某持某一個版本;
2.項目越來越大的時候,給別人看的時候,沒有必要再次共享我們引用的第三方模塊。
我們可以用package.json來管理依賴。
在cmd中,使用npm init可以初始化一個package.json文件,用回答問題的方式生成一個新的package.json文件。
require()別的js文件的時候,將執(zhí)行那個js文件。
注意:
require()中的路徑,是從當前這個js文件出發(fā),找到別人。而fs是從命令提示符找到別人。
而fs是從命令提示符找到別人。
而fs是從命令提示符找到別人。
而fs是從命令提示符找到別人。
fs等其他的模塊用到路徑的時候,都是相對于cmd命令光標所在位置。
所以,桌面上有一個a.js, test文件夾中有b.js、c.js、1.txt
a要引用b:
1 var b = require(“./test/b.js”);
b要引用c:
1 var b = require(“./c.js”);
但是,fs等其他的模塊用到路徑的時候,都是相對于cmd命令光標所在位置。
所以,在b.js中想讀1.txt文件,推薦用絕對路徑:
1 fs.readFile(__dirname + "/1.txt",function(err,data){
2 if(err) { throw err; }
3 console.log(data.toString());
4 });
post請求
var alldata = ""; 2 //下面是post請求接收的一個公式 3 //node為了追求極致,它是一個小段一個小段接收的。 4 //接受了一小段,可能就給別人去服務(wù)了。防止一個過大的表單阻塞了整個進程 5 req.addListener("data",function(chunk){ 6 alldata += chunk; 7 }); 8 //全部傳輸完畢 9 req.addListener("end",function(){ 10 console.log(alldata.toString()); 11 res.end("success"); 12 });====================================
原生寫POST處理,比較復(fù)雜,要寫兩個監(jiān)聽。文件上傳業(yè)務(wù)比較難寫。
所以,用第三方模塊。formidable。
只要涉及文件上傳,那么form標簽要加一個屬性:
<form action="http://127.0.0.1/dopost" method="post" enctype="multipart/form-data">
數(shù)據(jù)綁定,就成為一個完整的html字符串了。
前臺的模板,我們現(xiàn)在要學習的是后臺的模板。
后臺模板,著名的有兩個,第一個叫做ejs; 第二個叫做jade。
是npm第三方包。
=================================================
var http = require("http"); var fs = require("fs"); var url = require("url"); var path = require("path"); http.createServer(function(req, res){//發(fā)送http頭部?//http狀態(tài)值:200//內(nèi)容類型:text/htmlvar href = url.parse(req.url);var pathname = href.pathname;if(pathname.indexOf('.')==-1){pathname+="/index.html";}var extname = path.extname(pathname);var fileURL = "./static" + pathname;console.log(req.url);//console.log(href); //是一個Url 對象//發(fā)送響應(yīng)數(shù)據(jù)fs.readFile(fileURL,function(err,data){if(err){throw Error("f");return;}getmimeName(extname,function(mime){res.writeHead(200, {'Content-Type': mime+';charset=UTF8'});res.end(data);})})//后臺終端打印信息}).listen(3000,"127.0.0.1"); function getmimeName(extname,callback){fs.readFile("./mime.json",function(err,jsondata) {if (err) {throw Error("找不到j(luò)son");return;}var mimejson = JSON.parse(jsondata);callback(mimejson[extname]);}); }=================================
轉(zhuǎn)載于:https://www.cnblogs.com/czy16/p/8508260.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的九阴真经 第十五层--node.js 第2天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [SDOI2017]数字表格
- 下一篇: 某考试 T3 C