导入 Handlebar 模板和获取它们之间的区别?
Difference between importing Handlebar templates and fetching them?
我见过人们使用提取请求来获取服务器中已有的 .hbs 文件,这些文件可以使用导入语法简单地导入。为什么会这样?从服务器内部获取文件是否有意义?简单地 export const studentTemplate = "*the template*"
不是更好吗?难道这不允许简单地导出编译后的函数而不是模板本身吗?导入速度是否较慢(据我所知,它们不应该像处理网络的获取请求那样)?
例如而不是执行所有这些活动 - 从服务器内部获取文件,注册所有必要的部分,然后编译要使用的函数 - 在必须输出 HTML 的文件中,拥有它不是更好吗一个单独的文件 - 导入 handlebars 模板而不是获取它,注册所需的部分,编译函数并仅导出函数 - 然后只导入编译函数?
这样做的唯一原因是减少初始页面加载时间(通过减少 HTML/JS 请求的大小)。然后模板可以是:
- 当用户执行需要呈现该模板的操作时按需加载,但这可能会导致一些延迟(需要微调器)
- 或者按照模板呈现的可能性一个一个地预加载,但这可能会导致不必要的数据获取(静态导入也会)。
最好的解决方案是在构建过程中预编译模板,并将它们作为动态导入包含在 JS 包中(webpack 的更高版本支持)或使用 AMD 风格的 requires.This 解决方案消除了所有开销网络和编译延迟、不必要的数据获取并且最易于维护。
注意:正如另一个答案所断言的那样,它与防止“阻止 javascript 执行”无关。您也可以将模板直接嵌入 template
或 <script type="text/template">
标记中的 HTML 并延迟解析/编译其内容,但这会增加初始请求的加载时间。
我见过人们使用提取请求来获取服务器中已有的 .hbs 文件,这些文件可以使用导入语法简单地导入。为什么会这样?从服务器内部获取文件是否有意义?简单地 export const studentTemplate = "*the template*"
不是更好吗?难道这不允许简单地导出编译后的函数而不是模板本身吗?导入速度是否较慢(据我所知,它们不应该像处理网络的获取请求那样)?
例如而不是执行所有这些活动 - 从服务器内部获取文件,注册所有必要的部分,然后编译要使用的函数 - 在必须输出 HTML 的文件中,拥有它不是更好吗一个单独的文件 - 导入 handlebars 模板而不是获取它,注册所需的部分,编译函数并仅导出函数 - 然后只导入编译函数?
这样做的唯一原因是减少初始页面加载时间(通过减少 HTML/JS 请求的大小)。然后模板可以是:
- 当用户执行需要呈现该模板的操作时按需加载,但这可能会导致一些延迟(需要微调器)
- 或者按照模板呈现的可能性一个一个地预加载,但这可能会导致不必要的数据获取(静态导入也会)。
最好的解决方案是在构建过程中预编译模板,并将它们作为动态导入包含在 JS 包中(webpack 的更高版本支持)或使用 AMD 风格的 requires.This 解决方案消除了所有开销网络和编译延迟、不必要的数据获取并且最易于维护。
注意:正如另一个答案所断言的那样,它与防止“阻止 javascript 执行”无关。您也可以将模板直接嵌入 template
或 <script type="text/template">
标记中的 HTML 并延迟解析/编译其内容,但这会增加初始请求的加载时间。