使用 webexpress 和 pug/jade 通过 Autodesk forge 查看器提供页面

Posted

技术标签:

【中文标题】使用 webexpress 和 pug/jade 通过 Autodesk forge 查看器提供页面【英文标题】:Using webexpress and pug/jade to serve page with autodesk forge viewer 【发布时间】:2019-05-30 00:14:52 【问题描述】:

我正在编写一个 node.js webexpress 服务器,它使用 pug (jade) 创建一个网站,用于查看 (revit) 上传到 autodesk forge 的文件。

网络服务器使用 axios 与 forge 通信,并允许登录、创建和打开存储桶、上传文件以及获取已上传到存储桶的项目的 URN。

在设置查看器时,我有一些示例使用在浏览器中本地设置的 viewerapp。然而,我正在使用 pug 创建页面,这似乎不允许在浏览器中保持页面与查看器处于活动状态并仅更新它。否则浏览器窗口中的每一次鼠标点击都会设置一个新的查看器,这看起来既慢又过分。

socket 库似乎允许网络服务器和浏览器之间的双向通信,但这是一个全新的库,如果没有必要,我宁愿不包括在内。

所以第一个问题是,是否甚至可以使用 node.js webexpress 和 pug 来动态创建一个包含伪造查看器的网页,以及允许更改视图而无需重新发送整个页面(包括设置查看器)的按钮再次。

如果是这样,有没有比依赖套接字库更简单的方法?

我当然可以将所有查看器逻辑放在一个随页面一起加载的 javascript 文件中,但如果没有必要,我宁愿不这样做,因为这会暴露太多的 javascript 和伪造的连接到最后用户。如果可以将其保留在网络服务器上,我会更喜欢它。

我查看了https://learnforge.autodesk.io/#/viewer/2legged/nodejs 和其他示例代码,但这似乎没有回答我的问题,因为查看器似乎是在浏览器中创建和维护的,而不是由 node.js 网络服务器创建和维护的。

【问题讨论】:

【参考方案1】:

So the first question is if it is even possible to use node.js webexpress and pug to dynamically create a webpage with the forge viewer in it, and buttons that allow for changing views without resending the entire page including setting up the viewer again.

当然。 Viewer 可以使用原生 JavaScript 动态加载和卸载。有关详细信息,请参阅良好的阅读 here 和示例代码 here。模型也可以 - 请参阅文章 here 和示例 here。

您要避免的一个陷阱是在不先卸载查看器的情况下永远不要隐藏/分离画布。在撰写本文时,Viewer 还不支持渲染到零大小的画布。

And if so, is there a simpler way to do so than relying on the socket library?

不幸的是,Viewer 还不支持服务器端渲染,所以我们并没有被 Websocket 以外的选项宠坏。您的担忧是完全合法的,请参阅 here 和 here 关于 WebGL 安全性的一些精彩讨论。没有其他可用于 Viewer 的渲染引擎,除非某些其他下一代技术优先于 WebGL(但在可预见的将来不会出现这种情况)或某些 WebAssembly 库优先于直接调用 WebGL,否则它应该保持不变。应该在一定程度上注意代码混淆。

但是,没有什么可以阻止您使用适当的 AAA(查看器支持 API 代理,这应该会进一步加强您的安全措施)以及 these 常见的混淆做法来保护您的代码免受滥用。

【讨论】:

以上是关于使用 webexpress 和 pug/jade 通过 Autodesk forge 查看器提供页面的主要内容,如果未能解决你的问题,请参考以下文章

Pug (Jade) 动态添加属性内联的存在

markdown ТуториалпоHTMLпрепроцессоруPug(Jade)

vue遇到的一些问题

VueJS 开发常见问题集锦

VueJS 开发常见问题集锦

VueJS 开发常见问题集锦