ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 如何将Angular和Vue项目合并在一起?

2019-06-11 04:19:23  阅读:512  来源: 互联网

标签:javascript angularjs node-js angular-ui-bootstrap vue-js


我读了这方面的各种资源,但仍然无法找到方法.这里的问题是我想将两个不同的项目合并在一起.我的同事正在研究他在AngularJS中设计的一个功能.我使用VueJS开发了我的功能.管理层随后决定将两者合并在一起.在第一个项目启动的用户界面中,将提供一个链接,从我的网页在VueJS中设计的位置开始.

我使用npm start在本地运行我的项目在VueJS服务器上,也使用快速服务器.但是第一个项目只运行节点app.js然后在本地运行.

以下是他的项目描述的截图:

enter image description here

这是我的项目细节:

enter image description here

我的index.html文件包含以下内容:

<!-- index.html -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Error Details and Description</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  </head>
  <body>
    <div id="app"></div>
    <script src="bundle.js"></script>
  </body>
</html>

第一个项目中包含的另一个index.html包含我的应用程序将通过其启动的链接的代码.该链接包含此代码,可以重定向到我的代码:

<li><a><i class="fa fa-edit"></i>Administration<span class="fa fa-chevron-down"></span></a>
                        <ul class="nav child_menu">
                          <li><a href="#!errorinput"><i class="fa fa-database"></i>Manage Error Descriptions</a></li>

相应的errorinput.js文件包含以下代码:

'use strict';

app.config(function ($routeProvider) {
    $routeProvider
        .when("/errorinput", {
            templateUrl: "views/errorinput.html"
        });
});


app.controller('ErrorInputCtrl', ['$scope', '$http', function ($scope, $http) {
 // Implement me!
}]);

知道如何将它们合并在一起以获得所需的功能吗?

编辑:所以我确实找到了在一台服务器上运行这两个项目的方法.我在我的VueJS项目中包含了AngularJS的所有依赖项.角应用程序运行正常,但现在,VueJS网页没有与angularJS一起出现.当我给出我的VueJS应用程序的相对路径时,它似乎在后台.任何想法我现在如何在这个引导的AngularJS应用程序中路由我的VueJS?这里提到了有关此问题的更多详细信息:

more details

解决方法:

And they are entirely independent from each other as well. There is no
link in the first project app from where my app needs to be launched.

看起来你可以尝试酷Micro Frontend.
MicroFrontend是一种新的应用程序范例,前端服务被组织为不同的应用程序,并通过前端的事件总线进行通信.

有不同的方法来实现这一点:

>在不同的iFrame中渲染它们并通过postMessage API进行通信
>在不同的URL上渲染它们,但使用具有公共依赖关系管理的event bus.
>使用单SPA Framework.

由于您说应用程序不需要相互通信,因此SPA框架对您来说更容易.它是该领域非常成熟的框架,支持前端框架,包括Vue和AngularJS,但不限于这些选项.

如何使这项工作有效地创建一个具有不同div的HTML:

<div id="angular1"></div>
<div id="vue-app"></div>

这样他们就不会互相改变.

创建一个SPA文件作为应用程序的配置.

import * as singleSpa from 'single-spa';

singleSpa.registerApplication('angular', () =>
  import ('../app1/angular1.app.js'), pathPrefix('/app1'));
singleSpa.registerApplication('vue', () =>
  import ('../app2/vue.app.js'), pathPrefix('/app2'));

singleSpa.start();

function pathPrefix(prefix) {
  return function(location) {
    return location.pathname.startsWith(`${prefix}`);
  }
}

您可以在此配置Here上找到更多详细信息

安装相应的SPA插件(单例spa-vue和单spa-angular)后,我们必须告诉single-spa安装和卸载框架所需的生命周期挂钩.

在vue的情况下:

import Vue from 'vue/dist/vue.min.js';
import singleSpaVue from 'single-spa-vue';

const vueLifecycles = singleSpaVue({
  Vue,
  appOptions: {
    el: '#vue-app'
    template: `<p>Vue Works</p>`
  }
});

export const bootstrap = [
  vueLifecycles.bootstrap,
];

export const mount = [
  vueLifecycles.mount,
];

export const unmount = [
  vueLifecycles.unmount,
];

您可以使用Vue和Angular Here.找到示例应用程序
Here是单一水疗中心制造商的分步指南.还看看他们的examples.

希望有所帮助.

标签:javascript,angularjs,node-js,angular-ui-bootstrap,vue-js
来源: https://codeday.me/bug/20190611/1216332.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有