예, 가능합니다. 웹 작업자 환경의 해킹 비트를 사용하면 웹 작업자에서 각도를 실행할 수 있으며 전경 및 작업자 각도 앱에 모두 사용되는 모듈을 사용할 수 있습니다. 이 답변이 소요 및 공장/서비스, 주요 응용 프로그램에서 another of my answers regarding unit testing
의 코드를 확장, 당신은 그런 worker.js
, 당신은 각도 얻을만큼 글로벌 범위를 수정할 수 있습니다
var worker = new $window.Worker('worker.js');
뭔가를 할 수 있습니다
// 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']);
을 그리고 당신은 다른처럼 shared-module
을 정의 할 수 있습니다 :로드
angular.module('shared-module', [])
.factory('SharedFactory', function() {
return {
myFunc: function() {
return 'some-data';
}
};
});
,
는 worker-app.js
에서는 작업자 응용 프로그램의 run
콜백으로, 예를 들어, 공유 구성 요소를 주입
var workerApp = angular.module('worker-app', ['shared-module']);
공유 모듈을 사용하여, 주요 응용 프로그램을 정의 할 수 있습니다. 전경 각도 응용 프로그램에서
workerApp.run(function(SharedFactory, $window) {
$window.onmessage = function(e) {
var workerResult = SharedFactory.myFunc();
$window.postMessage(workerResult);
};
});
, 당신은 보통의 스크립트 태그를 통해
shared-module.js
을 포함하고, 전경,
var foregroundApp = angular.module('forground-app', ['shared-module']);
foregroundApp.controller(function(SharedFactory, $scope) {
// Use SharedFactory as needed
});
확인하려면 평소와 같이 shared-module
의 인스턴스를 구성 요소에 액세스 할 의존성 주입을 사용할 수 있습니다 및 근로자 앱이 다릅니다.
"동일한 서비스"로 동일한 서비스의 동일한 메모리 내 인스턴스 또는 실제로 동일한 메모리 인스턴스에서 사용할 수있는 코드를 의미 할 수 있습니까? –
나는 동일한 코드를 사용할 수 있음을 의미했습니다 ... – Brett