简介
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,可以搭建服务器运行JavaScript应用程序,也可以自己编写一些脚本。
安装
我们可以登录node.js官网安装LTS版本(稳定版本),安装完成后我们检查是否安装成功:
控制台执行npm -v和node -v出现版本号说明安装成功了
使用node起一个HTTP服务器
- 引入 required 模块
var http = require("http");
- createServer() 方法创建服务器
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/')
这样我们的web服务器就创建好了,可以通过访问127.0.0.1:8888来访问自己的web。
使用node开发自己的工具脚本
我们来实现一个需求:需要将文件夹中css文件里的px单位转成rem单位
- 引入fs,path模块
var fs = require("fs");
var path = require('path');
fs和path两个模块方便我们来操作文件夹和文件
- 遍历目标文件夹 准备一份含有css文件的文件夹,遍历目标文件夹,获取其文件列表:
var fs = require("fs");
var path = require('path'); //解析需要遍历的文件夹
var filePath = path.resolve('./css');
fileDisplay(filePath);
function isDir(path){ // 是否为目录
return fs.statSync(path).isDirectory();
}
function fileDisplay(filePath) {
//根据文件路径读取文件,返回文件列表
fs.readdir(filePath, function(err, files) {
if(err) {
console.warn(err, 111)
} else {
//遍历读取到的文件列表
files.forEach(function(filename) {
var s = path.join(filePath, filename)
if (isDir(s)) { // 目录
fileDisplay(s)
} else { // 文件
handleFile(s)
}
});
}
});
}
- 准备需求对应的正则表达式规则,处理获取到的文件列表,处理结束覆盖原文件:
function handleFile(path) {
fs.readFile(path, 'utf8', function(err, data) {
if(err) {
console.warn(err)
} else {
//css部分抓获
if(path.indexOf(".css") != -1) {
replaceCss(data, path)
}
}
});
}
function replaceCss(fileContent, fileName) {
var str = fileContent;
str = str.replace(/\d*.?\d+px/g, function(a) {
console.log('rem', a)
return parseFloat(a) + 'rem';
});
fs.writeFileSync(fileName, str);
}
这样一个简单的脚本工具我们就完成了,大家可以发挥自己的想象编写一些脚本来处理日常的一些开发工作减轻繁琐的重复操作。