Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何缓存Ejs并使用Nodejs构建渐进式Web应用程序_Node.js_Google Chrome_Ejs_Service Worker_Progressive Web Apps - Fatal编程技术网

Node.js 如何缓存Ejs并使用Nodejs构建渐进式Web应用程序

Node.js 如何缓存Ejs并使用Nodejs构建渐进式Web应用程序,node.js,google-chrome,ejs,service-worker,progressive-web-apps,Node.js,Google Chrome,Ejs,Service Worker,Progressive Web Apps,我使用Nodejs和EJs作为节点的模板引擎。我是PWA的新手,我想创建一个渐进式Web应用程序,并希望将所有ejs模板文件缓存在浏览器缓存中。我该怎么做?它是否可以脱机工作?我已尝试这样做,服务人员已成功注册。它还缓存文件,但当我在脱机模式下运行它时,它会在抓取时自动删除缓存。有人能帮我吗?我正在节点服务器上的localhost:5000上运行它 目录结构 App/ - css/ - images/ - res/ - sw1.js - uploads/ - view

我使用Nodejs和EJs作为节点的模板引擎。我是PWA的新手,我想创建一个渐进式Web应用程序,并希望将所有ejs模板文件缓存在浏览器缓存中。我该怎么做?它是否可以脱机工作?我已尝试这样做,服务人员已成功注册。它还缓存文件,但当我在脱机模式下运行它时,它会在抓取时自动删除缓存。有人能帮我吗?我正在节点服务器上的localhost:5000上运行它

目录结构

 App/
  - css/
  - images/
  - res/
  - sw1.js 
  - uploads/
  - views/
       -partials/
          -footer.ejs
       -index.ejs
       -login.ejs
footer.ejs文件

     if ('serviceWorker' in navigator) {
         navigator.serviceWorker.register('./sw1.js')
            .then(() => console.log('Service worker Registered'))
            .catch((error) => console.log('some error occurred',error));
        }
sw1.js文件

var cacheName = 'app-cache';

self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open(cacheName).then(function(cache) {
      return cache.addAll([./css/main.css', './views/login.ejs', '/']);
    })
  );
  console.log('Service Worker Installed');
});

self.addEventListener('activate', function(e) {
  console.log('[Service Worker] Activate');
  e.waitUntil(
    caches.keys().then(function(keyList) {
      return Promise.all(
        keyList.map(function(key) {
          if (key != cacheName) {
            console.log('Removing old cache', key);
            return caches.delete(key);
          }
        })
      );
    })
  );
});

self.addEventListener("fetch", function(event){
    if(event.request.url.startsWith("http://localhost:5000/")){
        console.log("[Service Worker] Fetch", event.request.url);
        caches.open(cacheName).then(function(cache){
            return fetch(event.request).then(function(response){
                cache.put(event.request, response.clone());
                return response;
            })
         })
    }
    else{
    event.respondWith(
        caches.match(event.request).then(function(response){
            return response || fetch(event.request);
        })
    );
}
});

您是否尝试访问中的代码?还有,有帮助吗?@MαπμQμαπkγVπ.0尝试了这个方法,但对我的情况没有帮助。你尝试过访问中的代码吗?还有,有帮助吗?@MαπμQμαπkγVπ。0尝试过这个,但对我的情况没有帮助。