2013-02-19 2 views
5

Я новичок в node.js, дал требование разработать богатое веб-приложение с использованием Node.js.Богатая разработка приложений с node.js

Сейчас я работаю над начальными руководствами на node.js. У меня был шанс посмотреть страницу here и запутался в сотнях фреймворков. Я понятия не имею, чтобы выбрать подходящую структуру, и нам нужна помощь в этом, чтобы принять правильное решение. Позвольте мне объяснить мое требование.

  1. Хотите разработать RESTfull API для всех функций. (Любые библиотеки на OAuth?)
  2. Хотите разработать веб-приложение поверх API. Приложение должно быть спроектировано таким образом, чтобы основные функции были разработаны на стороне клиента. Значит, вся бизнес-логика должна быть разработана на стороне клиента. Я слышал, что некоторые библиотеки, такие как Backbone.js, Underscore.js уже выполняли эту работу, но не имели четкого представления об этом.

Просьба предложить мне рамки, которые сделают лучше для моего требования.

Спасибо,

+0

Существует не сто рамок MVC, 3/4 серверной стороны в лучшем случае и на той же стороне клиента. – mpm

+0

@mpm: Я думаю, вы недооцениваете. [TodoMVC] (http://todomvc.com/) содержит более 25 клиентских фреймворков и больше, чем компиляция на стороне клиента JS, а также ряд других категорий. –

+0

@Scott Sauyet, сколько из этих фреймов имеют расширенную документацию, сообщения в блогах, поддержку и учебные пособия через Интернет? это то, как вы говорите, что фреймворк стоит использовать или нет. 80% этих структур являются несущественными с точки зрения принятия. – mpm

ответ

15

Вот хороший стек технологий, которые я использую для моих приложений:

стороне сервера:

  • 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 для компиляции вашего стиля.

Не забывайте, что вы можете предварительно скомпилировать все ваши клиентские приложения с помощью .

Теперь я надеюсь, что эта страница не будет забыта и что она поможет любому, кто встретит ее в будущем.

+0

Спасибо, не могли бы вы сделать мне небольшое приложение-образец? –

+0

Я бы заменил в этом списке Ручки с нефритом, но остальное очень хорошо. – gustavohenke

+0

Jade более гибкий, но, на мой взгляд, способ далеко от реального html.Кроме того, я думаю, что Джейд привел некоторых разработчиков к написанию много логики в слое представления. –

2

Это большая статья, которая помогает объяснить наиболее популярные JavaScript рамки:

http://coding.smashingmagazine.com/2012/07/27/journey-through-the-javascript-mvc-jungle/

В конечном счете, лучший способ это сделать короткий список рамок вы думаете, помогите вам, а затем немного помалкивайтесь с каждым из них и посмотрите, что больше всего подходит вашему приложению и стилю программирования.

Смежные вопросы