nodejs的基础模块学习
创建基础服务
var http = require('http');
var url = require('url');
var server = http.createServer();
server.on('request',function(req,res){
res.setHeader('content-type','text/html;charset=utf-8');
res.end('hello world 你好世界!');
var urlStr = req.url;
console.log(urlStr);
var urlObj = url.parse(urlStr,true);
console.log(urlObj);
console.log(urlObj.query.name +'---------' + urlObj.query.age);
}) ;
server.listen(8899,'127.0.0.1',function(err){
if(err){
console.log(err);
}
console.info('start success 成功');
})
querystring处理get方式数据
const http = require('http');
const url = require('url');
const querystring = require('querystring');
const server = http.createServer();
server.on('request', (req, res) => {
const urlString = req.url;
if (!urlString.includes('ico')) {
const urlObj = url.parse(urlString);
const paramsObj = querystring.parse(urlObj.query);
console.info(paramsObj);
res.setHeader('content-type', 'text/plain;charset=utf8')
res.end('响应成功')
}
})
server.listen('3000', '127.0.0.1');
querystring模块处理get请求的数据
const http = require('http');
const url = require('url');
const querystring = require('querystring');
const server = http.createServer();
server.on('request', (req, res) => {
const urlString = req.url;
if (!urlString.includes('ico')) {
const urlObj = url.parse(urlString);
const paramsObj = querystring.parse(urlObj.query);
console.info(paramsObj);
res.setHeader('content-type', 'text/plain;charset=utf8')
res.end('响应成功')
}
})
server.listen('3000', '127.0.0.1');
querystring模块处理post请求的数据
const http = require('http');
const querystring = require('querystring');
const server = http.createServer();
server.on('request',(req,res)=>{
let body = '';
req.on('data',(chunk) =>{
body += chunk;
})
req.on('end',()=>{
const params = querystring.parse(body);
console.info(params);
})
res.end('响应成功')
})
server.listen('3000','127.0.0.1',(err)=>{
if(err){
console.info(err);
}
console.log('ok');
});
path模块和fs模块的使用(主要用来操作文件和问价夹)
var http = require('http');
var path = require('path');
var fs = require('fs');
判断文件是否存在
fs.exists(path.join(__dirname,'aaa'),(exists)=>{
if(exists){
console.log("已经存在");
}else{
fs.mkdir(path.join(__dirname,'aaa'),(err)=>{
if(err){
console.log(err);
}
console.log('mkdir ok');
});
}
})
fs.exists(path.join(__dirname),(exists)=>{
if(exists){
fs.rename(path.join(__dirname,'aaa'),path.join(__dirname,'bbb'),()=>{
if(err){
console.log(err);
}
console.log('重命名成功');
});
}else{
console.log('文件不存在');
}
})
fs.exists(path.join(__dirname,'bbb'),(exists)=>{
if(exists){
fs.rmdir(path.join(__dirname,'bbb'),(err)=>{
if(err){
console.log(err);
}
console.log('删除成功');
})
}else{
console.log('文件不存在');
}
})
fs.watchFile(path.join(__dirname,'aaa.txt'),(curr,prev)=>{
console.log(`the surrent mtime is : ${curr.mtime}`);
console.log(`the previous mtime is : ${prev.mtime}`);
})
npm的一些命名使用
npm -nint -y 在项目根目录默认生成 package.json配置 (name不能是中文,第一个字母不能大写)
npm xxx –save 和 npm xxx –save -dev的区别
npm xxx --save 生产阶段 (代码上线还需要用到这个包就用 --save)npm xxx --save -dev 开发阶段(代码上线后,不需要用到的包 比如gulp等构建工具 );
node i nodemon -g (全局) 一个自动更新你修改后的文件的第三方包
本地包 和全局包的区别 都要使用npm i 进行安装
本地包: node i xxx --save/ --save -dev 安装在项目的node_module中
全局包: node i xxx -g 安装在node的安装目录或是个人目录 > AppData > Roaming > npm
使用场景: 本地包是用在项目中的,为我们项目服务的
全局包: 在终端中使用,执行一些指令的
上传自定义模块到npmjs官网
1. npm adduser 会提示让你输入用户名密码和邮箱 (在任何终端里面输入密码都没有提示)
2. npm publish 发布
3. 升级. 改了代码后,一定要把版本号递增(不能减少)
i18n 国际化语言切换控制的第三方包 (靠路由控制实现切换的)
使用淘宝cnpm 镜像
前提 : 安装nrm包 npm i nrm -g
nrm ls 看当前有哪些镜像可用
nrm use +镜像名称 (切换镜像)
packag.json配置介绍
{
"name": "myaddcalc",
"version": "1.0.0",
"description": "这是一段描述内容",
"main": "./lib/add.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"加法",
"描述"
],
"author": "Monster",
"license": "ISC"
}