enduro.js — minimalistic, lean & mean, node.js cms for professionals

Пока это очень субъективно, я бы рекомендовал вам проверить Ghost и KeystoneJS.

(отказ от ответственности: я являюсь основным источником для KeystoneJS, но я do люблю Ghost)

Ghost — прекрасная платформа для ведения блогов, и у нее есть много поддержки сообщества, включая тему рынка. Это началось с очень успешной кампании kickstarter и началось несколько месяцев назад. Он ограничен дизайном и полностью сфокусирован вокруг рабочего процесса публикации, который они создали.

KeystoneJS — это более гибкая система cms/framework, которая может использоваться для создания чего-либо из блога на сложном веб-сайте, управляемом данными. Там демонстрационный сайт (с простой темой Bootstrap) вы можете использовать в качестве основы для своего собственного блога здесь, а более сложный сайт, созданный для Sydney Javascript, встречается здесь, который вы также можете использовать в качестве ссылки.

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

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

Еще одна вещь, которую следует учитывать, — это размещение вашего блога — Ghost предлагает собственное хостинг-решение, а KeystoneJS поддерживает Heroku, который является бесплатным для 1 dyno. Опять же, вы должны взглянуть на обоих и решить, с чем вам удобнее.

ответ дан Jed Watson 02 янв. '14 в 7:39

источникподелиться

About ButterCMS

ButterCMS is an API-based, or «headless», CMS. We’re a hosted service and we maintain all of the infrastructure. For more information on how we compare to a traditional CMS check out API-based CMS vs Traditional CMS.

How do you compare to WordPress?

In short, we offer all the same easy-to-use editing capabilities of WordPress but are significantly easier for developers to setup and maintain. This means you spend less time working on your CMS and more time focusing on things important to your business.

Do you host my templates?

Unlike CMS’s you might be used to, we don’t control or host any of your templates. The design of your app (HTML + CSS) lives in your application along side the rest of your app. Your application calls our Content API and we return your content in JSON format. You can then render this content in any way you’d like.

Can I import my content?

Yep. To import existing content from another platform, simply send us an email.

What kind of database can I use?

No database required! We’re a SaaS CMS or CaaS. You simply call our Content API from your app. We host and maintain all of the CMS infrastructure.

Can I host this?

Node.js CMS

No, we’re a SaaS CMS or CaaS. You simply call our Content API from your app. We host and maintain all of the CMS infrastructure.

I have other questions


We’re happy to help.

Chat with us

About Node.js

Node.js is a server-side JavaScript environment based on V8. Popular web development frameworks for Node.js include Koa, Express, and Hapi. JavaScript is a programming language that enables you to create dynamically updating content, control multimedia, animate images, and pretty much everything else.

Headless CMS for these technologies and more

Ruby, Rails, Node.js, Python, ASP.NET, Flask, Django, Go, PHP, Laravel, Angular, React, Elixir, Phoenix, Meteor, Vue.js, Heroku

Создание первого проекта


Предупреждение по поводу NPM версии 5.4.x

Выполните команду:

Чтоб убедиться в том, что у вас не установлен NPM версии 5.4.x (5.4.0, 5.4.1 и так далее).

Node.js (Best CMS, E-Commerce systems, and Open Source projects)

Эти версии имеют ошибку, которая мешает установке Apostrophe.

Вы можете понизить версию данным путем:

или обновить NPM до версии 5.5 в которой этот баг исправлен.

Создание проекта

Теперь, когда все необходимое установлено, можно приступить к созданию тестового сайта.

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

npm install apostrophe-cli -g

Переходим в директорию где будет находиться наш сайт и генерируем его следующей командой:

apostrophe create-project test-project

Важно! Вместо можно использовать любое другое «short name» (короткое имя) содержащее только буквы, цифры, дефис и/или нижнее подчеркивание. Это имя будет использоваться для названия базы данных в MongoDB, названия cookie и т.д. (В большинстве случаев дефис более распространен, чем нижнее подчеркивание).

Далее нужно перейти в корень созданного нами проекта, установить зависимости и запустить сервер.

# Переходим в корень проекта cd test-project # Устанавливаем зависимости npm install # Чтобы зайти в админскую часть добавляем нового пользователя под именем admin; нужно будет ввести пароль # База данных MongoDB должна быть запущенна node app.js apostrophe-users:add admin admin # Запускаем node app.js

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

Вход в систему

Вход в систему можно осуществить по данному пути . Используя пароль, который вы указали, когда выполняли команду и username (имя пользователя) admin.

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

Сделаем это более интересным

Пришло время добавить область редактируемого контента на нашу страницу.

Откройте в вашем текстовом редакторе и добавьте следующий контент:

{% extends data.outerLayout %} {% block title %}Home{% endblock %} {% block main %} <divclass=»main-content»> <h3>Hello world! {% if not data.user %} <a class=»login-link» href=»/login»>Login</a> {% endif %} </h3> <p>This is a very barebones Apostrophe project.

Now, get to work and make a real website!</p> {{ apos.area(data.page, ‘body’, { widgets: { ‘apostrophe-images’: { size: ‘full’ }, ‘apostrophe-rich-text’: { toolbar: [ ‘Styles’, ‘Bold’, ‘Italic’, ‘Link’, ‘Unlink’ ], styles: [ { name: ‘Heading’, element: ‘h3’ }, { name: ‘Subheading’, element: ‘h4’ }, { name: ‘Paragraph’, element: ‘p’ } ] } } }) }} </div> {% endblock %}

Перезагружаем сайт

Теперь можно видеть на что повлияли изменения:

  • Нажимаем в том окне терминала, в котором запущен (вам нужно оставлять запущенным пока ваш сайт работает. В продакшене будут другие способы о которых мы поговорим позже)
  • Запускаем снова (подсказка: нажимаем клавишу вверх, затем enter)
  • Перезагружаем браузер

Работа с редактируемой областью

Эй, а для чего эта новая кнопка ?

Добавление форматированного текста

Нажимаем «+» и выбираем «rich text». Вам будет представлен удобный редактор.

Редактируем так, чтобы текст подошел по размерам и перезагружаем страницу. Обратите внимание, что ваши изменения уже сохранились. Здесь нет кнопки сохранения, потому что сохранение автоматическое.

Добавление слайдшоу

Что же давайте добавим слайдшоу. Кликните за пределами редактора и вы увидите два новых значка «+» один над текстом, а другой под ним. Нажмите на любой из них и выберите картинку/картинки («Image(s)»).

Вы увидите хранилище изображений, которое изначально будет пустым:

Нажмите кнопку «New Image» в правом верхнем углу:

Нажимая «Upload File» можно выбрать новое изображение в следующих форматах: GIF, JPEG или PNG. Также заполните поле «title», которое будет обозначать название файла в хранилище. Затем кликните на «Save Image», чтобы сохранить картинку.

Нажмите «New Image» еще раз, чтобы загрузить другое изображение. Затем проверьте поле рядом с ними.

Когда вы их выбираете вы увидите, что они появляются в разделе «chosen items» (выбранные элементы).

Нажимаем кнопку «Save Choices» и вуаля! Слайдшоу готово.

Вау, это круто! Но что я только что сделал ?

И теперь, когда удивление прошло, давайте разложим все по полочкам.

Далее: Редактируем шаблон Apostrophe

Краткая версия:

Шаблон полностью выполнен с использованием одного html файла и загрузкой данных с конкретной страницы с помощью ajax/сокетов, с node, какую производительность я должен ожидать? конструктивно-хороший или плохой?

Длинная версия

В настоящее время я изучаю код лучше node.

8 Best Node.js CMS Frameworks You Wouldn’t Want to Miss

Я давно поклонник javascript, и сейчас я пытаюсь найти хорошие/плохие практики в node.js

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

Мой вопрос:

Скажем, у меня есть веб-сайт, он содержит несколько файлов, представляющих «экраны», которые пользователи видят, скажем, в этом базовом примере пользователи должны уметь видеть: .

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

Так как node полностью основан на асинхронных операциях — как хорошо/плохо было бы просто доставить одну и ту же .html-страницу для всех из них, а затем загрузить все данные с сервера на основе той страницы, на которой я при использовании сокетов AJAX/web?

(наивно, прокрутите все разделы с помощью name= ‘view’ и выберите контент по id или что-то подобное)

Это, я думаю, обеспечит асинхронную загрузку страницы и полностью отменит макет сайта с остальной части сайта. Мне это очень нравится, нет блокировки, все асинхронно. Я ищу мнения от опытных разработчиков относительно предмета.

Также приветствуются любые советы, связанные с построением сайта с использованием node.js. Я исхожу из PHP-фона, и я действительно хочу избежать того, что когда-либо создавал проект, похожий на webmatrix.

javascripthtmlnode.jsmodel-view-controller

задан Benjamin Gruenbaum 05 июля '12 в 23:14

источникподелиться

Node.js глазами Ruby-разработчика. Первое впечатление

Andrey Konchin

June 21, 2016

Введение

Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

Именно это написано на официальном сайте Node.js, и именно с этого наша команда Ruby-разработчиков начала изучение Node.

Node.js CMS & Web Application Platform

В работе над проектом мы придерживаемся микросервисной архитектуры, и у нас уже много маленьких web-приложений, реализованных на Rails/Sinatra. В какой-то момент мы приняли решение поэкспериментировать с Node и дружно принялись изучать его. Дальше я попытаюсь поделиться первыми впечатлениями об этой платформе после месяца работы с ней.

Первый вопрос, которым мы задались: «а что же такое Node?». Это не реализация языка (JavaScript), не библиотека, не framework и не web-сервер. Можно найти такие определения, как environment и runtime. На каком-то форуме встретилось следующее краткое определение — это event-loop c библиотеками. Не особо проясняет суть вопроса, правда?

Мы не хотели работать с Node как с черным ящиком, поэтому немного углубились в его исходный код, реализации его стандартной библиотеки и библиотеки libuv, где собственно и воплощены все примитивы асинхронности и не блокирующих вычислений. Это многое объяснило и стало понятно не только как работать с Node, но и в чём его преимущества и недостатки.

Далее мы стали изучать прикладные библиотеки и инструменты, аналогичные тем, что мы привыкли использовать в стеке Ruby/Rails. Нас не интересовали проекты-клоны Rails вроде Nodal или Sails. На первый взгляд, по возможностям они не доросли до Rails и недалеко ушли от framework’ов а-ля Sinatra. Мы пробовали разные ORM, библиотеки для модульного и интеграционного тестирования, конфигурации приложения и много-много другого.

Выяснилось, что нет какого-то основного web-framework’a, на совершенствование или развитие которого бы сконцентрировало внимание сообщество. Де-факто есть только один вменяемый framework — Express.js. Это хороший, продуманный и мощный инструмент, но он позиционирует себя как микро-framework и даёт только часть возможностей — routing и middleware. Нет какого-то основного ORM. Есть минимум три популярных и множество недоделанных или уже заброшенных проектов. Оказалось, что для модульного тестирования наличествуют как минимум 4-5 популярных библиотек и примерно столько же для интеграционного, никак не связанных между собой. Чтобы сделать осознанный выбор библиотеки или инструмента, нам придётся пощупать каждый из них на отдельных небольших demo-проектах.

Node буквально заставляет писать асинхронный код. Это может сильно его усложнить и ухудшить читабельность. При переписывании маленького проекта с Ruby/Sinatra на Node объём тестов вырос в несколько раз.

Если вы пишете на Node — вы пишете на JavaScript. Да, есть альтернативы — CoffeScript/ClojureScript/любая другая экзотика, etc., но в 99% вы пишете на JavaScript. Конечно, вы хотите использовать самые последние возможности самых последних стандартов ES6 и ES7. К сожалению, Node не успевает включать поддержку постоянно добавляемых в V8 возможностей, поэтому единственная возможность получить всё уже сейчас — это использование транспайлеров, таких как babel, которые будут транслировать ваш ES6/ES7 JavaScript-код в то, что Node понимает и поддерживает. И здесь вас поджидают трудности: как запускать тесты, как запускать приложение локально и на production’е, как настроить инструменты для анализа кода, test coverage…

Плюсы и минусы Node.js

После месяца знакомства с Node, мы можем выделить следующие плюсы и минусы:

Плюсы

  • Node даёт вам все плюсы asynchronous non-blocking кода, такие как: web-сервер экономнее расходует ресурсы и может поддерживать больше параллельных клиентских соединений для определённого типа приложений, где активно выполняются операции ввода/вывода (I/O). Реализация, как минимум, не хуже альтернатив на других платформах (Ruby/Java/Python);
  • Вы используете JavaScript, более-менее знакомый любому web-разработчику;
  • Некоторые библиотеки копируют аналоги из Ruby/Rails стека, поэтому с ними изначально комфортно работать;
  • Библиотек/инструментов много, они активно развиваются.

Минусы

  • Нет основных библиотек/инструментов — у каждого есть множество альтернатив, плюсы/минусы которых не ясны из документации, приходится лично пробовать и выбирать. Очень много заброшенных проектов. Для многих стандартных задач нет какого-то готового и законченного решения, есть только поделки;
  • Очень слабая интеграция между инструментами. Приходится при необходимости писать обвертки руками;
  • Инструменты ещё не достигли той зрелости, что мы видим в стеке Ruby/Rails, они активно развиваются, но пока не достаточно функциональны для привычного Ruby-сту уровня комфорта;
  • Опять JavaScript. Это не самый удачный язык и последние изменения в стандартах не очень спасают. Чтобы получить последние стандартизированные возможности, нужно добавлять транспайлер по типу babel.

Что в итоге?

Для обычного web-приложения, где активно работают с базой данных, подход Node.js обещает заметное повышение производительности. Это работает и в нашем случае, так как у нас делается много HTTP-запросов к внутренним и внешним сервисам.

Переход на Node у нас получается быстрым и плавным, порог вхождения оказался невысоким. Основные трудности пока были связаны с выбором библиотек, их изучением и сравнением между собой.

С другой стороны, после синхронного кода всё получается несколько сложнее. Насколько это критично, мы скоро увидим.

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

Ruby on Rails

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *