の意味

このチュートリアルでは、ユーザーが入力またはカスタマイズする必要のある行はになります。

残りはほとんどコピーアンドパスタブルである必要があります。

Sails.jsとは何ですか?

Sails.jsを使用すると、カスタムのエンタープライズグレードのNode.jsアプリを簡単に作成できます。 これは、Ruby on RailsのようなフレームワークのMVCパターンを模倣するように設計されていますが、最新のアプリの要件をサポートしています。つまり、スケーラブルでサービス指向のアーキテクチャーを備えたデータ駆動型APIです。 チャット、リアルタイムダッシュボード、またはマルチプレイヤーゲームの構築に特に適しています。

言い換えると、Sails.jsを使用すると、Model-View-Controllerパターンを使用してNode.jsでアプリを簡単に作成し、コードを整理して保守を容易にすることができます。 Sails.jsには、モデルとコントローラーの作成を自動化するさまざまなコマンドが用意されているため、時間を節約し、アプリをより高速に作成できます。 (ビューは、テンプレート/views/:controller/:method.ejsの/ viewsディレクトリに手動で作成する必要があります)。 さまざまなテンプレート言語を使用できますが、EJSがデフォルトであり、EJSを使用するのが最も安全で簡単です。

Sails.jsにはさまざまな「アダプター」もあり、アプリで使用したいほぼすべてのデータベースを使用できます。 これにより、MongoDBの使用を要求する他のMVCフレームワークとは異なり、最大限の柔軟性が得られます。

これらすべてと、デプロイ時にすべてのファイルが連結されて縮小されるという事実は、アプリを構築するためにメインフレームワークを設定するのに多くの時間を費やす必要がないことを意味します。これは、すべて準備ができて簡単だからです。使用します。

UbuntuVPSへのNode.jsのインストール

  1. 前提条件のインストール:
    sudo apt-get install python-software-properties python g++ make

    Ubuntu 12.10を使用している場合は、次のことも行う必要があります。

    sudo apt-get install software-properties-common
  2. Joyent(Node.jsのメンテナ)が推奨するPPAリポジトリを追加します。
    sudo add-apt-repository ppa:chris-lea/node.js
  3. パッケージリストを更新します。
    sudo apt-get update
  4. Node.jsをインストールします。
    sudo apt-get install nodejs

Sails.jsのインストール

帆の最新の安定したリリースをインストールするには、以下を実行する必要があります。

sudo npm install sails -g

The -g フラグは、帆がグローバルにインストールされ、コマンドラインツールとして使用できることを保証します。

Sailsアプリの作成

アプリを配置するディレクトリに移動する必要があります。例: /var/www 次に実行します:

sails new project-name

これにより、必要なファイルがプロジェクトに追加され、project-nameという名前のディレクトリが作成されます。

Sails.jsサーバーの起動

ボイラープレートアプリを表示するには、ディレクトリをプロジェクトディレクトリに変更してから、サーバーを起動する必要があります。

cd project-name

それから:

sails lift

これにより、 123.456.78.90 :1337で実行されるサーバーが作成され、ページは次のようになります(数回変更されているため、この記事を読んでいる時期によっては異なる場合があります) )::

コントローラの作成

コントローラの作成は簡単です。sailsCLIがすべての難しい作業を行います。 例えば メソッド「index、show、edit、delete」を使用して user というコントローラーを作成するには、次のコマンドを実行するだけです。

sails generate controller user index show edit delete

これにより、ファイルが作成されます api/controllers User Controller.jsと呼ばれ、次のようになります(関数の機能と機能に関する役立つヒントが得られます)。

/*---------------------
        :: User
        -> controller
---------------------*/
var UserController = {
  
  // To trigger this action locally, visit: 'http://localhost:port/user/index'
  index: function(req,res) {
      
        // This will render the view: /var/www/sails-test/views/user/index.ejs
        res.view();

  },

  // To trigger this action locally, visit: 'http://localhost:port/user/show'
  show: function(req,res) {
      
        // This will render the view: /var/www/sails-test/views/user/show.ejs
        res.view();

  },

  // To trigger this action locally, visit: 'http://localhost:port/user/edit'
  edit: function(req,res) {
      
        // This will render the view: /var/www/sails-test/views/user/edit.ejs
        res.view();

  },

  // To trigger this action locally, visit: 'http://localhost:port/user/delete'
  delete: function(req,res) {
      
        // This will render the view: /var/www/sails-test/views/user/delete.ejs
        res.view();

  },

};
module.exports = UserController;

モデルの作成

モデルの作成は、Sails.jsを使用してコントローラーを作成するのと同じくらい簡単です。 心配するデータベースの移行はありません。Sails.jsがすべてをインテリジェントに実行します。 デフォルトのファイル内データベース、MySQL、または他の多くのデータベースタイプを「アダプター」を介して使用できます。アダプターは、作成者のGitHubリポジトリを検索または検索することで見つけることができます。

モデルを作成するときに、後で追加することにより、そのモデルに追加するフィールドを次の形式で指定できます。 [name]:[type].

例えば 「名前、電子メール、パスワード」フィールドを持つ user というモデルを作成するには、次のコマンドを実行するだけです。

sails generate model user name:string email:string password:string

これにより、ファイルが作成されます api/models User .jsと呼ばれ、次のようになります。

/*---------------------
        :: User
        -> model
---------------------*/
module.exports = {
    attributes: {
        
        // Simple attribute:
        // name: 'STRING',

        // Or for more flexibility:
        // phoneNumber: {
        //    type: 'STRING',
        //    defaultsTo: '555-555-5555'
        // }

        name: {
            type: 'STRING'
        },

        email: {
            type: 'STRING'
        },

        password: {
            type: 'STRING'
        },

    }
};

ブループリントAPIの作成

コントローラとモデルを同時に生成できます。また、 / user にアクセスして、保存されているデータの生のjson表現を表示できるBlueprintAPIを生成することもできます。

sails generate user

Blueprint APIは、モデルとコントローラーの間に接続を作成することで短期的に時間を節約し、そのルートを使用してデータベースに新しいレコードを追加できるようにします。 http:// localhost / user / create?name = John + Smithにアクセスすると、「John Smith」という名前の新しいユーザーが作成され、その中で作成されたすべてのレコードのJSON配列が出力されます。モデルなので、前のURLは次のように出力されます。

{"name":"John Smith","createdAt":"2013-07-10T20:10:01.038Z","updatedAt":"2013-07-10T20:10:01.038Z","id":1}

実際には、コントローラーに新しいメソッドを変更または追加する必要がありますが、すべての新しいコントローラーには、デフォルトでcreate()、find()、findAll()、update()、およびdestroy()メソッドがあります。 ただし、これらをオーバーライドして、無効にしたり、単にカスタマイズしたりすることができます。

挿入するデータのJSON文字列を使用してPOSTリクエストを実行することで、データを入力することもできます。

{
  name: 'John Smith'
}

ルートの追加

開くことでルートを追加できます config/routes.js. このファイルはコメントを使用して非常によく文書化されているので、画像を追加するだけで、説明するのではなく、画像を追加するだけでよいと思います。

サーバーを本番モードに設定する

アプリを本番環境にデプロイする準備ができたら、ポート1337から80に移動すると、Sails.jsを使用してこれを簡単に行うことができます。

  1. config /application.jsを開きます。
  2. これがサーバー上の唯一のアプリである場合: 7行目で変更:
    port: 1337,

    port: 80,
  3. サーバーに複数のアプリがあり、NGINXを実行している場合:サーバーブロック構成を変更して、Sails.jsアプリが実行されているポートをプロキシするように追加する必要があります。
    location / {
        proxy_pass         http://127.0.0.1:1337/;
        proxy_redirect     off;
    
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    

    }

    (Sails.jsのポートを1337のままにします)

  4. サーバーに複数のアプリがあり、Apacheを実行している場合:次を追加して、Sails.jsアプリが実行されているポートをプロキシするようにvhost構成を変更する必要があります。
    ProxyRequests Off
    

    <Proxy *> Order deny,allow Allow from all </Proxy>

    ProxyPass / http://127.0.0.1:1337 ProxyPassReverse / http://127.0.0.1:1337

    (Sails.jsのポートを1337のままにします)

  5. 15行目で、変更:
    environment: 'development',

    environment: 'production',
  6. 次のコマンドを実行して、foreverをインストールします。
    sudo npm install -g forever

    Foreverは、ターミナルを常に開いたままにすることなく、アプリをバックグラウンドで実行できるようにするnode.jsパッケージです。

  7. 走る:
    forever start /path/to/app.js

    バックグラウンドプロセスを開始します。 forever list と入力すると、アプリがバックグラウンドで実行されていることを確認できます。 これにより、実行中のすべてのnode.jsプロセスが一覧表示されます(各アプリはサーバー上でプロセスとして実行されます)

投稿者:Rob Brazier