javascript - 如何通过脚本标签将 Vue.js 应用程序加载到现有网页中?

标签 javascript webpack vue.js

我想通过脚本标签将 Vue.js 应用程序加载到现有网页中。

目前,在我的 Vue 应用程序中运行 npm run build 后,我得到了 7 个已编译的文件:

  1. app.js
  2. app.js.map
  3. manifest.js
  4. manifest.js.map
  5. vendor .js
  6. vendor .js.map
  7. app.css

我认为我可以加载这 3 个 js 文件( list 、 vendor 和应用程序 - 不包括 map 文件)作为我单独网页上脚本标记中的源,然后 Vue 应用程序将存在于该网页上。

(我还会在页面上加载 css 文件,但目前我并不担心。)

尝试在脚本标签中注入(inject) 3 个 js 文件(作为 src)后,我看到 js 文件确实作为源存在于页面上,但 Vue 应用程序似乎从未“执行过”,并且没有来自 DOM 元素Vue 应用程序存在于页面上。

我还通过页面上的脚本标签加载了 vue.js(开发版)js 文件。

我对 web-pack 不是很熟悉,但我怀疑需要做一些事情来执行 web-pack 以在这个单独的网页中运行 Vue 应用程序,因为 web-pack 是用来运行 Vue 应用程序的本地自行。

我不确定这是否可能,但我找不到任何资源来证明我想要实现的目标。

请提供任何相关的帮助或信息,以及这是否是在第三方网页中运行 Vue 应用程序的正确方法。

编辑

这是用于插入带有文件 src 的脚本标签的 js 代码:

var head = document.getElementsByTagName('head')[0];
var js = document.createElement("script");
js.src = "/js/app.js";
head.appendChild(js);

我对每个文件(应用程序、 list 和 vendor )都使用此代码。这就是我所做的一切,脚本标签存在于具有正确来源的页面上。在 Chrome 调试器的“源”选项卡下,我看到所有三个 js 文件都已正确加载。

最佳答案

解决方案

Vue 应用程序未在我的其他应用程序中“加载”的原因是因为 Vue js 文件需要一个 id =“app”的 div 元素来“加载”。以下是我想要将 Vue 应用程序加载到的应用程序中的 js 文件中使用的代码(带有一些替换的通用值):

  var head = document.getElementsByTagName('head')[0];
  var body = document.getElementsByTagName('body')[0];

  var div = document.createElement("div");
  div.id = "app"
  body.appendChild(div)

  var js = document.createElement("script");
  js.src = "/js/vue-app.js";
  js.id = "vue-app-js";
  js.defer = true;
  js.async = true;
  head.appendChild(js);

  var css = document.createElement('link');
  css.id = "vue-app-css";
  css.rel = "stylesheet";
  css.type = "text/css";
  css.href = "app.css";
  head.appendChild(css); 

作为引用,我将所有已编译的 Vue js 文件( list 、 vendor 和应用程序)合并到一个名为 vue-app.js 的文件中,您可以在上面的代码中看到该文件。一旦 Vue js 文件加载到页面上,它们就会在 id = "app"的 div 中构建 Vue js 应用程序。

关于javascript - 如何通过脚本标签将 Vue.js 应用程序加载到现有网页中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776818/

相关文章:

javascript - 在 div 内显示 JSON 内容

javascript - Vuex:如何将 getter 的结果存储在状态中?

css - Vuetify.js - 如何在 v-card 中添加横向边框

javascript - 如何保存应用了 CSS 滤镜的图像

javascript - 为每个类别添加一个循环编号

javascript - 根据innerhtml在JS中找到HTML按钮并点击

未定义 Symfony 4 Javascript 函数

json - webpack $JSON.stringify.apply 不是一个函数

javascript - 如何根据给定值获取最小值和最大值?

reactjs - npm WARN babel-loader@6.2.8 需要 babel-core@^6.0.0 的同级,但没有安装