【node开发】node.js在项目中使用的常见语法

node.js在项目中使用的常见语法

// Process模块
// 内置模块,直接使用
const process = require('process');

// 获取终端输入的参数
const args = process.argv.slice(2);

// 获取全局变量
const data = process.env.VUE_APP_BASE_URL

// 返回当前系统信息
const system = process.platform


// path模块
// 内置模块,直接使用
const path = require('path');

// path.join 作用是将传入的多个路径拼成一个完整的路径
const dPath = path.join('template', 'aaa', 'bbb', 'ccc', 'd.js');
// 输出: template/aaa/bbb/ccc/d.js

// path.resovle 和 path.join 的区别在于它的作用是将传入的多个路径和当前执行路径拼接成一个完整的绝对路径
const cPath = path.resolve('aaa', 'bbb', 'ccc', 'd.js');
// 输出:  /Users/xiaolian/Code/node-api-test/aaa/bbb/ccc/d.js

// path.basename 返回指定 path 最后一个路径名,其中第二个参数 ext 可选,表示文件扩展名
console.log(path.basename('scripts/index.js'));  // index.js
console.log(path.basename('scripts/index.js', '.js'));  // 匹配到 .js,返回 index
console.log(path.basename('scripts/index.js', '.json'));  // 没匹配到,返回 index.js


// 返回指定 path 最后一个路径名之前的路径。比如
console.log(path.dirname('scripts/index.js'));  // scripts
console.log(path.dirname('scripts/hook/index.js'));  // scripts/hook


// 获取文件后缀
console.log(path.extname('scripts/index.js'));  // .js
console.log(path.extname('README.md'));  // .md




// 文件系统
// 内置模块,直接使用
const fs = require('fs');

// 回一个文件或者目录的信息
fs.stat('./icons.js', function(err, stats) {
  console.log(stats);
});


// 获取 path 目录下的文件和目录
fs.readdir('./src', function (error, files) {
  if (!error) {
    console.log(files);
  }
});

// 读取文件内容 
// process.cwd()  根目录url
fs.readFile(path.join(process.cwd(), 'package.json'), 'utf-8', function (
  error,
  content
) {
  if (!error) {
    console.log(content);
  }
});

// 写入文件
const  arr = `[
    {
        id:1,
        label:'我是第一个来的'
    },
    {
        id:2,
        label:'我是第二个来的'
    }
]`
fs.writeFile(
  path.join(process.cwd(), 'text.json'),arr,
  function (error, content) {
    console.log(error);
  }
);


console.log('------------------------------stream--------------------------------------')



// stream模块
// 打开一个流:
var rs = fs.createReadStream('./package.json', 'utf-8');

// data事件表示流的数据已经可以读取了,可以多次
rs.on('data', function (chunk) {
    console.log('DATA:')
    console.log(chunk);
});

// 结束了
rs.on('end', function () {
    console.log('END');
});

rs.on('error', function (err) {
    console.log('ERROR: ' + err);
});

// console.log('------------------------------写入流--------------------------------------')

var ws1 = fs.createWriteStream('output1.txt', 'utf-8');
ws1.write('使用Stream写入文本数据111111...\n');
ws1.write('END1.');
ws1.write('谢谢小星星.');
ws1.end();


var ws2 = fs.createWriteStream('output2.txt');
ws2.write(new Buffer('使用Stream写入二进制数据22222...\n', 'utf-8'));
ws2.write(new Buffer('END2.', 'utf-8'));
ws2.end();

console.log('------------------------------串文件流--------------------------------------')

// 将流串起来,将读取到的1的流写入到2文件
var rs = fs.createReadStream('./output1.txt');
var ws = fs.createWriteStream('./output2.txt');

rs.pipe(ws);


// http模块

// createServer
var http = require('http');
var server = http.createServer(function (request,response){
  console.log(request.method+':'+request.url)
  response.writeHead(200,{'Content-Type':'text/html'});
  response.end('<h1>hello word</h1>')
})
server.listen(8080)
console.log('server is running at http://127.0.0.1:8080')

console.log('------------------------------完整的文件服务器--------------------------------------')

// 完整的文件服务器
var url = require('url')

// 从命令行参数获取root目录,默认是当前目录:
var root = path.resolve(process.argv[2] || '.');

console.log('Static root dir: ' + root);

// 创建服务器:
var server = http.createServer(function (request, response) {
    // 获得URL的path,类似 '/css/bootstrap.css':
    var pathname = url.parse(request.url).pathname;
    // 获得对应的本地文件路径,类似 '/srv/www/css/bootstrap.css':
    var filepath = path.join(root, pathname);
    // 获取文件状态:
    fs.stat(filepath, function (err, stats) {
        if (!err && stats.isFile()) {
            // 没有出错并且文件存在:
            console.log('200 ' + request.url);
            // 发送200响应:
            response.writeHead(200);
            // 将文件流导向response:
            fs.createReadStream(filepath).pipe(response);
        } else {
            // 出错了或者文件不存在:
            console.log('404 ' + request.url);
            // 发送404响应:
            response.writeHead(404);
            response.end('404 Not Found');
        }
    });
});

server.listen(8080);

console.log('Server is running at http://127.0.0.1:8080/');
 

 

posted @ 2023-06-12 14:47  JeckHui  阅读(28)  评论(0编辑  收藏  举报