使用JS访问ejs文件中的静态文件

时间:2018-02-06 14:34:02

标签: javascript node.js html5

所以我使用node.js创建了一个小应用程序,并像我这样提供了我的资产文件夹

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func applicationWillResignActive(_ application: UIApplication) {
    FBSDKAppEvents.activateApp()
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool {
    return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}

func applicationDidBecomeActive(application: UIApplication) {
    // Call the 'activate' method to log an app event for use
    // in FB analytics and advertising reporting.
    AppEventsLogger.activate(application)
    // ...
}

现在,在我的app.use(express.static('assets')); 文件中,我可以轻松地引用图像,例如

.ejs

现在,我要做的是遍历该文件夹中的所有图像并将其显示在页面上。

这样的东西
var img = document.createElement('img');
img.src = '/img/picture.jpg'

所以我的问题是,如何使用JS获取所有静态图像的名称?我是否必须对目录进行AJAX调用才能读取文件名?或者使用node.js在服务器端执行此操作,并将图像传递到var images = new Array(); images = { All pictures in the /img directory } images.forEach(function(image) { var img = document.createElement('img'); img.src = image; } 文件。通常,这是更好的做法(可能是一个单独的问题,但我想我会问)?

提前致谢

1 个答案:

答案 0 :(得分:1)

  

所以我的问题是,如何使用JS获取所有静态图像的名称?

在向服务器发出请求之前,客户端对服务器将响应的URL一无所知。

  

我是否必须对目录进行AJAX调用才能读取文件名?

这将是一种可能的方法。

  

或者使用node.js在服务器端执行此操作,并将图像传递到.ejs文件。

这也可行

  

通常,这是更好的做法(可以是一个单独的问题,但我想我会问)?

取决于。

使用Ajax需要第二个HTTP请求,但可以缓存响应。

在页面加载时执行此操作会减少请求的数量,但是,但是每次加载页面时都必须完成获取列表的工作,并且会增加该页面的大小。

最好,使用唯一可衡量的指标,取决于个人重新加载页面的频率以及列表更改的频率。