Submit Search
Upload
Sails workshop1
•
1 like
•
1,440 views
Tomokatsu Iguchi
Follow
This is a slide at in-house sails workshop.
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 59
Download now
Download to read offline
Recommended
Sails workshop4
Sails workshop4
Tomokatsu Iguchi
Sails workshop2
Sails workshop2
Tomokatsu Iguchi
Sails workshop3
Sails workshop3
Tomokatsu Iguchi
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
Kojiro Fukazawa
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれから
Hiroshi Kawada
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
yoshikawa_t
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
Kazuki Nakajima
Recommended
Sails workshop4
Sails workshop4
Tomokatsu Iguchi
Sails workshop2
Sails workshop2
Tomokatsu Iguchi
Sails workshop3
Sails workshop3
Tomokatsu Iguchi
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
町のウェブ屋があえて 「CMSの機能をダイエットする」 ことから提案する理由
Kojiro Fukazawa
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれから
Hiroshi Kawada
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
yoshikawa_t
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
Kazuki Nakajima
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
Jqm20120210
Jqm20120210
cmtomoda
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
Miho Nakano
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
Visualforce + jQuery
Visualforce + jQuery
Salesforce Developers Japan
WordPress×jQueryMobile
WordPress×jQueryMobile
Takami Kazuya
Introduction for Browser Side MVC
Introduction for Browser Side MVC
Ryunosuke SATO
thymeleafさいしょの一歩
thymeleafさいしょの一歩
Yuichi Hasegawa
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
jQuery Mobileの基礎
jQuery Mobileの基礎
Takashi Okamoto
Sendai.html5#2
Sendai.html5#2
Reoto Wakabayashi
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
Shumpei Shiraishi
Jqm20120804 publish
Jqm20120804 publish
Takashi Okamoto
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Takashi Okamoto
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.
Yuki Higuchi
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発
Kenta Tsuji
20151206 hamamatsu handson
20151206 hamamatsu handson
Six Apart
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
Yukihiro Kitazawa
More Related Content
Similar to Sails workshop1
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
Jqm20120210
Jqm20120210
cmtomoda
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
Miho Nakano
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
Visualforce + jQuery
Visualforce + jQuery
Salesforce Developers Japan
WordPress×jQueryMobile
WordPress×jQueryMobile
Takami Kazuya
Introduction for Browser Side MVC
Introduction for Browser Side MVC
Ryunosuke SATO
thymeleafさいしょの一歩
thymeleafさいしょの一歩
Yuichi Hasegawa
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
jQuery Mobileの基礎
jQuery Mobileの基礎
Takashi Okamoto
Sendai.html5#2
Sendai.html5#2
Reoto Wakabayashi
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
Shumpei Shiraishi
Jqm20120804 publish
Jqm20120804 publish
Takashi Okamoto
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Takashi Okamoto
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.
Yuki Higuchi
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発
Kenta Tsuji
20151206 hamamatsu handson
20151206 hamamatsu handson
Six Apart
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
Yukihiro Kitazawa
Similar to Sails workshop1
(20)
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Jqm20120210
Jqm20120210
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Visualforce + jQuery
Visualforce + jQuery
WordPress×jQueryMobile
WordPress×jQueryMobile
Introduction for Browser Side MVC
Introduction for Browser Side MVC
thymeleafさいしょの一歩
thymeleafさいしょの一歩
Rails基礎講座 part.2
Rails基礎講座 part.2
jQuery Mobileの基礎
jQuery Mobileの基礎
Sendai.html5#2
Sendai.html5#2
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
Jqm20120804 publish
Jqm20120804 publish
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
Web1.0のハイブリッドアプリ開発
Web1.0のハイブリッドアプリ開発
20151206 hamamatsu handson
20151206 hamamatsu handson
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
Sails workshop1
1.
Sails WorkShop (1) 立命館大学
経営学部3回生 井口智勝
2.
SailsWorkShop の目的 <for All> Watnowにリアルタイム通信技術を導入する <for One> 取り敢えず、書けるようになること。(スピード重視) ある程度、体系的な知識化もしていく。
3.
Sails WorkShop Menu 1回目:Sailsって何?CRUDappを作ろう! 2回目:Policiesの使い方 ∼sessionや認証∼ 3回目:appをリアルタイム化しよう! 4回目:Sails✕Marionette 5回目:細かい部分の共有など...
4.
今日のアウトライン sailsとは? Sailsを導入した時の開発の全体像 sailsでCRUDappを作ろう!(1) sailsの感想 2014/11/24(Mon)
5.
sailsとは? node.jsのMVCフレームワーク 2013/3月くらい誕生(github上では2012年) 現在v0.10.2が最新(14/11/22現在)
6.
7.
sailsとは? Socket.io Waterline (ORM部分) lodash (Underscoreとほぼ同じ) less
8.
sailsとは? 設定より規約(CoC) テスト駆動開発(TDD) Don’t repeat yourself リソース指向アーキテクチャー(ROA)
REST http://sailsjs.org/#/getStarted
9.
今日のアウトライン sailsとは? Sailsを導入した時の開発の全体像 sailsでCRUDappを作ろう!(1) sailsの感想 2014/11/24(Mon)
10.
C V MDB CM V Marionette.js (フロントエンド) Cake.php (バックエンド) JSON HandleBars ItemView/CompositeViewModel/Collection これまで
11.
C V MDB CM V Marionette.js (フロントエンド) Cake.php (バックエンド) JSON HandleBars ItemView/CompositeViewModel/Collection これまで
12.
2つの言語を扱う必要があった。 リアルタイム通信に向いていない(可能ではあ ると思うが) これまで
13.
C V MDB CM V Marionette.js (フロントエンド) Sails.js (バックエンド) JSON HandleBars Model/Collection リアルタイムapp ItemView/CompositeView
14.
C V MDB CM V Marionette.js (フロントエンド) Sails.js (バックエンド) JSON HandleBars Model/Collection リアルタイムapp ItemView/CompositeView
15.
今日のアウトライン sailsとは? Sailsを導入した時の開発の全体像 sailsでCRUDappを作ろう!(1) sailsの感想 2014/11/24(Mon)
16.
Sailsでappを 作ってみよう! 参考:http://irlnathan.github.io/sailscasts/
17.
アプリ制作の流れ アプリ全体像把握 環境設定・必要ファイル用意(MVC) Controller内を主に解説
18.
今回作るapp https://github.com/igtm/sails-sample-app1
19.
ページ遷移図 TOP ページ GET: / 新規 作成 GET: /user/new 詳細 GET:
/user/:id 一覧 GET: /user 編集 GET: /user/edit/:id 削除 GET: /user/destroy/:id CRUD
20.
C V MDB Sails.js (バックエンド) リアルタイムapp
21.
アプリ制作の流れ アプリ全体像把握 環境設定・必要ファイル用意(MVC) Controller内を主に解説
22.
環境設定 npm install -g
sails cd 好きなディレクトリへ sails new SailsWorkShop cd SailsWorkShop npm install その後エディタ起動
23.
環境設定 必要ファイルをダウンロードして下さい! bootstrap,jquery,jquery.validate オリジナルjs,css等 assets内にmove、(dependency内に入れる と、先に読み込まれる) view/layoutをチェッ ク!詳しい設定はtask/pipeline.js内で設定!
24.
controllerとmodel sails generate api
user api : controllerとmodelを作るよ!
25.
User.js (model) schema: true, attributes:
{ name: { type: 'string', required: true }, title: { type: 'string' }, email: { type: 'string', email: true, required: true, unique: true }, encryptedPassword: { type: 'string' } }
26.
module.exports = function(req,
res, next){ res.locals.flash = {}; if(!req.session.flash) return next(); res.locals.flash = _.clone(req.session.flash); return next(); }; policies/flash.js作成
27.
View作成 view/userフォルダ作成(user関連) index.ejs edit.ejs new.ejs
show.ejs view/staticフォルダ作成(初期ページ) index.ejs(Topページ)
28.
user/index.ejs <div class="container"> <h3>Users</h3> <table class="table"> <tr> <th>ID</th> <th>Name</th> <th>Title</th> <th>Email</th> <th></th> <th></th> <th></th> </tr> <%
_.each(users, function(user) {%> <tr data-id="<%= user.id %>" data- model="user"> <td><%= user.id %></td> <td><%= user.name %></td> <td><%= user.title %></td> <td><%= user.email %></td> <td><a href='/user/show/<%= user.id %>' class="btn btn-sm btn-primary">Show</a></ td> <td><a href='/user/edit/<%= user.id %>' class="btn btn-sm btn-warning">Edit</a></td> <td><form action="/user/destroy/<%= user.id %>" method="POST"> <input type="hidden" name="_method" value="delete"/> <input type="submit" class="btn btn- sm btn-danger" value="Delete"/> <input type="hidden" name="_csrf" value="<%= _csrf %>"/> </form></td> <!-- <td><a href='/user/destroy/<%= user.id %>' class="btn btn-sm btn- danger">Delete</a></td> --> </tr> <% })%> </table> </div>
29.
<form action="/user/create" method="POST"
id="sign-up-form" class="form- signin"> <h2 class="form-signin-heading">Create an account</h2> <input type="text" class="form-control" placeholder="your name" name="name"/> <input type="text" class="form-control" placeholder="your title" name="title"/ > <input type="text" class="form-control" placeholder="email" name="email"/> <input type="password" id="password" class="form-control" placeholder="password" name="password"/> <input type="password" class="form-control" placeholder="password confirmation" name="confirmation"/> <br/> <input type="submit" class="btn btn-lg btn-primary btn-block" value="Create Account"/> <input type="hidden" name="_csrf" value="<%= _csrf %>"/> </form> user/new.ejs
30.
<form action="/user/update/<%= user.id
%>" method="POST" class="form-signin"> <h2>編集画面</h2> <input value="<%= user.name %>" name="name" type="text" class="form-control"/> <input value="<%= user.title %>" name="title" type="text" class="form-control"/> <input value="<%= user.email %>" name="email" type="text" class="form-control"/> <input value="編集" type="submit" class="btn btn-lg btn- primary btn-block"/> <input value="<%= _csrf %>" name="_csrf" type="hidden"/> </form> user/edit.ejs
31.
<div class="container"> <h1><%= user.name
%></h1> <h3><%= user.title %></h3> <hr> <h3>Contact: <%= user.email %> </h3> <a class="btn btn-medium btn-primary" href="/user/edit/<%= user.id%>">Edit</a> </div> user/show.ejs
32.
<div class="container"> <div class="jumbotron"> <h1>activeOverload</h1> <h2>.....tracking
app activity better than the NSA since 1899.</h2> <a href="/user/new" class="btn btn-lg btn-success">sign up now!</a> </div> </div> static/index.ejs
33.
設定 config/routes内 '/': { view: 'static/index' } config/policies内 //
'*': true, '*': ‘flash’ config/csrf内 true config/blueprints内 action rest shortcut をtrue
34.
アプリ制作の流れ アプリ全体像把握 環境設定・必要ファイル用意(MVC) Controller内を主に解説
35.
こっから本題! (コピペせずに書いていくと理解が深 まると思います) CRUDアプリをつくる
36.
C (作成)を作る CRUD
37.
new new : function(req,res{ res.view(); }, /user/newのリクエストでここに来る。 res.view()で自動的にuser/new.ejsに飛ぶ
38.
ここで一回 見てみましょう!! TOP ページ GET: / 新規 作成 GET: /user/new CRUD sails
liftでOK
39.
R (表示)を作る CRUD
40.
index // 一覧表示。user全ての配列を取得 index: function(req,
res, next){ User.find(function foundUsers (err, users){ if(err) return next(err); res.view({ users: users }); }); },
41.
show // 個別ページ id
-> そのidのuserオブジェクトをviewへ送り描画 show: function(req, res, next){ User.findOne(req.param('id'), function foundUser(err, user){ if(err) return next(err); if(!user) return next(); res.view({ user:user }); }); },
42.
TOP ページ GET: / 新規 作成 GET: /user/new 詳細 GET:
/user/:id 一覧 GET: /user CRUD ここで一回 見てみましょう!! sails liftでOK /userを見てみよう!
43.
U (編集)を作る CRUD
44.
edit edit: function(req, res){ User.findOne(req.param('id'),
function foundUser (err, user){ if(err) return next(err); if(!user) return next(); res.view({ user: user }); }); },
45.
update update: function(req, res,
next){ User.update(req.param('id'), req.params.all(), function userUpdated(err){ if(err){ return res.redirect('/user/edit/'+ req.param('id')); } res.redirect('/user/show/' + req.param('id')); }) },
46.
TOP ページ GET: / 新規 作成 GET: /user/new 詳細 GET:
/user/:id 一覧 GET: /user 編集 GET: /user/edit/:id CRUD ここで一回 見てみましょう!! editを押してみよう!
47.
D (削除)を作る CRUD
48.
destroy destroy: function(req, res,
next){ User.findOne(req.param('id'), function foundUser(err, user) { if(err)return next(err); if(!user) return next("User doesn't exist."); User.destroy(req.param('id'), function userDestroyed(err) { if(err) return next(err); }); res.redirect('/user'); }); }
49.
TOP ページ GET: / 新規 作成 GET: /user/new 詳細 GET:
/user/:id 一覧 GET: /user 編集 GET: /user/edit/:id 削除 GET: /user/destroy/:id CRUD CRUD完成!! deleteを押してみよう!
50.
Good Job! 今日はここまでです! (というか僕の理解が追いついて無いだけなんですが(笑))
51.
まとめ
52.
今回使ったSailsのまとめ 【基本】 ・アクション定義 index: function(req, res,
next){ // 操作 }
53.
【Model】//RESTは最初からある ・model全件返す(Modelは任意の名前) Model.find(callback(err, models)) ・1つmodelを見つける Model.findOne(req.param(‘id’), callback(err,
model)) ・アップデート Model.update(req.param(‘id), req.params.all(), callback(err)) ・削除 Model.destroy(req.param(‘id), callback(err)) 今回使ったSailsのまとめ
54.
【View】 ・JSON返却 res.json({ hoge: hoge
}); ・view描画 res.view({ hoge: hoge }); 【その他】 ・リダイレクト res.redirect(URL); ・よくあるエラー処理 if(err) return next(err) if(!model) return next(); 今回使ったSailsのまとめ
55.
今日のアウトライン sailsとは? Sailsを導入した時の開発の全体像 sailsでCRUDappを作ろう!(1) sailsの感想 2014/11/24(Mon)
56.
Sailsの感想 非常に考えられている
57.
Sailsの感想 フォルダ分けがきっちりとされていて、構成を 考えなくて住む コメントが非常に丁寧
58.
sailsを 勉強するときの注意事項 バージョンに気をつける!(--linkerとか無 くなってる) リソースは基本英語
59.
参考文献 ソース公開してます!https://github.com/igtm/sails- sample-app1 http://nantokaworks.com/sails0-10-tips/ v0.1.0の sails新機能まとめ http://magnet88jp.hateblo.jp/entry/ 2014/08/10/162358 lift時に123を選ぶときのtips http://hiyokur.hatenablog.com/entry/ 2013/12/17/165140
Download now