如何在G Suite附加组件的服务器和客户端组件中重用单个JavaScript?

问题描述 投票:1回答:1

我有一个JavaScript文件,它是一个生成的解析器(我们称它为MyParser),我正在Google窗体的附件中使用它。

它需要在客户端的Sidebar.html中使用,我将其包含在HtmlService.createHtmlOutputFromFile('MyParser.js').getContent();中,这意味着据我所知它必须是.html文件。然后,必须在文件MyParser.js.gs中将它用于服务器端的服务器上使用。

使用我当前的解决方案,它已复制到我的文件结构中:

Code.gs
MyParser.js.gs
MyParser.js.html
Sidebar.html

是否有一种方法可以在没有两个文件的情况下完成此工作? 编辑:据我了解,libraries仅用于服务器端。

如果没有,是否有任何提示使两个文件的更新更可靠(当前是手动复制/粘贴)?

Edit:根据best practices,必须将JavaScript包装在<script>文件内的.html标记内:

[注意,包含的文件包含<style><script>标记,因为它们是HTML代码段,而不是纯.css或.js文件。

因此,似乎只有一个文件并不容易。

javascript google-apps-script module maintainability google-apps-script-addon
1个回答
0
投票

据我所知,无法重用单个文件并尊重Google的最佳做法。

根据@tehhowch的建议,我的解决方案是使用@google/clasp并进行本地开发。

要构建解析器(在另一个GitHub项目中,我使用npm-run-script。因此,我只是在&& bash makeHTML.sh脚本后附加了build

makeHTML.sh内部,我将内置的MyParser.js文件包装在<script>标记中,并带有:

#!/usr/bin/env bash
{ echo "<script>"; cat MyParser.js; echo "</script>"; } > MyParser.js.html

因为我使用的是bash,所以它不是真正的node.js解决方案(除非安装了bash,否则不会运行)。如果有人知道一种更好的方法来完成100%节点的包装并且不需要安装其他所有模块,请随时编辑答案。

© www.soinside.com 2019 - 2024. All rights reserved.