【发布时间】:2024-05-29 17:35:01
【问题描述】:
我有一个旧的 PHP 应用程序,我想慢慢迁移到 Vue。 PHP 应用程序以相当复杂的方式呈现一堆 HTML 和 javascript 文件,即
foo.js.php
...
<script src="mysite.com/some_js_file.js" />
...
const a = '<?=$variable_from_php?>';
所以最终浏览器显然不知道这些js文件是如何构造的,但是可以运行它们。我想做的是从外层 Vue 应用程序请求 index 页面以获取旧版应用程序的某个子部分,并将其渲染到 Vue 节点,作为一种微前端。当我请求每个索引时,它当然会包含一个标题,其中包含该微前端需要运行的许多其他导入(脚本/样式)。所以,这个问题有两个部分:1)在 Vue.使用v-html?框架? (请说没有 iframe)和 2)这种方法是否会出现任何安全问题(因为我基本上是说获取标头中的所有 JS 并运行它)。让我知道这个问题是否有意义。谢谢!
【问题讨论】:
-
是否可以使用H-include 或网络组件(如micro-frontends.org)?
-
您是否尝试将 PHP 动态生成的 HTML 渲染为 Vue 模板?或者您想在现有 PHP 生成的内容旁边添加新的 Vue 内容?
-
@ssc-hrep3 第一个,从 PHP 动态生成的 HTML。然而,就迁移而言,我想基本上只是盲目地将 Vue 组件的内容设置为这个 HTML,然后不再为它烦恼,因为它可以完全管理自己。
-
没有很好的解决方案。脚本不由 v-html、innerHTML 或类似的处理。它们的元素应使用
document.createElement("script")显式创建。开箱即用的 jQueryhtml支持此功能,如有必要,请使用它。即使处理了脚本,它们也不会以与原始页面相同的顺序进行评估,因为它们是以这种方式异步加载的。而且即使可行,Vue 应用也不应该是 SPA,因为您无法在页面之间进行适当的清理,会出现错误和内存泄漏。 -
安全性由旧版应用决定。结果不能比它更容易受到攻击,但可能更容易受到攻击,这取决于如何利用这些黑客攻击新应用程序。就安全性和常识而言,iframe 是这里唯一直接的方式。
标签: javascript php html vue.js