nodeJS常用模块

模块一:assert

assert.ok()//会抛出错误

try{
  assert.ok()  
}catch(err){
    //err就是抛出的错误
    //err是一个对象  
}
//自定义抛出的错误,
const myerr = new assert.AssertionError({
  actual: 1,
  expected: 2,
  operator: 'strictEqual'
});

模块二:path

path.join([...arr])//拼接
path.resolve()
//拼接成绝对路经,从后往前拼,遇到最前面有/的时候停止,否则会用当前目录的绝对路径
path.normalize()//格式化不规范的分隔符
path.dirname//获取目录路经
path.extname//获取扩展名

模块三:fs

//异步读取
fs.readFile('文件相对路经','编码方式(不传入指定文件编码时,data是二进制数据)',回调函数(第一个参数是error,第二个参数是读取的内容))
    data.toString("utf-8")(Buffer转String)
    new Buffer(text, "utf-8")(String转Buffer)
//同步读取
fs.readFileSync('文件相对路经','编码方式(不传入指定文件编码时,data是二进制数据)')
try {
    var data = fs.readFileSync(fileName, "utf-8");
} catch(err) {
    console.log(err);
}

fs.writeFile('文件相对路经',data,(err)=>{})
fs.writeFileSync('文件相对路经',data)
fs.stat('文件相对路经',(err,data) => {
    //data包含文件的各种信息
})

模块四:http

//创建http服务,监听请求
//请求开始
http.createServer(请求到达后要做的事onRequest(req,res).listen(port, host);
function onRequest(req, res) {
        // 使用url.parse()方法解析url
        // 它会把url string转化为一个object
        // 这样我们就可以很方便的获取url中的host、port、pathname等值了
        var pathname = url.parse(req.url).pathname;
        console.log('Request for ' + pathname + ' received.');

        // 判断并处理不同url请求
        // 后面介绍此方法
        route(handle, pathname, res, req);
    }
function route(handle, pathname, res, req) {
    console.log('About to route a request for ' + pathname);

    // 判断此url是否存在特定处理函数
    // 存在则调用handle处理
    // 不存在则返回404页面
    if (typeof handle[pathname] === 'function') {
        // 后面介绍handle函数
        handle[pathname](res, req);
        /*
        handle['/'] = requestHandlers.home;
        handle['/about'] = requestHandlers.about;
                function home(res,req) {
                    console.log('Request handler "home" was called.');

                    // 读取home.html文件
                    var content = fs.readFileSync('./views/home.html');
                    res.writeHead(200, { 'Content-Type': 'text/html' });
                    res.write(content);
                    res.end();
                }
                请求被处理
        */
    } else {
        console.log('No request handler found for ' + pathname);

        // 读取404页面
        // 所有页面都存放在view文件夹下
        var content = fs.readFileSync('./views/404.html');
        res.writeHead(404, { 'Content-Type': 'text/html' });
        res.write(content);
        res.end();
    }
}

模块五:url和queryString

对象=url.parse('字符串')

http://user:[email protected]:8080/p/a/t/h?query=string#hash
解析后对象字段如下:
href: 解析前的完整原始 URL,协议名和主机名已转为小写
protocol: 请求协议,小写
例如: 'http:'
slashes: 协议的“:”号后是否有“/”
例如: true or false
host: URL主机名,包括端口信息,小写
例如: 'host.com:8080'
auth: URL中的认证信息
例如: 'user:pass'
hostname: 主机名,小写      host=hostname+port
例如: 'host.com'
port: 主机的端口号
例如: '8080'
pathname: URL中路径
例如: '/p/a/t/h'
search: 查询对象,即:queryString,包括之前的问号“?”
例如: '?query=string'
path: pathname 和 search的合集     path=pathname+search
例如: '/p/a/t/h?query=string'
query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象
例如: 'query=string' or {'query':'string'}/*parse方法的第二个参数决定*/
hash: 锚点部分(即:“#”及其后的部分)
例如: '#hash'
url.format(urlObj)
url.resolve(from, to)//from的最后一个名字后面要带/,否则会被后面的替换
url.resolve('/one/two/three', 'four')         // '/one/two/four'
url.resolve('http://example.com/', '/one')    // 'http://example.com/one'
url.resolve('http://example.com/one', '/two') // 'http://example.com/two'
//对象转字符串
querystring.stringify(obj, 每个键值对的分隔符, 键与值的分隔符)
//字符串转对象
querystring.parse(str, 每个键值对的分隔符, 键与值的分隔符, [options])

你可能感兴趣的:(nodeJS常用模块)