首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在javascript文件中使用nodeJS

如何在javascript文件中使用nodeJS
EN

Stack Overflow用户
提问于 2018-09-27 22:52:47
回答 2查看 56关注 0票数 0

我想使用我的nodeJS的输出。这是我的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var fs = require('fs'); //File System
var rutaImagen = 'C:/Users/smontesc/Desktop/imagenes1/'; //Location of images
fs.readdir(rutaImagen, function(err, files) {
    if (err) { throw err; }
    var imageFile = getNewestFile(files, rutaImagen);
    //process imageFile here or pass it to a function...
    console.log(imageFile);
});

function getNewestFile(files, path) {
    var out = [];
    files.forEach(function(file) {
        var stats = fs.statSync(path + "/" +file);
        if(stats.isFile()) {
            out.push({"file":file, "mtime": stats.mtime.getTime()});
        }
    });
    out.sort(function(a,b) {
        return b.mtime - a.mtime;
    })
    return (out.length>0) ? out[0].file : "";
}

结果是console.log(imageFile),我想在我的javascript项目中调用它的结果,比如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
  document.write(imageFile)
</script>

所有这些都是为了在目录中创建最新的文件,因为我不能直接在JS上这样做。

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2018-09-27 23:29:39

首先,关于浏览器和web服务器的客户端/服务器关系是如何工作的,我们需要建立一些基本的东西。这将为讨论解决您的问题提供一个框架。

  1. 图像不是通过document.write()在浏览器中显示的,而是通过在文档中插入指向特定图像的URL的图像标记来显示的。
  2. 要使网页从服务器获取某些结果,它必须在最初从服务器获取网页时将该结果嵌入到网页中,或者网页中的Javascript必须使用Ajax请求从服务器请求信息。Ajax请求是一个http请求,其中网页中的Javascript形成http请求,该http请求被发送到您的服务器,您的服务器接收该请求并发回响应,web页面中的Javascript接收到该响应,然后可以对其进行处理。
  3. 要实现网页从后端请求某些数据的功能,您必须在后端有一个web服务器,该服务器可以响应从网页发送的ajax请求。你不能只是在你的服务器上运行一个脚本,然后神奇地修改浏览器中显示的网页。如果没有前面几点中描述的结构类型,则您的web页面与显示的服务器完全没有连接。网页无法直接访问您的服务器文件系统,服务器也无法直接访问所显示的网页。

有许多可能的方案来实现这种类型的连接。我认为最好的做法是定义一个图像URL,当任何浏览器请求时,它都会返回服务器上特定目录中最新图像的图像。然后,您只需将该特定的URL嵌入到您的web页面中,只要该图像被刷新或显示,您的服务器就会向其发送该图像的最新版本。您的服务器可能还需要通过设置适当的缓存头来确保浏览器不会缓存该URL,这样它就不会错误地只显示该图像以前缓存的版本。

该网页可能如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img src='http://mycustomdomain.com/dimages/newest'>

然后,您在mycustomdomain.com上设置了一个可公开访问的web服务器(从开放的互联网-显然您选择了自己的域),可以访问所需的图像,并在该web服务器上创建一条响应/dimages/newest请求的路由。

使用Express作为您的web服务器框架,可能如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const app = require('express')();
const fs = require('fs');
const util = require('util');
const readdir = util.promisify(fs.readdir);
const stat = util.promisify(fs.stat);

// middleware to use in some routes that you don't want any caching on
function nocache(req, res, next) {
    res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate, proxy-revalidate');
    res.header('Expires', '-1');
    res.header('Pragma', 'no-cache');
    next();
}

const rutaImagen = 'C:/Users/smontesc/Desktop/imagenes1/'; //Location of images

// function to find newest image
// returns promise that resolves with the full path of the image
//    or rejects with an error
async function getNewestImage(root) {
    let files = await readdir(root);
    let results = [];
    for (f of files) {
        const fullPath = root + "/" + f;
        const stats = await stat(fullPath);
        if (stats.isFile()) {
            results.push({file: fullPath, mtime: stats.mtime.getTime()});
        }
    }
    results.sort(function(a,b) {
        return b.mtime - a.mtime;
    });
    return (results.length > 0) ? results[0].file : "";            
}

// route for fetching that image
app.get(nocache, '/dimages/newest', function(req, res) {
    getNewestImage(rutaImagen).then(img => {
        res.sendFile(img, {cacheControl: false});
    }).catch(err => {
        console.log('getNewestImage() error', err);
        res.sendStatus(500);
    });
});

// start your web server
app.listen(80);
票数 2
EN

Stack Overflow用户

发布于 2018-09-27 23:10:19

为了能够在your Javascipt project中使用产生的,我们必须创建一个具有响应imageFile的特定路由的API。然后,在您的Javascript项目中,您可以使用XMLHttpRequest (XHR)对象或Fetch API与服务器进行交互,以获得结果。

核心思想是我们绝对需要服务器端和客户端编程来执行该功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52546113

复制
相关文章
【说站】NodeJS如何在文件中追加内容
2、appendFile()可以接收三个参数,第一个是路径,第二个是内容,第三个是回调函数,执行node learnNode.js即可。
很酷的站长
2022/11/24
2.9K0
nodejs中如何使用流数据读写文件
在nodejs中,可以使用fs模块的readFile方法、readFileSync方法、read方法和readSync方法读取一个文件的内容,还可以使用fs模块的writeFile方法、writeFileSync方法、write方法和writeSync方法向一个文件中写入内容。
前端_AWhile
2019/08/29
6.2K0
Nodejs中读取文件目录中的所有文件
关于Nodejs中的文件系统即File System可以参考官方Node.js v12.18.1的文档File system
ccf19881030
2020/06/28
14.8K0
nodejs与javascript中的aes加密
简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。高级加密标准已然成为对称密钥加密中最流行的算法之一。 2.AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。包括AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB。   具体的加密算法和模
磊哥
2018/05/08
3.9K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
如何在nodejs中实现兄弟进程通信
在nodejs主进程中,开启一个额外的子进程A,进程A负责和线程池通信,完成cpu密集型的任务。通过nodejs主进程创建出来的多个nodejs工作进程可以把任务提交到进程A,然后拿到处理结果。
theanarkh
2020/10/10
1.4K0
如何在nodejs中实现兄弟进程通信
nodejs中追加内容到文件
最近在使用nodejs写日志记录的时候,发现一个问题:使用fs模块读写文件,调用writeFile(path,data)或者writeFileSync(path,data)时会将日志文件原来的内容给覆盖掉,显然这不是我所想要的结果,我想要的效果是在文件末尾追加,所以需要使用appendFile(path,data)或者appendFileSync(path,data)方法。以下内容转载自nodejs中追加内容到文件
ccf19881030
2020/10/16
4.8K0
nodejs中追加内容到文件
nodejs中的文件系统
nodejs使用了异步IO来提升服务端的处理效率。而IO中一个非常重要的方面就是文件IO。今天我们会详细介绍一下nodejs中的文件系统和IO操作。
用户2323866
2021/06/22
1.5K0
nodejs中的文件系统
nodejs使用了异步IO来提升服务端的处理效率。而IO中一个非常重要的方面就是文件IO。今天我们会详细介绍一下nodejs中的文件系统和IO操作。
程序那些事
2021/01/28
1.3K0
nodejs使用aes-128-ecb加密如何在c#中解密
却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5加密了一次,而这个操作是默认的,暂时没发现有配置可以默认去掉,服务端如果需要使用这个key解密,则需要也同样使用MD5加密
frontoldman
2019/09/03
2.6K0
NodeJS使用formidable实现文件上传
  最近自学了一下NodeJS,然后做了一个小demo,实现歌曲的添加、修改、播放和删除的功能,其中自然要实现音乐和图片的上传功能。于是上网查找资料,找到了一个formidable插件,该插件可以很好的实现文件的上传功能。该小demo用到了MySQL数据库,所有的数据都存放到了数据库中。下面简单说一些如何使用。 1.创建app.js主文件 const express = require('express'); const router = require('./router'); const path =
用户1174387
2018/01/17
2.2K0
使用nodejs做文件下载中转
之前做了一个功能就是点击按钮实现文件下载,文件保存在了阿里云的OSS上,阿里的OSS和七牛的OSS其实个人感觉差不多,一般情况下,前端下载文件很多都是通过一个a标签来进行下载。但是对于OSS存储的文件比如图片点击后在浏览器直接打开了,即使是添加了download属性也无济于事,于是我就想到了使用nodejs来搭建一个中转站。
OECOM
2020/07/02
3.4K0
nodejs文件上传组件multer使用
多图上传,发送端: var express = require('express') var rp = require('request-promise') var fs = require("fs
用户1141560
2017/12/26
2.8K0
如何在JavaScript中使用for循环
循环允许我们通过循环数组或对象中的项并做一些事情,比如说打印它们,修改它们,或执行其他类型的任务或动作。JavaScript有各种各样的循环,for循环允许我们对一个集合(如数组)进行迭代。
chuckQu
2022/11/28
5.1K0
如何在JavaScript中使用for循环
NodeJS & Dapr Javascript SDK 官方使用指南
Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。Dapr 确保开发人员专注于编写业务逻辑,不必分神解决分布式系统难题,从而显著提高了生产力。Dapr 降低了构建微服务架构类现代云原生应用的门槛。
为少
2022/12/06
9130
NodeJS & Dapr Javascript SDK 官方使用指南
【译】如何在JavaScript中复制Object
不管在什么编程语言中,复制一个对象的值而不是它的引用都是一个十分常见的工作。复值对象的值和复制对象的引用的区别在与通过复制值可以得到两个有着相同值或数据,但是毫不相干的对象,复制引用意味着得到的两个对象在内存中指向相同的数据块。当objet A和object B都引用自相同的底层数据时,只要你操作object A,就会修改到object B。
腾讯IVWEB团队
2020/06/28
2.2K0
前端必读:如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
JavaScript在前端领域占据着绝对的统治地位,目前更是从浏览器到服务端,移动端,嵌入式,几乎所有的所有的应用领域都可以使用它。技术圈有一句很经典的话“凡是能用JavaScript实现的东西,最后都会用JavaScript实现”。 Excel 电子表格自 1980 年代以来一直为各行业所广泛使用,至今已拥有超过3亿用户,大多数人都熟悉 Excel 电子表格体验。许多企业在其业务的各个环节中使用了 Excel 电子表格进行数据管理。
葡萄城控件
2022/10/04
4.1K0
前端必读:如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
如何在JavaScript中处理大量数据
在几年之前,开发人员不会去考虑在服务端之外处理大量的数据。现在这种观念已经改变了,很多Ajax程序需要在客户端和服务器端传输大量的数据。此外,更新DOM节点的处理在浏览器端来看也是一个很耗时的工作。而且,需要对这些信息进行分析处理的时候也很可能导致程序无响应,浏览器抛出错误。 将需要大量处理数据的过程分割成很多小段,然后通过JavaScript的计时器来分别执行,就可以防止浏览器假死。先看看怎么开始: function ProcessArray(data,handler,callback){ Process
CSDN技术头条
2018/02/09
3K0
如何在 Chrome 中执行 JavaScript 代码
要在浏览器中执行 JavaScript 脚本,首先你的浏览器得支持。现在主流推荐 Chrome 浏览器,也可以使用基于 Chromium 的 Edge 浏览器。下面来介绍如何在 Chrome 中打开开发者工具,以及如何在开发者工具中运行调试 JavaScript 代码。
村雨遥
2022/03/14
5.9K0
如何在 Chrome 中执行 JavaScript 代码
点击加载更多

相似问题

如何在nodejs中阻止javascript文件的导入

10

如何使用nodeJs生成javascript文件

20

使用POST Nodejs上传javascript文件

10

使用nodejs提供动态javascript文件

15

在nodeJS和nodeJS中使用常见的Javascript文件

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文