V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Aoitechs
V2EX  ›  问与答

请问纯静态网页有什么办法读取目录下的 csv 文件吗?

  •  
  •   Aoitechs · 2018-12-22 13:59:02 +08:00 · 2421 次点击
    这是一个创建于 2167 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在用 html+css+js 编写了一个静态的相册网站,但是想要在加载网页的时候即时的从网站文件根目录下读取一个 csv 配置文件(里面有图片的文件名、描述等信息),然后即时加载到网站的 body 里面,以实现只需要修改资源文件夹就可以动态更新网页。 不知道有没有办法,把 html 同目录下的 csv 文件读取进入 js 脚本?跪谢

    lhx2008
        1
    lhx2008  
       2018-12-22 14:02:03 +08:00 via Android
    可以读进来,没问题,但是代码没人帮你免费写了
    lhx2008
        2
    lhx2008  
       2018-12-22 14:02:25 +08:00 via Android
    发一个 ajax 请求就读进来了
    learnshare
        3
    learnshare  
       2018-12-22 14:02:58 +08:00
    每次更新完文件,gulp 或 webpack 构建一下,输出为包含内容的 HTML 即可
    1024MB
        4
    1024MB  
       2018-12-22 14:04:16 +08:00 via Android
    可以,js 可以做到这个功能,Google 一下,很多的案例
    Aoitechs
        5
    Aoitechs  
    OP
       2018-12-22 14:46:33 +08:00
    @lhx2008 ajax 请求是异步的,读取完之后 覆盖更新 div 就会导致其他的样式 js 不生效,如果改成同步的 ajax,会导致一直有一个 warning
    Aoitechs
        6
    Aoitechs  
    OP
       2018-12-22 14:47:26 +08:00
    @learnshare 有没有不需要二次构建的办法呢,因为做出来的相册想提供给别人用 最好就是可以只是上传图片 和修改 csv,网站刷新一下就变了那种
    learnshare
        7
    learnshare  
       2018-12-22 15:17:56 +08:00
    @Aoitechs JS 不生效,是 JS 事件处理做的不太对。
    关键词:事件委托 或者 https://api.jquery.com/on/
    hoyixi
        8
    hoyixi  
       2018-12-22 15:41:44 +08:00
    @Aoitechs #6

    定好 csv 目录路径,定好 csv 结构,只需要构建一次,构建完成后的那个 js 文件,扔给你的客户,以后他只要按照要求放正确的 csv 即可。
    Arnie97
        9
    Arnie97  
       2018-12-22 16:32:49 +08:00 via Android
    正好我做过类似的功能 https://github.com/evanplaice/jquery-csv
    Aoitechs
        10
    Aoitechs  
    OP
       2018-12-22 18:40:30 +08:00
    @Arnie97 emmmmm 我的问题不在于处理 csv,而是怎么能把 csv 读进来。。。
    hoyixi
        11
    hoyixi  
       2018-12-22 19:15:32 +08:00
    @Aoitechs

    不想用非 DOM API,不想用构建工具的话,最简单的方法就是不用 csv,用 json 文件,ajax 加载。
    Aoitechs
        12
    Aoitechs  
    OP
       2018-12-22 19:34:18 +08:00
    @hoyixi ajax 加载 json 和 加载 csv 实质上差不多吧?主要目前异步 ajax 会出现别的问题(#5 )

    或者说 有什么办法可以让静态网站读取一个同目录下的配置文件(不管是 json or csv ),然后作为一个参数参与到 js 后续的处理(主要是循环)中呢?
    hoyixi
        13
    hoyixi  
       2018-12-22 20:02:04 +08:00   ❤️ 1
    @Aoitechs

    是得,ajax 加载 json 和 加载 csv 实质上一样,但是加载 json 不用再自己写或者引入专门解析 csv 的 js 代码了;

    “异步 ajax 会出现别的问题”,感觉你好像是想在不改原有代码的基础上修补。但是很多情况不改是不可能的。你没贴代码,也没有实例,别人也没法明白你这个问题。

    你静态页面里的 js 是在网页访问者的浏览器里运行的,要想读你服务器磁盘里的文件,除非通过 HTTP 请求文件方式,例如 ajax。
    night98
        14
    night98  
       2018-12-22 20:20:48 +08:00 via Android
    d3.js 好像有直接加载 csv 的方法
    MonoLogueChi
        15
    MonoLogueChi  
       2018-12-22 20:26:42 +08:00 via Android
    所以说,你的问题不是怎么读取,而是怎么渲染?
    Aoitechs
        16
    Aoitechs  
    OP
       2018-12-22 20:37:30 +08:00
    感谢 @hoyixi 和 @learnshare 提供的思路 现在找到合适的解决方案了
    pynix
        17
    pynix  
       2018-12-22 21:58:43 +08:00
    JS 就行了吧。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5418 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:58 · PVG 13:58 · LAX 21:58 · JFK 00:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.