Вот хороший стек технологий, которые я использую для моих приложений:
стороне сервера:
- Express.js
- Рули
- Passport.js
- Mongoose
- MongoDB
- Caolan forms (Но я в настоящее время я п процесс реализации мой собственный обработчик формы)
- CoffeeScript
стороне клиента:
- Рули
- Jquery
- Require.js
- Backbone.js
- текст .js (плагин для require.js)
- Coffeescript (плагин для require.js. Моя. Coffee скомпилирована на стороне клиента в dev и на стороне сервера в prod с использованием r.js)
Я мог бы сделать небольшое примерное приложение позже, если вы захотите.
[EDIT]
ок вот пример приложения.
Структура проекта: сторона
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
Сервер:
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}}
ИТАК, что является существенным. Теперь вам нужно научиться использовать Backbone.Collection, Backbone.Model, как настроить Require.js, как настроить Passport.js и как сделать Mongoose model. Вы можете использовать Less middleware для компиляции вашего стиля.
Не забывайте, что вы можете предварительно скомпилировать все ваши клиентские приложения с помощью .
Теперь я надеюсь, что эта страница не будет забыта и что она поможет любому, кто встретит ее в будущем.
Существует не сто рамок MVC, 3/4 серверной стороны в лучшем случае и на той же стороне клиента. – mpm
@mpm: Я думаю, вы недооцениваете. [TodoMVC] (http://todomvc.com/) содержит более 25 клиентских фреймворков и больше, чем компиляция на стороне клиента JS, а также ряд других категорий. –
@Scott Sauyet, сколько из этих фреймов имеют расширенную документацию, сообщения в блогах, поддержку и учебные пособия через Интернет? это то, как вы говорите, что фреймворк стоит использовать или нет. 80% этих структур являются несущественными с точки зрения принятия. – mpm