目录操作
使用nodejs代码在电脑中创建一个网站站点的目录,包括css,js和img目录以及一个index.html 文件。
步骤一:使用require()导入路径操作模块和文件操作系统模块
const fs = require('fs');
const path = require('path');
require()用于引入模块、 JSON、或本地文件。一般为了方便使用,将变量名与模块名保持一致。
步骤二:初始化目录结构
let initdata = {
projectname:"demo",
data:[
{name:'img',type:'dir'},
{name:'css',type:'dir'},
{name:'js',type:'dir'},
{name:'index.html',type:'file'}
]
}
img,css及js的类型设置为dir,即文件夹类型。index.html设置为file类型,即文件类型。
步骤三:创建项目储存的地址
let root = 'F:\\nodejs\\vscode';
地址可以随意设置,但要确保正确,并且要为双\ ,即将其转义。
步骤四:创建项目的根路径
fs.mkdir(path.join(root,initdata.projectname),(err)=>{
if(err){
return;
}
});
//在root地址下创建以projectname中设置的值为名称的文件夹,
如果创建失败,则返回err.
path.join() 方法会将所有给定的 path 片段连接到一起,然后规范化生成的路径。
fs.mkdir(path[, options], callback):异步的创建目录
步骤五:创建子目录和文件
initdata.data.forEach((i)=>{
if(i.type=='dir'){
// fs.mkdir(path.join(root,initdata.projectname,i.name));
fs.mkdirSync(path.join(root, initdata.projectname, i.name));
}else if(i.type=='file'){
fs.writeFileSync(path.join(root,initdata.projectname,i.name),fileContent)
}
})
将目录结构data中的数据遍历出来,并判断它的类型,如果是dir类型则创建目录。如果是file类型则创建文件。
创建目录:fs.mkdirSync(path[, options]):同步创建目录
创建文件:因为html文件中有固定的模板,因此要设置文档中的内容。如图:
let fileContent = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
总代码
const fs = require('fs');
const path = require('path');
let root = 'F:\\nodejs\\vscode';
let fileContent = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
`;
let initdata = {
projectname:"demo",
data:[
{name:'img',type:'dir'},
{name:'css',type:'dir'},
{name:'js',type:'dir'},
{name:'index.html',type:'file'}
]
}
fs.mkdir(path.join(root,initdata.projectname),(err)=>{
if(err){
return;
}
});
initdata.data.forEach((i)=>{
if(i.type=='dir'){
// fs.mkdir(path.join(root,initdata.projectname,i.name));
fs.mkdirSync(path.join(root, initdata.projectname, i.name));
}else if(i.type=='file'){
fs.writeFileSync(path.join(root,initdata.projectname,i.name),fileContent)
}
})