网站文件和文件夹浏览器:我应该使用静态还是Ajax?

网站文件和文件夹浏览器:我应该使用静态还是Ajax?,ajax,node.js,express,Ajax,Node.js,Express,时间 我正在为一个开放组织编写一个网站,该组织拥有大量文件和文件夹,必须将所有文件发布到网上供公众审查。我还没有开始编写实际的查看器,因为我想知道标准的、最容易访问的方法是什么 该网站必须易于访问,并可供从台式机到手机的所有设备使用。这就是说,我不必在编写代码时考虑到旧的、过时的浏览器。之前的站点在Python和Django上使用了静态方法。这是我的第一个real node.js+Express作业,我不确定性能是否有差异 目前,我认为有两种方法可以完成我的任务: 1.使用Ajax 我知道我可以

时间

我正在为一个开放组织编写一个网站,该组织拥有大量文件和文件夹,必须将所有文件发布到网上供公众审查。我还没有开始编写实际的查看器,因为我想知道标准的、最容易访问的方法是什么

该网站必须易于访问,并可供从台式机到手机的所有设备使用。这就是说,我不必在编写代码时考虑到旧的、过时的浏览器。之前的站点在Python和Django上使用了静态方法。这是我的第一个real node.js+Express作业,我不确定性能是否有差异

目前,我认为有两种方法可以完成我的任务:

1.使用Ajax 我知道我可以把每个人推到一个通用的
/documents
页面上,让他们自己浏览文件夹。但是,我希望文档链接在共享的情况下能够工作,因此我必须在用户移动时手动更改URL,并将大量Ajax请求提交回服务器

我喜欢这种方法,因为它可能会提供更好的用户交互。我不喜欢Ajax请求的数量,我担心在手机和平板电脑等功能较弱的设备上,所有Ajax和DOM操作都会变慢或不起作用。此外,我还必须将url解析为具有后端或前端的资源,以便检索

2.去“静态” 我在后端使用node.js和Jade,所以我知道我可以分解一个url,找到文件夹层次结构,然后给用户一个全新的页面

我喜欢这种方法,因为它不需要用户的机器进行任何计算(在速度较慢的设备上可能会更快),而且它意味着不需要做大量的url工作。我不喜欢桌面用户最终会等待一堆我必须用来准备页面的同步操作,也不喜欢服务器负载或响应

目前
我现在正在研究静态方法,因为我认为它更容易访问(即使以页面加载时间为代价),但我在这里是为了获得更多信息来指导正确的选择。我正在寻找答案,解释为什么走哪条路会更好,并且是公正的或分享经验的。提前感谢您的帮助

对。所以还没有其他人响应,所以我还是继续做了文件浏览器

我最后做了一个静态方法。事实证明,除了必须操作一堆字符串之外,这相对比较容易,我只能想象Ajax需要两倍的工作量

响应时间相当长:在我的站点上不进行计算的通用静态页面大约需要40-70毫秒,而新文档页面大约需要150毫秒的两倍时间。虽然在实践中,150ms并不能满足我的需要,但在大规模环境中,我确信documents文件夹中的glob函数会使系统陷入困境

对于任何想知道的人,以下是我所做的

代码 层次结构如下所示

|app
  |controllers
    |-document.js
  |views
    |-document.jade
|public
  |docs
    |
    |//folders
    |
documents.js

var express = require('express');
var router = express.Router();
var glob = require('glob');

module.exports = function(app) {
    app.use('/', router);
};

router.get('/documents*', function serveDocsHome(req, res) {
    //this removes %20 from the requested url to match files with spaces
    req.originalUrl = req.originalUrl.replace('%20', ' ');

    //fun string stuff to make links work
    var dir = '/docs' + req.originalUrl.substr(10);
    var url = req.originalUrl + '/';

    //for moving up a directory
    var goUp = false;
    var folderName = 'Home';
    if (req.originalUrl != '/documents') {
        var end = req.originalUrl.lastIndexOf('/');
        folderName = req.originalUrl.substr(end + 1);
        goUp = true;
    }

    //get all the folders
    var folders = glob.sync('*/', {
        cwd : 'public' + dir
    });
    for (var i = 0; i < folders.length; i++) {
        folders[i] = folders[i].substr(0, folders[i].length - 1);
    }

    //get all the files
    var files = glob.sync('*', {
        cwd : 'public' + dir,
        nodir : true
    });

    //attach the files and folders
    res.locals.folders = folders;
    res.locals.files = files;
    res.locals.loc = dir + '/';
    res.locals.goUp = goUp;
    res.locals.url = url;
    res.locals.folderName = folderName;

    //render the doc
    res.render('documents', {
        title : 'Documents',
    });
});
这是这一页的一部分


对。所以还没有其他人响应,所以我还是继续做了文件浏览器

我最后做了一个静态方法。事实证明,除了必须操作一堆字符串之外,这相对比较容易,我只能想象Ajax需要两倍的工作量

响应时间相当长:在我的站点上不进行计算的通用静态页面大约需要40-70毫秒,而新文档页面大约需要150毫秒的两倍时间。虽然在实践中,150ms并不能满足我的需要,但在大规模环境中,我确信documents文件夹中的glob函数会使系统陷入困境

对于任何想知道的人,以下是我所做的

代码 层次结构如下所示

|app
  |controllers
    |-document.js
  |views
    |-document.jade
|public
  |docs
    |
    |//folders
    |
documents.js

var express = require('express');
var router = express.Router();
var glob = require('glob');

module.exports = function(app) {
    app.use('/', router);
};

router.get('/documents*', function serveDocsHome(req, res) {
    //this removes %20 from the requested url to match files with spaces
    req.originalUrl = req.originalUrl.replace('%20', ' ');

    //fun string stuff to make links work
    var dir = '/docs' + req.originalUrl.substr(10);
    var url = req.originalUrl + '/';

    //for moving up a directory
    var goUp = false;
    var folderName = 'Home';
    if (req.originalUrl != '/documents') {
        var end = req.originalUrl.lastIndexOf('/');
        folderName = req.originalUrl.substr(end + 1);
        goUp = true;
    }

    //get all the folders
    var folders = glob.sync('*/', {
        cwd : 'public' + dir
    });
    for (var i = 0; i < folders.length; i++) {
        folders[i] = folders[i].substr(0, folders[i].length - 1);
    }

    //get all the files
    var files = glob.sync('*', {
        cwd : 'public' + dir,
        nodir : true
    });

    //attach the files and folders
    res.locals.folders = folders;
    res.locals.files = files;
    res.locals.loc = dir + '/';
    res.locals.goUp = goUp;
    res.locals.url = url;
    res.locals.folderName = folderName;

    //render the doc
    res.render('documents', {
        title : 'Documents',
    });
});
这是这一页的一部分