Oto dobry tech stos, który używam do moich zastosowań:
po stronie serwera:
- Express.js
- Kierownica
- Passport.js
- Mongoose
- MongoDB
- Formularze Caolan (ale ja obecnie jestem n proces wdrażania własną obsługi formularz)
- coffeescript
po stronie klienta:
- Kierownice
- Jquery
- Require.js
- backbone.js
- tekstu .js (plugin for require.js)
- Coffeescript (plugin dla require.js. Moje .coffee są skompilowane po stronie klienta w dev i stronie serwera w prod przy użyciu r.js)
Mogę zrobić małą przykładową aplikację później, jeśli chcesz.
[EDIT]
ok tutaj jest przykładowa aplikacja.
struktura projektu: strona
forms
|___ sampleForm.coffee
models
|___ sampleModel.coffee
public
|___ images
|___ stylesheets
| |___ style.less
|___ sampleapp
|___ main.js
|___ cs.js
|___ text.js
|___ require.js
|___ collections
| |___ sampleCollection.coffee
|___ models
| |___ sampleModel.coffee
|___ templates
| |___ sampleTemplate.hbs
|___ lib
| |___ handlesbars.js
| |___ backbone.js
|
| |___ ...
|___ views
|___ sampleView.coffee
routes
|___ index.coffee
views
|___ index.hbs
app.js
application.coffee
package.json
Serwer:
app.js
require('coffee-script');
module.exports = require('./application.coffee');
application.coffee
... standard express.js initialization
require("./routes")(app)
... start server
index.coffee
SampleModel = require "../models/sampleModel"
module.exports = (app) =>
app.get "/index", (req,res) =>
return res.render "index"
app.get "/samplemodels", (req,res) =>
SampleModel.find {}, (err, models) =>
return res.send 404 if err or !models
return res.send models
return
index.hbs
<!DOCTYPE HTML>
<html>
<head>
<title>Sample app</title>
<link type="text/css" href="/stylesheets/style.css" rel="stylesheet" >
<script src="/mainapp/require.js" data-main="/mainapp/main"></script>
</head>
<body>
<div id="main-content"></div>
</body>
</html>
main.js
require.config({...}) // Configure requires.js...
require(["jquery", "cs!models/samplemodel", "cs!views/sampleview","cs!collections/samplecollection"], function ($, Model, View, Collection) {
var collection = new Collection();
collection.fetch();
var view = new View({collection: collection});
$("body").html(view.render().$el);
})
sampleview.coffee
define ["backbone", "jquery", "handlebars","text!templates/sampleTemplate.hbs"], (Backbone, $, Hbs, template) =>
class MainView extends Backbone.View
initialize: =>
@collection.on "change", @render
@template = Hbs.compile template
render: =>
html = @template {models: @collection.models}
@$el.html(html)
return @
sampleTemplate.hbs
{{#models}}
<p>{{name}}</p>
{{/models}}
Ok więc, że jest niezbędna. Teraz musisz nauczyć się, jak używać Backbone.Collection, Backbone.Model, jak skonfigurować Require.js, jak skonfigurować Passport.js i jak zrobić Mongoose model. Możesz użyć Less middleware, aby skompilować swój styl. Nie zapomnij, że możesz wstępnie skompilować całą aplikację kliencką za pomocą r.js.
Mam nadzieję, że ta strona nie zostanie zapomniana i że pomoże każdemu, kto ją spotka w przyszłości.
Nie ma setek frameworków MVC, po stronie serwera co najmniej 3/4 i tyle samo po stronie klienta. – mpm
@mpm: Myślę, że nie doceniasz. [TodoMVC] (http://todomvc.com/) zawiera ponad 25 struktur po stronie klienta i więcej niż kompilację do JS po stronie klienta, a także wiele innych kategorii. –
@Scott Sauyet Ile z tych ram ma rozszerzoną dokumentację, posty na blogu, wsparcie i samouczki w Internecie? w ten sposób możesz powiedzieć, że warto użyć frameworka, czy nie. 80% tych ram nie ma znaczenia z punktu widzenia adopcji. – mpm