angle.serviceとangular.factory

1073
jacob 2013-01-15 08:36.

サービスを宣言するためにangular.factory()とangular.service()の両方が使用されているのを見てきました。しかし、公式文書のどこにも見つかりません angular.service

2つの方法の違いは何ですか?
どちらを何に使用する必要がありますか(彼らが異なることをすると仮定して)?

9 answers

1272
Gil Birman 2014-02-20 20:46.
  angular.service('myService', myServiceFunction);
  angular.factory('myFactory', myFactoryFunction);

このように自分自身にそれを置くまで、私はこの概念に頭を包むのに苦労しました:

サービス:あなたが書く関数新しくなります-ed:

  myInjectedService  <----  new myServiceFunction()

ファクトリ:作成した関数(コンストラクター)が呼び出されます

  myInjectedFactory  <---  myFactoryFunction()

それをどうするかはあなた次第ですが、いくつかの便利なパターンがあります...

パブリックAPIを公開するサービス関数の作成など:

function myServiceFunction() {
  this.awesomeApi = function(optional) {
    // calculate some stuff
    return awesomeListOfValues;
  }
}
---------------------------------------------------------------------------------
// Injected in your controller
$scope.awesome = myInjectedService.awesomeApi();

または、ファクトリ関数を使用してパブリックAPIを公開します。

function myFactoryFunction() {
  var aPrivateVariable = "yay";

  function hello() {
    return "hello mars " + aPrivateVariable;
  }
  
  // expose a public API
  return {
    hello: hello
  };
}
---------------------------------------------------------------------------------
// Injected in your controller
$scope.hello = myInjectedFactory.hello();

または、ファクトリ関数を使用してコンストラクタを返します。

function myFactoryFunction() {
    return function() {
        var a = 2;
        this.a2 = function() {
            return a*2;
        };
    };
}
---------------------------------------------------------------------------------
// Injected in your controller
var myShinyNewObject = new myInjectedFactory();
$scope.four = myShinyNewObject.a2();

どちらを使用しますか?...

あなたは両方で同じことを達成することができます。ただし、場合によっては、ファクトリにより、より単純な構文でインジェクタブルを作成するための柔軟性が少し向上します。これは、myInjectedServiceは常にオブジェクトである必要がありますが、myInjectedFactoryはオブジェクト、関数参照、または任意の値である可能性があるためです。たとえば、コンストラクターを作成するサービスを作成した場合(上記の最後の例のように)、次のようにインスタンス化する必要があります。

var myShinyNewObject = new myInjectedService.myFunction()

これは間違いなくこれよりも望ましくありません:

var myShinyNewObject = new myInjectedFactory();

(ただし、コントローラー内の新しいオブジェクトは、テスト用にモックするのが難しい追跡困難な依存関係を作成するため、そもそもこのタイプのパターンの使用には注意する必要があります。サービスにオブジェクトのコレクションを管理させることをお勧めします。new()wily-nillyを使用するよりも。)


もう1つ、それらはすべてシングルトンです...

また、どちらの場合も、angularがシングルトンの管理に役立つことにも注意してください。サービスまたは関数を挿入する場所または回数に関係なく、同じオブジェクトまたは関数への同じ参照を取得します。(ファクトリが単に数値や文字列などの値を返す場合を除いて。その場合、常に同じ値を取得しますが、参照は取得しません。)

319
Kirk Strobeck 2014-01-08 16:05.

簡単に言えば ..

const user = {
  firstName: 'john'
};

// Factory
const addLastNameFactory = (user, lastName) => ({
  ...user,
  lastName,
});

console.log(addLastNameFactory(user, 'doe'));

// Service
const addLastNameService = (user, lastName) => {
  user.lastName = lastName; // BAD! Mutation
  return user;
};

console.log(addLastNameService(user, 'doe'));

247
Manish Chhabra 2013-04-10 13:18.

主な違いは次のとおりです。

サービス

構文: module.service( 'serviceName', function );

結果:serviceNameを注入可能な引数として宣言すると、に渡される関数インスタンスが提供されますmodule.service

使用法:挿入された関数参照に追加するだけで呼び出すのに役立つユーティリティ関数共有するのに役立つ( )可能性があります。injectedArg.call( this )または同様に実行することもできます。

工場

構文: module.factory( 'factoryName', function );

結果:factoryNameを注入可能な引数として宣言すると、に渡された関数参照を呼び出すことによって返される値が提供されmodule.factoryます。

使用法:インスタンスを作成するために新しく作成できる「クラス」関数を返す場合に役立つ可能性があります。

これは、サービスとファクトリを使用した例です。AngularJSサービスとファクトリの詳細をご覧ください。

また、サービスとファクトリについて混乱しているstackoverflowに関するAngularJSのドキュメントや同様の質問を確認することもできます。

139
Tyler McGinnis 2014-05-15 06:14.

TL; DR

1)あなたが使用している工場を、あなたがオブジェクトを作成し、その同じオブジェクトを返し、それにプロパティを追加します。このファクトリをコントローラに渡すと、オブジェクトのこれらのプロパティは、ファクトリを通じてそのコントローラで使用できるようになります。

app.controller('myFactoryCtrl', function($scope, myFactory){ $scope.artist = myFactory.getArtist();
});

app.factory('myFactory', function(){
  var _artist = 'Shakira';
  var service = {};

  service.getArtist = function(){
    return _artist;
  }

  return service;
});


2)サービスを使用している場合、Angularは「new」キーワードを使用して舞台裏でサービスをインスタンス化します。そのため、「this」にプロパティを追加すると、サービスは「this」を返します。サービスをコントローラーに渡すと、「this」のプロパティがサービスを通じてそのコントローラーで使用できるようになります。

app.controller('myServiceCtrl', function($scope, myService){ $scope.artist = myService.getArtist();
});

app.service('myService', function(){
  var _artist = 'Nelly';
  this.getArtist = function(){
    return _artist;
  }
});



非TL; DR

1)ファクトリファクトリ
は、サービスを作成および構成するための最も一般的な方法です。TL; DRが言ったこと以上のものは実際にはありません。オブジェクトを作成し、それにプロパティを追加して、同じオブジェクトを返すだけです。次に、ファクトリをコントローラに渡すと、オブジェクトのこれらのプロパティは、ファクトリを介してそのコントローラで使用できるようになります。より広範な例を以下に示します。

app.factory('myFactory', function(){
  var service = {};
  return service;
});

これで、「myFactory」をコントローラーに渡すと、「service」にアタッチするすべてのプロパティを使用できるようになります。

次に、コールバック関数にいくつかの「プライベート」変数を追加しましょう。これらはコントローラーから直接アクセスすることはできませんが、最終的には「サービス」にいくつかのゲッター/セッターメソッドを設定して、必要に応じてこれらの「プライベート」変数を変更できるようにします。

app.factory('myFactory', function($http, $q){
  var service = {};
  var baseUrl = 'https://itunes.apple.com/search?term=';
  var _artist = '';
  var _finalUrl = '';

  var makeUrl = function(){
   _artist = _artist.split(' ').join('+');
    _finalUrl = baseUrl + _artist + '&callback=JSON_CALLBACK';
    return _finalUrl
  }

  return service;
});

ここでは、これらの変数/関数を「サービス」にアタッチしていないことに気付くでしょう。後で使用または変更するために、単に作成しているだけです。

  • baseUrlは、iTunesAPIに必要なベースURLです。
  • _artistは検索したいアーティストです
  • _finalUrlは、iTunesを呼び出す最後の完全に構築されたURLです。makeUrlは、iTunesに適したURLを作成して返す関数です。

ヘルパー/プライベート変数と関数が配置されたので、「service」オブジェクトにいくつかのプロパティを追加しましょう。'service'に何を配置しても、 'myFactory'を渡すコントローラーで直接使用できます。

アーティストを返すか設定するだけのsetArtistメソッドとgetArtistメソッドを作成します。また、作成したURLを使用してiTunesAPIを呼び出すメソッドを作成します。このメソッドは、データがiTunesAPIから返されると満たされるpromiseを返します。Angularでpromiseを使用した経験があまりない場合は、それらについて深く掘り下げることを強くお勧めします。

以下のsetArtistはアーティストを受け入れ、アーティストを設定できるようにします。getArtistは、アーティストcallItunesを返します。最初にmakeUrl()を呼び出して、使用するURLを作成します。$http request. Then it sets up a promise object, makes an $最終URLを使用したhttpリクエスト。$ httpがpromiseを返すため、リクエスト後に.successまたは.errorを呼び出すことができます。次に、iTunesデータを使用して約束を解決するか、「エラーが発生しました」というメッセージを表示して拒否します。

app.factory('myFactory', function($http, $q){ var service = {}; var baseUrl = 'https://itunes.apple.com/search?term='; var _artist = ''; var _finalUrl = ''; var makeUrl = function(){ _artist = _artist.split(' ').join('+'); _finalUrl = baseUrl + _artist + '&callback=JSON_CALLBACK' return _finalUrl; } service.setArtist = function(artist){ _artist = artist; } service.getArtist = function(){ return _artist; } service.callItunes = function(){ makeUrl(); var deferred = $q.defer();
    $http({
      method: 'JSONP',
      url: _finalUrl
    }).success(function(data){
      deferred.resolve(data);
    }).error(function(){
      deferred.reject('There was an error')
    })
    return deferred.promise;
  }

  return service;
});

これで私たちの工場は完成しました。これで、「myFactory」を任意のコントローラーに挿入できるようになり、サービスオブジェクトにアタッチしたメソッド(setArtist、getArtist、およびcallItunes)を呼び出すことができるようになります。

app.controller('myFactoryCtrl', function($scope, myFactory){
  $scope.data = {}; $scope.updateArtist = function(){
    myFactory.setArtist($scope.data.artist); }; $scope.submitArtist = function(){
    myFactory.callItunes()
      .then(function(data){
        $scope.data.artistData = data;
      }, function(data){
        alert(data);
      })
  }
});

上記のコントローラーでは、「myFactory」サービスに注入しています。次に、「myFactory」のデータから取得した$ scopeオブジェクトにプロパティを設定します。上記の唯一のトリッキーなコードは、これまでに約束を扱ったことがない場合です。callItunesがpromiseを返すため、.then()メソッドを使用して、iTunesデータでpromiseが満たされた場合にのみ、$ scope.data.artistDataを設定できます。あなたは私たちのコントローラーが非常に「薄い」ことに気付くでしょう。ロジックと永続データはすべて、コントローラーではなくサービスにあります。

2)サービスサービスの
作成を扱うときに知っておくべき最大のことは、おそらく「new」キーワードでインスタンス化されることです。あなたのJavaScriptの達人にとって、これはあなたにコードの性質への大きなヒントを与えるはずです。JavaScriptのバックグラウンドが限られている方や、「new」キーワードの実際の機能にあまり詳しくない方のために、最終的にサービスの性質を理解するのに役立つJavaScriptの基礎を確認しましょう。

'new'キーワードを使用して関数を呼び出したときに発生する変更を実際に確認するには、関数を作成して 'new'キーワードを使用して呼び出してから、 'new'キーワードを検出したときにインタープリターが何を行うかを示します。最終結果は両方とも同じになります。

まず、コンストラクターを作成しましょう。

var Person = function(name, age){
  this.name = name;
  this.age = age;
}

これは典型的なJavaScriptコンストラクター関数です。これで、「new」キーワードを使用してPerson関数を呼び出すたびに、「this」が新しく作成されたオブジェクトにバインドされます。

次に、Personのプロトタイプにメソッドを追加して、Personの「クラス」のすべてのインスタンスで使用できるようにします。

Person.prototype.sayName = function(){
  alert('My name is ' + this.name);
}

これで、sayName関数をプロトタイプに配置したため、Personのすべてのインスタンスは、そのインスタンスの名前を警告するためにsayName関数を呼び出すことができます。

プロトタイプにPersonコンストラクター関数とsayName関数ができたので、実際にPersonのインスタンスを作成してから、sayName関数を呼び出します。

var tyler = new Person('Tyler', 23);
tyler.sayName(); //alerts 'My name is Tyler'

したがって、Personコンストラクターを作成し、そのプロトタイプに関数を追加し、Personインスタンスを作成し、そのプロトタイプで関数を呼び出すためのコードは、次のようになります。

var Person = function(name, age){
  this.name = name;
  this.age = age;
}
Person.prototype.sayName = function(){
  alert('My name is ' + this.name);
}
var tyler = new Person('Tyler', 23);
tyler.sayName(); //alerts 'My name is Tyler'

次に、JavaScriptで「new」キーワードを使用したときに実際に何が起こっているかを見てみましょう。この例で「new」を使用した後、オブジェクトであるかのように「tyler」でメソッド(sayName)を呼び出すことができることに最初に気付く必要があります。これはオブジェクトであるためです。したがって、最初に、コードでオブジェクトを確認できるかどうかに関係なく、Personコンストラクターがオブジェクトを返していることがわかります。次に、sayName関数はPersonインスタンスに直接ではなくプロトタイプに配置されているため、Person関数が返すオブジェクトは、ルックアップが失敗したときにプロトタイプに委任する必要があることがわかっています。もっと簡単に言えば、tyler.sayName()を呼び出すと、インタープリターは「OK、作成したばかりの「tyler」オブジェクトを調べて、sayName関数を見つけて呼び出します。ちょっと待ってください、ここには表示されません-表示されるのは名前と年齢だけです。プロトタイプを確認させてください。うん、それはプロトタイプにあるようだ、私にそれを呼ばせてください。」

以下は、JavaScriptで「new」キーワードが実際に何をしているのかを考える方法のコードです。これは基本的に上記の段落のコード例です。「インタープリタービュー」またはインタープリターがノート内のコードを見る方法を配置しました。

var Person = function(name, age){
  //The line below this creates an obj object that will delegate to the person's prototype on failed lookups.
  //var obj = Object.create(Person.prototype);

  //The line directly below this sets 'this' to the newly created object
  //this = obj;

  this.name = name;
  this.age = age;

  //return this;
}

'new'キーワードがJavaScriptで実際に何をするかについてのこの知識があれば、Angularでサービスを作成する方が理解しやすいはずです。

サービスを作成するときに理解する最大のことは、サービスが「new」キーワードでインスタンス化されることを知っていることです。その知識を上記の例と組み合わせると、プロパティとメソッドを「this」に直接アタッチし、サービス自体から返されることを認識できるはずです。これを実際に見てみましょう。

Factoryの例で最初に行ったのとは異なり、オブジェクトを作成してからそのオブジェクトを返す必要はありません。これは、前述のように、「new」キーワードを使用して、インタプリタがそのオブジェクトを作成し、に委任するためです。それはプロトタイプです、そして私たちが仕事をしなくても私たちのためにそれを返します。

まず最初に、「プライベート」関数とヘルパー関数を作成しましょう。私たちの工場でまったく同じことをしたので、これは非常によく知られているように見えるはずです。ファクトリの例で行ったので、ここでは各行が何をするのかを説明しません。混乱している場合は、ファクトリの例をもう一度読んでください。

app.service('myService', function($http, $q){
  var baseUrl = 'https://itunes.apple.com/search?term=';
  var _artist = '';
  var _finalUrl = '';

  var makeUrl = function(){
    _artist = _artist.split(' ').join('+');
    _finalUrl = baseUrl + _artist + '&callback=JSON_CALLBACK'
    return _finalUrl;
  }
});

ここで、コントローラーで使用できるすべてのメソッドを「this」にアタッチします。

app.service('myService', function($http, $q){ var baseUrl = 'https://itunes.apple.com/search?term='; var _artist = ''; var _finalUrl = ''; var makeUrl = function(){ _artist = _artist.split(' ').join('+'); _finalUrl = baseUrl + _artist + '&callback=JSON_CALLBACK' return _finalUrl; } this.setArtist = function(artist){ _artist = artist; } this.getArtist = function(){ return _artist; } this.callItunes = function(){ makeUrl(); var deferred = $q.defer();
    $http({
      method: 'JSONP',
      url: _finalUrl
    }).success(function(data){
      deferred.resolve(data);
    }).error(function(){
      deferred.reject('There was an error')
    })
    return deferred.promise;
  }

});

これで、ファクトリと同じように、setArtist、getArtist、およびcallItunesが、myServiceを渡すコントローラーで使用できるようになります。これがmyServiceコントローラーです(これはファクトリーコントローラーとほぼ同じです)。

app.controller('myServiceCtrl', function($scope, myService){
  $scope.data = {}; $scope.updateArtist = function(){
    myService.setArtist($scope.data.artist); }; $scope.submitArtist = function(){
    myService.callItunes()
      .then(function(data){
        $scope.data.artistData = data;
      }, function(data){
        alert(data);
      })
  }
});

前に述べたように、「新しい」が何をするのかを本当に理解すると、サービスはAngularのファクトリとほとんど同じになります。

35
superluminary 2014-12-19 01:48.

手がかりは名前にあります

サービスと工場は互いに似ています。どちらも、他のオブジェクトに注入できるシングルトンオブジェクトを生成するため、同じ意味で使用されることがよくあります。

これらは、さまざまなデザインパターンを実装するために意味的に使用することを目的としています。

サービスはサービスパターンを実装するためのものです

サービスパターンは、アプリケーションが論理的に一貫した機能の単位に分割されるパターンです。例としては、APIアクセサーや一連のビジネスロジックがあります。

Angularモデルは通常サーバーから取得されたJSONオブジェクトであるため、これはAngularで特に重要です。そのため、ビジネスロジックを配置する場所が必要です。

たとえば、Githubサービスを次に示します。それはGithubと話す方法を知っています。それはURLとメソッドについて知っています。それをコントローラーに注入すると、promiseが生成されて返されます。

(function() {
  var base = "https://api.github.com";

  angular.module('github', [])
    .service('githubService', function( $http ) { this.getEvents: function() { var url = [ base, '/events', '?callback=JSON_CALLBACK' ].join(''); return $http.jsonp(url);
      }
    });
  )();

工場はファクトリパターンを実装します

一方、ファクトリはファクトリパターンを実装することを目的としています。ファクトリ関数を使用してオブジェクトを生成するファクトリパターン。通常、これをモデルの構築に使用します。Authorコンストラクターを返すファクトリは次のとおりです。

angular.module('user', [])
  .factory('User', function($resource) { var url = 'http://simple-api.herokuapp.com/api/v1/authors/:id' return $resource(url);
  })

私たちはこれを次のように利用します:

angular.module('app', ['user'])
  .controller('authorController', function($scope, User) { $scope.user = new User();
  })

工場もシングルトンを返すことに注意してください。

工場はコンストラクターを返すことができます

ファクトリは単にオブジェクトを返すだけなので、上記のように、コンストラクタ関数を含め、任意のタイプのオブジェクトを返すことができます。

工場はオブジェクトを返します。サービスは新しい

もう1つの技術的な違いは、サービスとファクトリの構成方法にあります。オブジェクトを生成するためにサービス関数が新しくなります。ファクトリ関数が呼び出され、オブジェクトが返されます。

  • サービスは新しいコンストラクターです。
  • ファクトリは単に呼び出され、オブジェクトを返します。

これは、サービスでは、コンストラクターのコンテキストで、構築中のオブジェクトを指す「this」に追加することを意味します。

これを説明するために、サービスとファクトリを使用して作成された同じ単純なオブジェクトを次に示します。

angular.module('app', [])
  .service('helloService', function() {
    this.sayHello = function() {
      return "Hello!";
    }
  })
  .factory('helloFactory', function() {
    return {
      sayHello: function() {
        return "Hello!";
      }
    }
  });
27
Luis Perez 2015-12-11 02:55.

ここでのすべての答えはサービスと工場に関するもののようです、そしてそれが尋ねられていたのでそれは有効です。しかし、それはそこを含むいくつかの他の人があることを心に留めておくことも重要だprovider()value()constant()

覚えておくべき重要な点は、それぞれが他方の特殊なケースであるということです。チェーンの下流にあるそれぞれの特殊なケースにより、より少ないコードで同じことを実行できます。それぞれにいくつかの追加の制限もあります。

どちらを使用するかを決定するには、どちらを使用するかによって、より少ないコードで必要なことを実行できます。これは、それらがどれほど類似しているかを示す画像です。

完全なステップバイステップの内訳と、それぞれをいつ使用するかについてのクイックリファレンスについては、この画像を入手したブログ投稿にアクセスしてください。

http://www.simplygoodcode.com/2015/11/the-difference-between-service-provider-and-factory-in-angularjs/

24
pixelbits 2014-06-27 14:17.

app.factory( 'fn'、fn)とapp.service( 'fn'、fn)

建設

ファクトリでは、Angularは関数を呼び出して結果を取得します。キャッシュされて注入されるのは結果です。

 //factory
 var obj = fn();
 return obj;

サービスでは、Angularはnewを呼び出すことでコンストラクター関数を呼び出します。構築された関数はキャッシュされ、挿入されます。

  //service
  var obj = new fn();
  return obj;

実装

戻り値コントローラー、実行ブロック、ディレクティブなどに挿入されるものであるため、ファクトリは通常、オブジェクトリテラルを返します。

  app.factory('fn', function(){
         var foo = 0;
         var bar = 0;
         function setFoo(val) {
               foo = val;
         }
         function setBar (val){
               bar = val;
         }
         return {
                setFoo: setFoo,
                serBar: setBar
         }
  });

通常、サービス関数は何も返しません。代わりに、初期化を実行し、関数を公開します。'new'を使用して構築されているため、関数は 'this'を参照することもできます。

app.service('fn', function () {
         var foo = 0;
         var bar = 0;
         this.setFoo = function (val) {
               foo = val;
         }
         this.setBar = function (val){
               bar = val;
         }
});

結論

工場やサービスの利用に関しては、どちらも非常に似ています。それらはコントローラー、ディレクティブ、実行ブロックなどに挿入され、クライアントコードでほぼ同じ方法で使用されます。また、どちらもシングルトンです。つまり、サービス/ファクトリが注入されるすべての場所で同じインスタンスが共有されます。

それで、あなたはどちらを好むべきですか?どちらか-それらは非常に似ているので、違いは取るに足らないものです。どちらか一方を選択する場合は、それらがどのように構築されているかに注意して、適切に実装できるようにしてください。

5
ps. 2015-03-11 05:04.

私は違いを理解しようとしばらく時間を費やしました。

そして、ファクトリ関数はモジュールパターンを使用し、サービス関数は標準のJavaスクリプトコンストラクタパターンを使用すると思います。

2
Dan King 2015-08-07 04:54.

ファクトリパターンは、オブジェクトだけでなく関数や値も返すことができるため、より柔軟です。

私見のサービスパターンにはあまり意味がありません。工場でできることはすべて同じように簡単にできるからです。例外は次のとおりです。

  • 何らかの理由でインスタンス化されたサービスの宣言されたタイプを気にする場合-サービスパターンを使用する場合、コンストラクターは新しいサービスのタイプになります。
  • 他の場所で使用していて、サービスとしても使用したいコンストラクター関数が既にある場合(ただし、何かを注入したい場合は、おそらくあまり使用しません!)。

間違いなく、サービスパターンは、構文の観点から新しいオブジェクトを作成するための少し優れた方法ですが、インスタンス化するのにもコストがかかります。他の人は、angularがサービスを作成するために「new」を使用することを示しましたが、これは完全に真実ではありません-すべてのサービスコンストラクターが異なる数のパラメーターを持っているため、それを行うことはできません。角度が実際に行うことは、ファクトリパターンを内部的に使用してコンストラクター関数をラップすることです。次に、JavaScriptの「新しい」演算子をシミュレートするための巧妙なジゲリーポケリーを実行し、可変数の注入可能な引数を使用してコンストラクターを呼び出します。ただし、ファクトリパターンを直接使用する場合は、この手順を省略できるため、効率がわずかに向上します。コード。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ジョー・バロウロー対ウェイド事件の転覆に対応するNFLは、言葉を言わないことで、腹立たしいが予測可能なPRの結果でした。

別の日、別のヒンジのないLIV記者会見

別の日、別のヒンジのないLIV記者会見

(lから)パット・ペレス、ブルックス・ケプカ、パトリック・リードサウジアラビアのLIVゴルフリーグのさらに別の信じられないほどの記者会見で、スポーツのファンはブルックス・ケプカからでたらめな吐き気と質問回避の驚異的なマスタークラスを受けました。パトリックリード、ブライソンデシャンボー、パットペレス、最近のPGAツアーの脱北者。

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

レッドダガーとマーベルさんがチームを組んでいます。

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

暗号業界最大の沈没船の1つであるスリーアローズキャピタルは、ついにその悲惨さから解放されています。火曜日に、不良債権ヘッジファンドは、債権者からの返済を要求する訴訟の高まりに応えて、バージンアイランド裁判所によって清算を命じられました彼らが3ACに行ったローン。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

Suffragettes Indicam #3: Junho

Suffragettes Indicam #3: Junho

Mais um mês se findando — e metade do ano de 2022 já passou. Sabe o que isso significa? Não, não é hora de verificar se você está cumprindo com suas resoluções de Ano Novo.

多元宇宙—Junø

多元宇宙—Junø

チェーン間アカウントがJunoに登場します。異なるブロックチェーン間でスマートコントラクトの構成可能性と真の相互運用性を提供します。

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

1.ドラマを見た後、起業する考えはありますか?あなたのビジネスはボトルネックに遭遇しましたか?方向性がなくてわからない場合は、ドラマを追いかけて行くことを心からお勧めします。(?)ブラフではなく、最も完璧なビジネス例を隠すドラマがあります。2.ブレイキング・バッドとその弁護士ドラマ「ブレイキング・バッド」を見た友人たちは、演劇の中で、穏やかな表情で、弁護士のソウル・グッドマンに深く感銘を受けなければなりません。口を開けて、感覚の弱い傭兵の性格を持っています。道徳の面で、サル・グッドマンは無意識のうちに劇に欠かせない役割を果たし、彼自身のシリーズ「絶望的な弁護士」(ベター・コール・ソール)を生み出しました。ウェントウのテキストとビデオは、劇中のソウル・グッドマンのテレビコマーシャルです。製品(サービス)、競争戦略、市場ポジショニング、ブランド名、ターゲット顧客グループ、コミュニケーション軸から広告まで、サル・グッドマンの役割のビジネス設定は、「最低」と見なすことができる超超超超超超完全です。ブランドコミュニケーションのコスト」「変化」のモデル。なぜ?私の分析をご覧ください。3.ソウル・グッドマンの「事業戦略」1.基本情報ブランド名:Saul Goodman製品:法律相談サービス対象顧客:麻薬中毒、飲酒運転、事故など。法律知識の欠如は、一般的に公立弁護士にしか余裕がなく、真面目な弁護士も「特別な法律を持つ消費者」を避けます。恐れてはいけない「​​ニーズ」。コミュニケーションの主軸:この国のすべての男性、女性、子供は有罪判決を受けるまで無実だと思います。地域:アルバカーキ市スローガン:Thrallに電話したほうがいいです!(ベター・コール・ソール)広告:2つの可能性のある犯罪状況をシミュレートします+サウルの主張+サウルのスローガン2をより適切に呼び出します。

メインネットガイド— Arbitrum Odyssey Week 2

メインネットガイド— Arbitrum Odyssey Week 2

最新のアップデートを受け取るために私たちに従ってください。ニュースレター:https://www。

Language