• Node.js入门笔记(5):案例两则


    案例分析:前端自动化

    1. 实现一个自动创建前端项目文件的js

    通过node.js自动创建前端项目目录,包括js目录,js目录css目录,index.html和对应的内容。
    初步的代码如下:

    var projectData={
        'name':'前端模板',//总文件夹名
      'fileData':[{
            'name':'style',
            'type':'dir'
      },{
            'name':'script',
            'type':'dir'
      },{
            'name':'images',
            'type':'dir'
    
      },{
            'name':'index.html',
            'type':'file',
               'content':'<html>
    	<head>
    		<title>title</title>
    	</head>
    	<body>
    	<h1>hello</h1>
    	</body>
    	</html>'
      }]
    };
    var fs=require('fs');
    if(projectData.name){
        fs.mkdir(projectData.name);
    
      var fileData=projectData.fileData;
    
      if(fileData&&Array.isArray(fileData)===true){//如果该属性对象存在,而且是数组
      fileData.forEach(function (f) {//是数组就循环它!
      //接下来要做的有:根据f.type判断是创建f.name的文件还是文件夹,如果是index.html就写入它
      console.log(f);
      if(f.type=='dir'){
                    fs.mkdir('./'+projectData.name+'/'+f.name, function (mkdirErr) {
                        if(!mkdirErr){
                            console.log('成功创建了名字为'+f.name+'的文件夹');
    
      if(f.name!=='images'){//不是图片的话还要创建一个同名文件在该目录下,内容为空
      var fileName='';
      if(f.name=='style'){
                                    fileName=f.name+'.css';
      }else if(f.name=='script'){
                                    fileName=f.name+'.js';
      }
                                fs.writeFile('./'+projectData.name+'/'+f.name+'/'+fileName,'',function () {
                                    console.log('已经尝试创建了名为'+fileName+'的文件');
      });
      }
                        }else{
                            console.log(f.name+'文件夹创建失败!');
      }
                    })
                }else{//不是文件夹就创建文件吧
      if(f.name=='index.html'){
                        fs.writeFile('./'+projectData.name+'/'+f.name,f.content,function () {
                            console.log('已经尝试创建了index文件');
      });
      }
                }
            })
        }else{
            console.log('fileData出错');
      }
    }
    

    2.实现一个对合并文件夹内容的程序

    场景描述:在前端开发中,常常需要对几个文件的代码进行合并。试想,在服务器环境下,有一个source文件夹。内有1.txt和2.txt两个文件甚至更多(n.txt)。同时在source同目录还有一个main.js文件夹。
    当我每次修改source文件夹里边的任意一个txt文件时,这段程序可以把文件夹内所有文件的内容读取出来,放到一个content内,在把content的内容写入main.js中。

    var fs=require('fs');
    var filedir='./source';
    fs.watch(filedir,function (ev,file) {//监听文件夹是否改变
      //console.log(ev+'/'+file);//不需要判断file是否有内容
    
      //只要有一个文件发生了变化,就需要对这个文件夹下的所有文件进行读取,然后合并
    
      fs.readdir(filedir,function (err,dataList) {
            //console.log(dataList);
     //第一步,先把每次改变时source文件夹的所有内容读取出来,放到数组arr里
      var arr=[];
      dataList.forEach(function (f) {
                if(f){//如果source文件夹存在文件
      //console.log(filedir+'/'+f);
      var info=fs.statSync(filedir+'/'+f);//
     // console.log(info);  if(info.mode=='33206'){//如果是文件,该路径保存到数组
      arr.push(filedir+'/'+f)
                    }
                }
            });
      //console.log(arr);
     //console.log('------分界线-------');
     //第二部:读取数组文件的内容并合并
      var content='';
      arr.forEach(function (f) {
                var c=fs.readFileSync(f);//获取内容
      //console.log(c);
      content+='/*来自'+f+'*/'+'
    '+c.toString()+`
    `;
      console.log(content);
    
      //接下来就是把数据内容保存到main.js
      fs.writeFile('./main.js',content);
      });
      console.log('-----')
        })
    });
    

    这段代码就可以在当前文件目录下创建一个main.js,里边包含了输出的内容
    main.js的输出效果

    挺好,挺好。想新建多少就新建多少

  • 相关阅读:
    学习——HTML5
    XML解析——SAX解析以及更方便的解析工具(JDOM、DOM4J)
    C#笔记 -----扩展方法
    Socket实现异步通信
    基础套接字的C#网络编程
    线程
    sqlserver 索引
    SQL Server用户自定义函数
    sqlserver函数
    用户控件和自定义控件的区别
  • 原文地址:https://www.cnblogs.com/djtao/p/6127598.html
Copyright © 2020-2023  润新知