Yeomanを使用してbackbone,requirejsプロジェクトを生成する
背景
今はフロントエンドの開発をしていて、どんなフレームワークを使わなくても、自分がフロントエンドだと言うのが耻ずかしくて、何のReact、angular、backbone、jqueryだけで人に挨拶するのが耻ずかしいです.例えば、今は小さなプロジェクトをしたいと思って、フレームワークを選んで、ドキュメントの雲の中を見て、他の人の実践を見て、もっと迷って、彼が何をするのか全然分かりません.
技術は人のために奉仕して、フレームワークを使うためにフレームワークを使うことができなくて、半日勉強すればするほど分からないと感じて、いったい私がフレームワークを使うのか、それともフレームワークを使うのか.もし1つのツールがあれば、1つのキーで対応するフレームワークを生成するベストプラクティス、モジュール化などは1つの生成だけで、ソフトウェア開発のIDEのように、爽やかではないでしょうか.
外国人はとっくにこの問題を考えていたので,この道具はYeomanと呼ばれている.
の準備をフレームワーク自体を忘れ、モジュール化に専念し、プロジェクト自体 node,gitのlunixまたはwindows を装着
backbone+requirejsのプロジェクトを構築
最初のインストールyoeman
2つ目は、使用するプロジェクトテンプレートをインストールします.
ここではbackboneを例にhttps://github.com/yeoman/generator-backbone
ステップ3 backboneプロジェクトの作成
事前に準備したプロジェクトディレクトリに入力します. generator-backboneがインストールされていない場合は、yoは対応するgenerator がないことを示します. yoのヒントはとても友好的で、多くの問題はshellの中の英語のテキストの中で助けを得ることができます インストール中にいくつかのオプションを入力します.たとえば、
このgeneratorは、sassが書いたbootstrap、coffeescript、requirejs、modernizrを自動的に生成することができ、不思議なことに、多くの細部の関心を省いて、科学技術は生産に奉仕しています.
完了後:
**翻訳:選択のほか、html 5テンプレート、jquery、backboneも含まれています.js、bootstrap、coffeescript、requirejs modernizrが作成したファイルには、上図に示すようにyoemanが生成したプロジェクトの構造が含まれています.** package.json-npm依存構成 bower.json-bower依存構成 gruntfile.js-gruntパッケージ構成 app/-プロジェクトルート test/-テストファイル 完了すると、npm install&&bower installが自動的に走ります.
npmの多くはnodeが書いた開発導入クラスツールライブラリで、bowerを含め、bower自体はnpm installにインストールされています.bowerはフロントエンドプロジェクトで使用されるライブラリインストールツールで、jquery、backbone、bowerに入っているものはnodeとは関係ありません.
テストの開始
gruntは、プロジェクトでテストサーバを起動したり、sassを動的に処理したり、coffeescriptをcoffeescriptしたり、livereload(ブラウザに更新を反映したりする)を動的に処理したりするためのパッケージおよび導入ツールです.
yoemanのgruntは通常serveメソッドを提供します.grunt buildでパッケージ化することもできます.パッケージされたファイルはdistディレクトリの下に生成されます.
使用
図のようなテストサーバの起動
現在、空のプロジェクトファイルは次のとおりです.
index.htmlは入り口で、requireでmainを呼び出しました.js(coffeeに慣れていないのかjsを使っているのか、coffeeを採用すればmain.coffeeです)
main.js
現在のmain.jsは、簡単なrequire構成を行い、require呼び出しを行い、backboneをロードし、backboneを呼び出した.history.start().
血肉を増やす
今、このプロジェクトは骨格がすでにあると言ってもいいし、脳細胞を使う必要はありません.いいですね.次の仕事は少し脳細胞を使う必要があります.モジュールを追加したり、対応するコンポーネントを提供したりすることです.backboneでは: model:データモジュール view:ページコンポーネント collection:モジュールグループ route:ルーティングモジュール、ルーティング機能 を提供する
これらのモジュールとコンポーネントをyoemanで生成します.私が頭を使うと言ったのは、この時あなたのプロジェクトに基づいて、抽象的なことをして、どのモジュールが必要なのか、どの部分が必要なのかを考えなければならないからです.
生成方法はコマンドラインに入力することです
いくつかのものを生成した後、私たちのプロジェクトは大体このようにします.
対応するモジュールは、すべて自動的にscriptに生成され、同時にviewsモジュールは自動的にペアリングのtemplatesファイルを生成し、デフォルトのシステムはejs htmlテンプレートエンジンを採用し、対応するviewsの下のjsは自分の*を呼び出す.ejs,具体的な実践はコードを見ればわかる.
自分で作るもの
各種のモジュールは抽象的になって、生成して、それからどのようにそれらをページの中に置いて、どのようにルートを行いますか?
実はこれも私が悩み始めた問題で、それからいくつかの研究を経て、このように呼び出したことに気づいた.
まず、backboneプロジェクトには通常、最上位レベルのappViewのview、ダイナミックなページボディがあります.(静的なページ本体はindex.htmlに書いてあります).hashに基づいてページを位置決めするルーティングもあります.だから、私たちはこの2つのものをmainに書くだけです.jsでいいので、残りはrequireで処理します.
コードは次のとおりです.
海外ではこのようなAMD依存前置法が流行しており、私たちが生成したappViewとroutesを直接入口呼び出しに入れ、これらはクラスメソッドを返し、直接newすればいいのです.
new backbone viewの場合、intializeメソッドが呼び出されます.
appView.js
もう一度ロuterを見てみましょう
小結
もちろん、現在のプロジェクトも粗末で、backboneのモジュール間の関連イベントの多くは、手動で完了する必要があります.しかし、前期のいくつかの重複作業については、yeomanで効率的に開発することができ、下位フレームワークの原理と実現には関心を持たず、業務抽象に重点を置くことができます. yoemanはチケットの性質の項目にぴったりだと思います. 対応するフレームワークの実践応用を学びたいなら、yoemanのgeneratorがどのようにしているかを見てみましょう. yoemanが自動的に生成したテンプレートを見ると、海外の新しい技術を学ぶのに役立ち、フレームワークを理解するのに役立ちます.
今はフロントエンドの開発をしていて、どんなフレームワークを使わなくても、自分がフロントエンドだと言うのが耻ずかしくて、何のReact、angular、backbone、jqueryだけで人に挨拶するのが耻ずかしいです.例えば、今は小さなプロジェクトをしたいと思って、フレームワークを選んで、ドキュメントの雲の中を見て、他の人の実践を見て、もっと迷って、彼が何をするのか全然分かりません.
技術は人のために奉仕して、フレームワークを使うためにフレームワークを使うことができなくて、半日勉強すればするほど分からないと感じて、いったい私がフレームワークを使うのか、それともフレームワークを使うのか.もし1つのツールがあれば、1つのキーで対応するフレームワークを生成するベストプラクティス、モジュール化などは1つの生成だけで、ソフトウェア開発のIDEのように、爽やかではないでしょうか.
外国人はとっくにこの問題を考えていたので,この道具はYeomanと呼ばれている.
の準備を
backbone+requirejsのプロジェクトを構築
最初のインストールyoeman
npm install -g yo
-g
はglobalです.現在のディレクトリではなく、あなたのパソコンにインストールされ、システムの状態にyoコマンドが追加されました.2つ目は、使用するプロジェクトテンプレートをインストールします.
ここではbackboneを例にhttps://github.com/yeoman/generator-backbone
npm install -g generator-backbone
ステップ3 backboneプロジェクトの作成
事前に準備したプロジェクトディレクトリに入力します.
yo backbone
このgeneratorは、sassが書いたbootstrap、coffeescript、requirejs、modernizrを自動的に生成することができ、不思議なことに、多くの細部の関心を省いて、科学技術は生産に奉仕しています.
完了後:
**翻訳:選択のほか、html 5テンプレート、jquery、backboneも含まれています.js、bootstrap、coffeescript、requirejs modernizrが作成したファイルには、上図に示すようにyoemanが生成したプロジェクトの構造が含まれています.**
npmの多くはnodeが書いた開発導入クラスツールライブラリで、bowerを含め、bower自体はnpm installにインストールされています.bowerはフロントエンドプロジェクトで使用されるライブラリインストールツールで、jquery、backbone、bowerに入っているものはnodeとは関係ありません.
テストの開始
gruntは、プロジェクトでテストサーバを起動したり、sassを動的に処理したり、coffeescriptをcoffeescriptしたり、livereload(ブラウザに更新を反映したりする)を動的に処理したりするためのパッケージおよび導入ツールです.
yoemanのgruntは通常serveメソッドを提供します.grunt buildでパッケージ化することもできます.パッケージされたファイルはdistディレクトリの下に生成されます.
使用
grunt serve
図のようなテストサーバの起動
現在、空のプロジェクトファイルは次のとおりです.
index.htmlは入り口で、requireでmainを呼び出しました.js(coffeeに慣れていないのかjsを使っているのか、coffeeを採用すればmain.coffeeです)
main.js
/*global require*/
'use strict';
require.config({
shim: {
bootstrap: {
deps: ['jquery'],
exports: 'jquery'
},
},
paths: {
jquery: '../bower_components/jquery/dist/jquery',
backbone: '../bower_components/backbone/backbone',
underscore: '../bower_components/lodash/dist/lodash',
bootstrap: '../bower_components/bootstrap-sass-official/assets/javascripts/bootstrap'
}
});
require([
'backbone'
], function (Backbone) {
Backbone.history.start();
});
現在のmain.jsは、簡単なrequire構成を行い、require呼び出しを行い、backboneをロードし、backboneを呼び出した.history.start().
血肉を増やす
今、このプロジェクトは骨格がすでにあると言ってもいいし、脳細胞を使う必要はありません.いいですね.次の仕事は少し脳細胞を使う必要があります.モジュールを追加したり、対応するコンポーネントを提供したりすることです.backboneでは:
これらのモジュールとコンポーネントをyoemanで生成します.私が頭を使うと言ったのは、この時あなたのプロジェクトに基づいて、抽象的なことをして、どのモジュールが必要なのか、どの部分が必要なのかを考えなければならないからです.
生成方法はコマンドラインに入力することです
yo backbone:model foo
yo backbone:all foo
を使用すると、modelからrouteまでのセットが生成されます.通常、backboneプロジェクトのmodelとcollectionはペアで現れ、viewは通常1つのmodelにも対応する.いくつかのものを生成した後、私たちのプロジェクトは大体このようにします.
対応するモジュールは、すべて自動的にscriptに生成され、同時にviewsモジュールは自動的にペアリングのtemplatesファイルを生成し、デフォルトのシステムはejs htmlテンプレートエンジンを採用し、対応するviewsの下のjsは自分の*を呼び出す.ejs,具体的な実践はコードを見ればわかる.
自分で作るもの
各種のモジュールは抽象的になって、生成して、それからどのようにそれらをページの中に置いて、どのようにルートを行いますか?
実はこれも私が悩み始めた問題で、それからいくつかの研究を経て、このように呼び出したことに気づいた.
まず、backboneプロジェクトには通常、最上位レベルのappViewのview、ダイナミックなページボディがあります.(静的なページ本体はindex.htmlに書いてあります).hashに基づいてページを位置決めするルーティングもあります.だから、私たちはこの2つのものをmainに書くだけです.jsでいいので、残りはrequireで処理します.
コードは次のとおりです.
require([
'backbone',
'views/appView',
'routes/foo'
], function (Backbone, appView, routes) {
new routes();
Backbone.history.start();
new appView();
});
海外ではこのようなAMD依存前置法が流行しており、私たちが生成したappViewとroutesを直接入口呼び出しに入れ、これらはクラスメソッドを返し、直接newすればいいのです.
new backbone viewの場合、intializeメソッドが呼び出されます.
appView.js
/*global define*/
define([
'jquery',
'underscore',
'backbone',
'templates'
], function ($, _, Backbone, JST) {
'use strict';
var AppViewView = Backbone.View.extend({
template: JST['app/scripts/templates/appView.ejs'],
tagName: 'div',
id: 'appView',
el: '#appView',
className: '',
events: {},
initialize: function () {
// , template $el
this.$el.html(this.template());
}
});
return AppViewView;
});
もう一度ロuterを見てみましょう
/*global define*/
define([
'jquery',
'backbone',
'views/appView'
], function ($, Backbone, app) {
'use strict';
var FooRouter = Backbone.Router.extend({
routes: {
// #info info ,info , appView render , trigger , trigger 。
'info': 'info'
},
info: function () {
app.render();
}
});
return FooRouter;
});
小結
もちろん、現在のプロジェクトも粗末で、backboneのモジュール間の関連イベントの多くは、手動で完了する必要があります.しかし、前期のいくつかの重複作業については、yeomanで効率的に開発することができ、下位フレームワークの原理と実現には関心を持たず、業務抽象に重点を置くことができます.