【发布时间】:2018-01-19 11:17:53
【问题描述】:
有没有办法将我的 Angular 4 组件(使用 webpack 的类似小部件的邮件窗口应用程序)注入任何静态网站,最好使用 <script> 标签?
找到了一些博客文章,但它们都在使用 SystemJS,而我的应用正在使用 webpack,似乎没有任何结果。
【问题讨论】:
标签: javascript angular webpack
有没有办法将我的 Angular 4 组件(使用 webpack 的类似小部件的邮件窗口应用程序)注入任何静态网站,最好使用 <script> 标签?
找到了一些博客文章,但它们都在使用 SystemJS,而我的应用正在使用 webpack,似乎没有任何结果。
【问题讨论】:
标签: javascript angular webpack
Angular 应用程序必须始终有根元素,通常插入在index.html 的<body> 中。假设您已经编写了小部件,其中根组件 f.e.是<widget>,您可以将其与页面上的任何静态标记混合使用:
<!doctype html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
<nav>Brand</nav>
</header>
<aside>
Menu
<!-- It can also be injected in any other element -->
<widget></widget>
</aside>
<main>
Content
</main>
</body>
</html>
如果您的应用程序是使用 Angular CLI 引导的,它在后台使用 webpack,只需将您的静态标记放在 src/index.html 中即可。
已编辑:如果您想将您的小部件注入任何其他页面,您可以尝试按照以下步骤进行操作:
有点像:
<script type="text/javascript" charset="utf-8">
window.addEventListener('load', () => {
const widgetElement = document.createElement('widget')
// document.body is not necessary here, it can be any other element
document.body.appendChild(widgetElement)
const widgetCode = document.createElement('script')
widgetCode.src = '<path to bundled angular app>'
document.body.appendChild(widgetCode)
})
</script>
我创建了plnkr,这可能对你有点帮助
【讨论】:
您可以使用 Angular 中的自定义元素来创建自定义组件,然后使用 npm run build 元素构建您的 projetc,它会为您生成一个脚本 .js,您的所有应用程序都将在其中构建。然后您可以将脚本注入任何其他项目或简单的 html 页面,它会加载您的应用程序。 可能是我的解释不是很清楚,您可以在 Angular 主网站中看到自定义元素。
【讨论】: