【问题标题】:How to use AngularJS 2 with Magnolia CMS如何在 Magnolia CMS 中使用 AngularJS 2
【发布时间】:2017-06-26 02:11:35
【问题描述】:

我想将 AngularJS2 集成到 Magnolia CMS 中(我是 AngularJS 的新手)。 我尝试了quickstart Project localy,它与 npm start 一起正常工作。

我使用 npm tsc 获取 .js 文件以使用 Magnolia 中的文件来测试它是否有效。我从 unpkg.com 获得的所有 node_modules 文件(我在终端中锁定了哪些文件用于快速启动项目并集成了所有文件)。在 ftl 模板中添加 <my-app> 标记并将所有脚本添加到同一位置(App-js 文件是从 magnolia 本身加载的)。这没有用,所以我不知道我错过了什么。

我也尝试做类似于this 的事情(但使用@angular 而不是angular2 beta)。

我不确定是否可以这样做,因为快速入门可以工作(使用 npm start),但在我的 tomcat 服务器上却不行。我以为问题可能出在tomcat服务器上。

我也试过没有任何服务器,只是剪掉这段代码,结构如下:

test/test.html

test/app/app.component.js & app.module.js & main.js

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Update these package versions as needed -->
	<script src="https://unpkg.com/zone.js@0.7.6/dist/zone.js"></script>
	<script src="https://unpkg.com/systemjs@0.20.5/dist/system.src.js"></script>
	<script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script>
	<script src="https://unpkg.com/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js"></script>
	<script src="https://unpkg.com/@angular/platform-browser/bundles/platform-browser.umd.js"></script>
	<script src="https://unpkg.com/@angular/core/bundles/core.umd.js"></script>
	<script src="https://unpkg.com/@angular/common/bundles/common.umd.js"></script>
	<script src="https://unpkg.com/@angular/compiler/bundles/compiler.umd.js"></script>
	<script src="https://unpkg.com/rxjs/symbol/observable.js"></script>
	<script src="https://unpkg.com/rxjs/Observable.js"></script>
	<script src="https://unpkg.com/rxjs/Subject.js"></script>
	<script src="https://unpkg.com/rxjs/util/root.js"></script>
	<script src="https://unpkg.com/rxjs/util/toSubscriber.js"></script>
	<script src="https://unpkg.com/rxjs/Subscriber.js"></script>
	<script src="https://unpkg.com/rxjs/Subscription.js"></script>
	<script src="https://unpkg.com/rxjs/util/ObjectUnsubscribedError.js"></script>
	<script src="https://unpkg.com/rxjs/SubjectSubscription.js"></script>
	<script src="https://unpkg.com/rxjs/symbol/rxSubscriber.js"></script>
	<script src="https://unpkg.com/rxjs/Observer.js"></script>
	<script src="https://unpkg.com/rxjs/util/isFunction.js"></script>
	<script src="https://unpkg.com/rxjs/util/isArray.js"></script>
	<script src="https://unpkg.com/rxjs/util/isObject.js"></script>
	<script src="https://unpkg.com/rxjs/util/tryCatch.js"></script>
	<script src="https://unpkg.com/rxjs/util/errorObject.js"></script>
	<script src="https://unpkg.com/rxjs/util/UnsubscriptionError.js"></script>
	<script src="app/app.component.js"></script>
	<script src="app/app.module.js"></script>
	<script src="app/main.js"></script>
<script>
      System.import('app').catch(function(err){ console.error(err); });
    </script>
<title>Title</title>
</head>
<body>
	<my-app>Loading AppComponent content here ...</my-app>
</body>
</html>

但这也没有用。

我有一个 REST API 来获取公式和其他东西的验证器。但现在我需要为公式建立一个页面。我不知道如何构建此页面。是否可以使用 ftl 在 Magnolia 内部进行操作? 这里最好的解决方案是什么

【问题讨论】:

    标签: maven angular tomcat magnolia


    【解决方案1】:

    有了这个 [plunker][1],我可以让 AngularJS 在没有 node.js 的情况下运行。 在我尝试用 gulp 编译我的 .ts 文件之前。编译工作正常,但是格式错误的文件(这里是一个 [example][2] 我发现它与已经编译的 fils 一起工作到 js (这些文件来自我在问题中已经提到的快速启动项目。

     [1]: http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5?p=preview
    
    
     [2]: https://plnkr.co/edit/8lOtCy4GPsq9hZH6D38E?p=preview
    

    【讨论】:

      【解决方案2】:

      您为什么不将它构建为带有 Magnolia CLI (NPM) 的 Magnolia 轻量级模块,并将 gulp 作为构建设置输出的一部分运行到 /webresources 文件夹中?
      这样,您就可以轻松地编译所有内容,让 Magnolia 为您提供 js 文件,并可以设置安全性、在运行时重新加载内容以及 Magnolia 通常为您做的所有其他事情。

      有关CLILight Module structurelight development in general 的更多信息。

      【讨论】:

      • 感谢光模块的创意。您是否也有一种用木兰花填充App内容的好方法?我目前管理它的唯一方法是使用 magnolia 的直接组件渲染,它为我提供了包含内容的组件的 html。但我仍在寻找更好的方法来解决这个问题。
      • “填写内容”如“使用 CMS 中的内容以显示在 Angular 应用程序中?我猜,您更喜欢以 JSON 格式而不是 html 格式获取内容,对吧?如果是这样,我'd 建议为组件定义变体,因此当使用 .js(或类似扩展名)请求时,它会被渲染为 json。此处的示例(用于页面):gist.github.com/47fc19d0e66c6cb8bbcaa07b1c66dced 以及将内容渲染为 json 的脚本示例:@987654325 @它使用jsonfn,你可以从:github.com/rah003/neat-jsonfn
      • 是的,填写内容我的意思是使用来自 CMS 的内容以在 AngularApp 模板中使用它。当然 html 在这里是可以的(因为 Angular 模板需要在 html 中),但目前这种“绑定”仅适用于将链接复制到组件直接渲染。我想知道是否有更好的方法来绑定它。由于我是 AngularJS 2(和 1)的新手,我不确定这是否也适用于 JSON 文件。
      • 对不起,我忘了提到我第一次尝试使用 gulp 编译过程,但这对我不起作用。如此处所述:stackoverflow.com/questions/42141044/… 我的下一个尝试是使用 angular-cli 将转译过程与构建过程集成。但最后,我希望能够向 magnolia 网站上的组件添加内容,并且该组件是使用 angularJS 2 构建的(使用 angularJS 1 这不是问题)
      • IMO 这应该不是问题,一旦您构建它并在 light 模块中输出以使其可用于 Magnolia,您还可以在 Magnolia 中拥有组件,其模板将仅加载已编译的 js 资源。应该工作得很好。如果您在尝试这样做时遇到了具体问题,让我们尝试看看接下来会出现什么问题。
      【解决方案3】:

      您不会与 magnolia cms 模板集成。如果您使用 Magnolia CMS REST API 并构建一个与之交互的 Angular 应用程序,那就更好了。

      【讨论】:

      • 我有一个 REST API 来获取公式和其他东西的验证器。但现在我需要为公式建立一个页面。这里最好的目的是什么?你能给我一个好的方法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多