nodejs的学习和一些命令

nodejs的基础模块学习

创建基础服务


// 导入http模块

var http = require('http');

// 导入 url模块

var url = require('url');

// 创建服务

var server = http.createServer();

// 给server绑定请求事件

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); 
   // 第二个参数填true的话 会自动帮我们把url的相关信息转换成对象
   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, true).query;
        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, true).query;
        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)=>{

    // 服务端获取post方法传过来的数据

    // 当数据量较大时,该方法可能会被调用多次,因此我们申明一个变量把每次传过来的数据拼接起来



    let body  = '';
    req.on('data',(chunk) =>{

        body += chunk;

    })

    // 等所有数据发送完后,再把字符串parse成对象
    // res.setheader('content-type','text/plain;charset=utf8');
    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的一些命名使用

npmjs.com 类似于github 有很多开源的第三方包和项目, node_modules 是不会上传到git上去

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",  //包的名称,引用时require(myaddcalc)
  "version": "1.0.0",  //版本
  "description": "这是一段描述内容", //描述 
  "main": "./lib/add.js",   // 入口js文件  (你写好的主要功能的js)
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [   // 关键字
    "加法",
    "描述"
  ],
  "author": "Monster",  //作者
  "license": "ISC"
}

你可能感兴趣的:(JavaScript,nodejs,npm,单线程的后台语言,服务器端编程)