2016-11-30 10 views
1

Как указать URL-адрес файла из файла js? Вот фрагмент кода, который я хотел бы реализовать.Как указать файл дайджеста в файле js в phoenix

const currentCacheName = "sample-app-v2"; 

self.addEventListener('install', (event) => { 
    const urlToCached = [ 
    '/', 
    '<%= static_path(@conn, "/css/app.css") %>', // Adding .eex on the js file won't work. 
    '<%= static_path(@conn, "/js/app.js") %>' 
    // Add fonts, icon, etc. 
    ]; 

    event.waitUntil(
    caches.open(currentCacheName).then(function(cache) { 
     return cache.addAll(urlToCached); 
    }) 
); 
}); 

self.addEventListener('activate', (event) => { 
    event.waitUntil(
    caches.keys().then((cacheNames) => { 
     return Promise.all(
     cacheNames.filter((cacheName) => { 
      return cacheName.startsWith('sample-app-') && cacheName != currentCacheName; 
     }).map((cacheName) => { 
      return cache.delete(cacheName); 
     }) 
    ); 
    }) 
); 
}); 

self.addEventListener('fetch', (event) => { 
    event.respondWith(
    caches.match(event.request).then(function(response) { 
     if(response) return response; 
     return fetch(event.request); 
    }) 
); 
}); 

Я пробуя феникс с serviceworker, но мне нужно, чтобы получить последний переваривают файл активы для того, чтобы работать.

ответ

0

Существует несколько способов сделать такую ​​вещь. Один из них - преобразовать ваш JS-файл из статического актива в шаблон - создать для этого маршрут, контроллер, просмотреть и переместить JS-код в файл шаблона (например, script.js.eex в разделе web/templates/script/if вы назвали ваш контроллер подобно ScriptController, а view - ScriptView). В этом случае вы сможете использовать теги шаблонов внутри JS-кода и обслуживать ваш скрипт из корня веб-приложения, если вам нужно. Это полностью похоже на добавление новых маршрутов/страниц в ваше приложение Phoenix. Также вы должны отключить защиту подделок для такого маршрута (remove: protect_from_forgery из конвейера в маршрутизаторе). Недостатки этого в том, что вы потеряете весь конвейер JS для этого скрипта, так что никаких транспиляции и других подобных вещей.

 Смежные вопросы

  • Нет связанных вопросов^_^