node.js脚本与js的数据通信

1,661 阅读1分钟

背景

    最近在写瀑布流视图,要用到很多图片,想拿到本地图片的数据信息,于是乎就写了Node脚本。就有了数据传输的问题。

解决

  • err: 1、当时最先想到的是importexport,但是目前nodejs还不支持,听说快要支持了。 所以这个行不通。
  • 最后实现方法为通过nodefs这个对象来把数据抛到imgData.json文件中。
  1. 爬虫把数据写入文件(json,js,xml,txt,log......)
  2. js去导入这些文件(import,require,http)

代码

1、拿到本地文件内的图片信息

//获取项目工程里的图片
var fs = require('fs');//引用文件系统模块
function readFileList(path, filesList) {
    var files = fs.readdirSync(path);
    files.forEach(function (itm, index) {
        var stat = fs.statSync(path + itm);
        if (stat.isDirectory()) {
            //递归读取文件
            readFileList(path + itm + "/", filesList)
        } else {
            var obj = {};//定义一个对象存放文件的路径和名字
            obj.path = path;//路径
            obj.filename = itm//名字
            filesList.push(obj);
        }
    })
} 

var getFiles = {
    //获取文件夹下的所有文件
    getFileList: function (path) {
        var filesList = [];
        readFileList(path, filesList);
        return filesList;
    },
    //获取文件夹下的所有图片
    getImageFiles: function (path) {
        var fileList = [];
        this.getFileList(path).forEach((item) => {
            fileList.push(item.filename)
        });
        return fileList;
    }
}; 

//获取文件夹下的所有图片信息
var imglist=getFiles.getImageFiles("./imgFile/");//放图片的文件

2、利用fs.appendFileimglist抛到imgData.json

注意 一定要先把imglist转为字符串抛过去,不然那边拿到的只是[Object]这种。

//1、清空文件数据
fs.writeFile('../js/imgData.json', '', function(){console.log('清空成功')})
//2、把得到的图片对象抛到imgData.json文件中
fs.appendFile('../js/imgData.json', JSON.stringify(imglist), (err) => {
  if (err) throw err;
  console.log('数据已追加到文件');
});

3、取imgData.json

 import imgData from '../js/imgData.json'
 console.log(82,imgData)