浏览器和服务器通讯须要http协议完成node
//1 引入http模块
var http = require('http');
//2 建立服务器 请求 响应
var server = http.createServer(function(request,response){
console.log('有访问');
response.write('abc');
response.end();
})
//3 监听8080端口
server.listen(8080);
//4 终端输入 node server.js启动服务器
//5 浏览器测试 localhost:8080 页面虽然无显示,可是控制台中每当有访问会打印 有访问
localhost:8080/1.html
/1.html
/favicon.ico 浏览器自动给你请求的网站小图标
fs.readFile('aaa.txt',function(err,data){
console.log(data);
//<Buffer 73 66 61 73 6b 6c 66 6a 0a 31 31 31 31 0a 32 32 32 32 0a 33 33 33 33 0a>
console.log(data.toString());//把二进制转为 字符串
})
fs.writeFile('bbb.txt','new data',function(err,data){
console.log(err,'err');
console.log(data,'data');
})
req.url => '/index.html'
读取 './www/index.html'
'./www'+req.url
var fileName = './www'+req.url;
<div style="background:red;">
div
</div>
const http = require('http');
const fs = require('fs');
var server = http.createServer(function(req,res){
var filename = './www' + req.url;
fs.readFile(filename,(err,data)=>{
if(err){
res.write('404');
}else{
res.write(data);//机器对机器原本就是二进制,因此不用toString
}
res.end();
})
})
server.listen(8080);
接收前台的数据请求mysql
请求头 header
请求体 content POST数据
const queryString = require('queryString');
var json = queryString.parse("username=yuonly&password=123123");
console.log(json);
const urlLib = require('url');
//没有第二个参数时
var obj = urlLib.parse('http://www.zyx58.com/index?a=12&b=5');
console.log(obj);
//obj 结果
Url {
protocol: 'http:', 协议
slashes: true,
auth: null,
host: 'www.zyx58.com', 主机
port: null, 端口
hostname: 'www.zyx58.com', 主机名
hash: null,
search: '?a=12&b=5',
query: 'a=12&b=5',数据
pathname: '/index',地址
path: '/index?a=12&b=5',请求路径
href: 'http://www.zyx58.com/index?a=12&b=5'
}
//第二个参数为true时
var obj = urlLib.parse('http://www.zyx58.com/index?a=12&b=5',true);
console.log(obj);
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.zyx58.com',
port: null,
hostname: 'www.zyx58.com',
hash: null,
search: '?a=12&b=5',
query: { a: '12', b: '5' }, 数据 query已经被解析为json
pathname: '/index', //地址
path: '/index?a=12&b=5',
href: 'http://www.zyx58.com/index?a=12&b=5'
}
const http = require('http');
const urlLib = require('url');
http.createServer((req,res)=>{
var obj = urlLib.parse(req.url,true);
var url = obj.pathname;
var GET = obj.query;
console.log(url,GET);
}).listen(8080);
var http = require('http');
var queryString = require('queryString');
http.createServer((req,res)=>{
//post - req post 数据大,因此要分段发送
//data 每当有一段数据到达的时候,就会触发一次
//end 数据彻底到达的时候触发一次
var str = '';//等待接收数据
var i = 0;//验证是否分不少次到达
req.on('data',function(data){
console.log(`第${i++}次到达`);
str += data;
})
req.on('end',function(){
// console.log(str);
var POST = queryString.parse(str);
console.log(POST);
})
}).listen(8080);
const http = require('http');
const fs = require('fs');
const queryString = require('queryString');
const urlLib = require('url');
http.createServer((req,res)=>{
//GET
var obj = urlLib.parse(req.url,true);
var url = obj.pathname;
const GET = obj.query;
//POST
var str = '';
var POST = {};
req.on('data',function(data){
str += data;
})
req.on('end',function(){
POST = queryString.parse(str);
console.log(url,GET,POST);
})
// url 要那个文件
// GET get数据
// POST post数据
// ================ 文件请求======
var filename = './www'+url;
fs.readFile(filename,function(err,data){
if(err){
res.write('404');
}else{
res.write(data);
}
res.end();
})
// localhost:8080/aaa.html
}).listen(8080);
文档 : http://nodejs.cn/api/git
require: 引入模块ajax
既能够引入系统模块,又能够引入文件模块,因此即使是当前目录也要加上 ./
没有全局变量,至关于
(function(require,exports,module){
var a = 12;
exports.a = 12;
})()
exports: 导出、输出。一个一个输出sql
module: 模块。批量输出东西npm
对外输出一堆东西
exports.a = 12;
exports.b = 5;
exports.c = 99;
module.exports = {a:12,b:5,c:99}
console.log(module.exports === exports);//true:说明是一个东西
require('./mod1.js') .js能够省略不写json
自动下载依赖api
安装
npm i mysql --save
卸载
npm uninstall mysql
require 1. 若是有 './' 从当前目录找浏览器
- 若是没有 ‘./’。首先从系统模块中找,没有,再去node_modules目录中找
npm login
输入用户名、密码、邮箱
npm whoami
npm publish
npm update test0528
npm unpublish --force