javascript - 如何使用 Fetch API 在局部视图 MVC 中包含 CSS 文件和脚本文件
问题描述
我正在努力在我的 Asp.net MVC Web 应用程序中添加服务工作者。CSS 文件和 JS 文件使用 @Style.Render 和 @Scripts.Render 包含在 _Layout.cshtml 中。如何使用 fetch API 包含这些文件。我想在过滤获取请求的帮助下缓存我的 js 文件和 CSS 文件。我试试下面的代码。它返回该成功消息。但该文件不包括在内。有什么建议吗?
<script type="text/javascript">
fetch('/Content/Site.css')
.then(function (response) {
console.log('script loaded successfully');
})
.catch(function (ex) {
console.log('failed', ex);
});
</script>
解决方案
我没有确切的答案,但更多的是建议。
MVC 局部视图在概念上类似于拥有一个应用程序外壳(想想母版页),可能是一个布局,然后是页面内容,然后可以有子组件(如局部视图)。
现在,MVC 在客户端呈现,所以呈现的页面被发送到网络上,应该不需要在 service worker 中编写页面......
但是,对于某些应用程序,我会在 service worker 中呈现页面。我在去年春天为我制作的 Philly Code Camp 计划 PWA 发布了一个示例,https://love2dev.com/blog/phillycc-service-worker/。
基本上我预先缓存了 appshell、布局和其他核心标记组件。在此示例中,我通过拦截 HTML 请求来获取 JSON。如果我缓存了 HTML 响应,我会返回它,如果没有,我会获取 JSON。当 JSON 响应时,我使用它来渲染(我使用 mustache)带有页面外壳、布局等的标记。最终我渲染标记并将其缓存为响应。
我还可以返回 appShell、appShell + Layout 等(根据需要),然后在客户端线程中呈现,这有点像 SPA,只是没有粗糙的 hashchange 处理。这样做也很容易,target.innerHTML = template.render(...)。
推荐阅读
- reactjs - ReactJS 中的条件功能组件渲染
- reactjs - react-grid-layout 中奇怪的压缩行为
- firebase - How to ensure the FieldValue.serverTimestamp() finish executing in Cloud Firestore before I get the latest data on my listener?
- python - Git difftool 不工作 Windows 10 Git Bash
- c++ - 有没有办法知道 Tracer 是否成功完全连接到 jaegerclientcpp 中的 jaeger 后端服务器?
- websphere - IBM Domino - 哪个文档对于组是唯一的
- amazon-web-services - 如何为 Fargate 任务提供上传到 S3 的正确权限
- javascript - 如何将 @vue/apollo-composable 添加到 Quasar 框架
- c++ - 转置表导致测试失败(但在游戏中运行良好)
- jquery - 使用 jQuery 确定一个 div 是否是直接在另一个 div 下方并与另一个 div 相邻的兄弟