angularjs – 是否可以在Web worker中运行Angular?

前端之家收集整理的这篇文章主要介绍了angularjs – 是否可以在Web worker中运行Angular?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个带角度的SPA应用程序,我希望我的角色服务“WebService”与Web工作者共享.目标是共享一个“WebService”,以便我可以在后台(在Web工作者中)和前端(角度应用程序)中使用相同的服务.
这可行吗?

附加信息:
这里的想法是用于远程服务器上的数据同步,因此您使主应用程序使用“在线|离线”模式,将数据保存到本地Web存储和|或远程服务器(使用“ WebService“)和工作人员透明地使用相同的服务来同步数据……

你能展示一些在工作者中运行应用程序的代码吗?
感谢您的反馈意见

是的,这是可能的.有了Web工作环境的一点点,您可以在Web worker中运行Angular,并拥有一个在前台和工作者Angular应用程序中使用的模块.这个答案需要和扩展 another of my answers regarding unit testing代码

在主应用程序中,在工厂/服务中,您可以拥有类似的东西

var worker = new $window.Worker('worker.js');

然后在worker.js中,您可以修改全局范围,以便加载Angular:

// Angular needs a global window object
self.window = self;

// Skeleton properties to get Angular to load and bootstrap.
self.history = {};
self.document = {
  readyState: 'complete',querySelector: function() {},createElement: function() {
    return {
      pathname: '',setAttribute: function() {}
    }
  }
};

// Load Angular: must be on same domain as this script
self.importScripts('angular.js');

// Put angular on global scope
self.angular = window.angular;

// Standard angular module definitions
self.importScripts('worker-app.js');
self.importScripts('shared-module.js');

// No root element seems to work fine
self.angular.bootstrap(null,['worker-app']);

您可以像任何其他模块一样定义共享模块:

angular.module('shared-module',[])
.factory('SharedFactory',function() {
  return {
    myFunc: function() {
      return 'some-data';
    }
  };
});

在worker-app.js中,您可以使用共享模块定义主应用程序

var workerApp = angular.module('worker-app',['shared-module']);

例如,将共享组件注入到工作者应用程序的运行回调中.

workerApp.run(function(SharedFactory,$window) {
  $window.onmessage = function(e) {
    var workerResult = SharedFactory.myFunc();
    $window.postMessage(workerResult);
  };
});

在前景Angular应用程序中,您可以通过通常的脚本标记包含shared-module.js,并像往常一样使用依赖注入来访问其组件

var foregroundApp = angular.module('forground-app',['shared-module']);
foregroundApp.controller(function(SharedFactory,$scope) {
  // Use SharedFactory as needed
});

要确认,前台和工作者应用程序中共享模块的实例是不同的.

原文链接:https://www.f2er.com/angularjs/143419.html

猜你在找的Angularjs相关文章