Во всех примерах (таблица лидеров, игра слов и т. Д.) У них есть один файл шаблона HTML. Есть ли какой-нибудь крупный проект с открытым исходным кодом Meteor с множеством различных файлов HTML-шаблонов, который мы можем использовать в качестве примера лучшей практики? Не кажется практичным поместить все, что нужно большому приложению, в один файл шаблона.
165
Ответы:
Все это вместе! Из документов:
источник
Как и в неофициальном часто задаваемом вопросе о метеоре, я думаю, что это в значительной степени объясняет, как структурировать большое приложение:
Узнайте больше: неофициальный метеор FAQ
источник
mobile-config.js
?Я согласен с yagooar, но вместо:
Использование:
Файлы main. * загружаются последними. Это поможет вам избежать проблем с порядком загрузки. См. Документацию по Meteor, http://docs.meteor.com/#structuringyourapp , для получения более подробной информации.
источник
Meteor был разработан так, чтобы вы структурировали свое приложение практически так, как вам хочется. Так что, если вам не нравится ваша структура, вы можете просто переместить файл в новый каталог или даже разбить один файл на несколько частей, и в Meteor он практически одинаковый. Просто обратите внимание на особую обработку клиентских, серверных и общедоступных каталогов, как указано на главной странице документации: http://docs.meteor.com/ .
Простое объединение всего в одну HTML-заливку, безусловно, не станет лучшей практикой.
Вот пример одной из возможных структур: в одном из моих приложений, на дискуссионном форуме, я организовываю по модулю или «типу страницы» (домашняя страница, форум, тема, комментарий), помещая файлы .css, .html и .js для каждого Тип страницы вместе в одном каталоге. У меня также есть «базовый» модуль, который содержит общий код .css и .js и главный шаблон, который использует {{renderPage}} для визуализации одного из других модулей в зависимости от маршрутизатора.
Вы также можете организовать по функциям
Я надеюсь, что появятся некоторые более конкретные структуры наилучшей практики и соглашения об именах.
источник
Для всех, кто гуглит на эту тему:
Инструмент
em
командной строки (от EventedMind, парни из Iron Router) очень полезен при установке нового приложения Meteor. Это создаст хорошую структуру файлов / папок. Если вы уже работаете над приложением и хотите реорганизовать его, просто создайте новый проектem
и вы можете использовать его для вдохновения.Смотрите: https://github.com/EventedMind/em
И здесь: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js
источник
Я думаю, что файловая структура из Книги Обнаружения Метеора действительно хороша и хорошее начало.
источник
Создавать пакеты
Конечно, не все подходит для этого подхода, но в больших приложениях у вас будет много функций, которые можно изолировать. Все, что можно разделить и использовать повторно, помещается в пакеты, остальное идет в обычной структуре каталогов, как упоминалось в других ответах. Даже если вы не создаете пакеты, чтобы избежать накладных расходов, хорошая идея структурировать код модульным способом (см. Эти предложения ).
Meteor позволяет детально контролировать то, как вы загружаете свои файлы (порядок загрузки, где: клиент / сервер / оба) и что экспортирует пакет.
Я особенно нахожу очень удобным простой способ разделить логику между соответствующими файлами. Скажем, например, вы хотите сделать некоторую функцию утилит и использовать ее в разных файлах. Вы просто делаете его «глобальным» (без
var
), и Meteor обернет его в пространство имен пакета, чтобы он не загрязнил глобальное пространство имен.Вот официальный документ
источник
Через некоторое время после кодирования метеоритов, я рад, что у меня есть свободное время, чтобы посвятить себя созданию довольно сложной онлайн-игры. Структура приложения была одной из моих первых проблем, и похоже, что несколько очень хороших программистов отстаивали метод структурирования приложения, основанный только на пакетах, который позволяет вам свободно объединять функционально разные пакеты. У этого подхода есть и другие преимущества, и здесь можно найти 2 очень хорошие статьи, объясняющие подход:
http://www.matb33.me/2013/09/05/meteor-project-structure.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator -шаблон
источник
У нас есть крупный проект (возможно, один из крупнейших проектов Метеор, который когда-либо создавался на тот момент, так как он был в полной разработке в течение 1,5 лет). Мы используем один и тот же набор имен файлов в каждом представлении. Он очень последовательный и помогает нам быстро перейти к тому, что мы ищем:
Выглядит так в проекте:
Связанные шаблоны просто хранятся вместе в одном файле. Содержание
view/order/checkout/templates.html
показанного здесь свернуто:Мы используем подпапки, когда представления становятся сложными с большим количеством частей:
Мы также разрабатываем с помощью WebStorm, чрезвычайно мощного и гибкого редактора для разработки Meteor. Мы находим это чрезвычайно полезным при поиске и организации нашего кода и продуктивной работе.
Рады поделиться деталями по запросу.
источник
Используйте железо-CLI леса CLI. Делает вещи очень легко.
https://github.com/iron-meteor/iron-cli
после установки. использовать
iron create my-app
для создания нового проекта. Это создаст следующую структуру для вас. Вы также можете использовать это в существующих проектах. использоватьiron migrate
в каталоге проекта.источник
Я следую стандартному формату Mattdeom, который уже включает в себя железный маршрутизатор и модель (Collection2). Увидеть ниже :
источник
Существует много разных подходов к структурированию вашего приложения. Например, если у вас есть маршрутизатор и разные шаблоны страниц, и внутри каждого шаблона страницы есть много частей страницы и т. Д., Я бы структурировал его в зависимости от семантики от более высокого> более низкого уровня.
Например:
Конечно, вы можете поместить свои шаблоны новостей в общую папку, так как вы можете использовать свой шаблон новостей на разных страницах.
Я думаю, что лучше всего вы структурируете свое приложение так, как вам удобно.
Я написал небольшое приложение здесь: http://gold.meteor.com И оно настолько маленькое, что я использую только один HTML-файл и только один файл template.js .. :)
Я надеюсь, что это немного помогает
источник
В Evented Mind появился новый класс под названием « Настройка метеорных проектов», который решает эту проблему, а также рассказывает о конфигурации проекта и настройке среды разработки.
Из видео « Структура приложения» в классе: «Метеор» не имеет четкого мнения о том, как следует структурировать ваше приложение, но вот некоторые правила:
1) Порядок загрузки - Метеор сначала идет в самое глубокое место в каталоге файлов и обрабатывает файлы в алфавитном порядке.
2) клиент и сервер - это специальные папки, которые Meteor распознает
Наша структура выглядит так:
Todos_controller расширяет RouteController, то, что поставляется с Iron Router.
em
Инструмент упоминалось выше , также получает большое обновление прямо сейчас , и должно быть намного лучше и доступны по адресу: https://github.com/EventedMind/emисточник
Я также ищу лучшие практики для улучшения и масштабирования моих приложений с помощью хорошо продуманной архитектуры. Все вышеперечисленные методы работают для приложений малого и среднего размера, но потерпят неудачу, когда вы работаете в большой команде. Есть несколько способов, которые я попробовал:
1) Я придерживался этой стратегии: https://github.com/aldeed/meteor-autoform для масштабирования и повторного использования шаблонов. У автора есть очень хорошая идея по проектированию компонентов и полей. В настоящее время я внедряю его, потому что сообщество разработало 36 пакетов, которые охватывают почти каждый случай, и я могу использовать TypeScript для обеспечения безопасности типов на этапе разработки.
Вот хороший пост в блоге о том, как это сделать: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/, а также здесь: http: // meteorpedia .com / чтения / Blaze_Notes
2) Это выглядит так многообещающе, но в последнее время не обновлялось. Это пакет, написанный на кофейной надписи. Компоненты Blaze ( https://github.com/peerlibrary/meteor-blaze-components ) для Meteor представляют собой систему для простой разработки сложных элементов пользовательского интерфейса, которые необходимо повторно использовать в приложении Meteor. Вы можете использовать их в CoffeeScript, ванильном JavaScript и ES6. Лучше всего, компоненты ООП. Вот один из их примеров:
3) Мне нравятся типы и транспортер, которые говорят мне, где и когда что-то пойдет не так. Я использую TypeScript для работы с Meteor и нашел следующий репозиторий: https://github.com/dataflows/meteor-typescript-utils кажется, что создатель пытался реализовать подход MVC.
К сожалению, этот проект не поддерживается или активно развивается.
4) и я думаю, что уже упоминалось, вы можете масштабировать с помощью пакетов. Это требует хорошего абстрактного мышления. Кажется, работает для телескопа: https://github.com/TelescopeJS/Telescope
5) расширение-метеор-шаблон - предоставляет различные способы копирования помощников шаблонов, обработчиков событий и перехватов между шаблонами, что позволяет повторно использовать код; недостатком является то, что все копирование должно осуществляться разработчиком, часто снова и снова, что становится проблематичным по мере роста кодовой базы; Более того, без четко определенного API-сообщества сообщество не может создавать и совместно использовать компоненты.
6) Компоненты потока - Компоненты потока ближе к React в дизайне API, в то время как компоненты Blaze хранят знакомые понятия, такие как контексты данных и помощники шаблонов; Компоненты Flow, с другой стороны, все еще используют обработчики событий на основе шаблонов, в то время как Компоненты Blaze делают их методами классов, чтобы их было проще расширять или переопределять с помощью наследования; в общем, компоненты Blaze более ориентированы на ООП; Компоненты потока еще не выпущены официально ( текстовые сообщения для № 5 и № 6 https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )
К номерам 2 и 3 тоже нужно привыкнуть, но со временем вы получите скорость разработки. Номер четыре позволяет вам создавать и тестировать компоненты, чтобы сделать ваш код более стабильным. Номер три обладает преимуществом полной безопасности типов Typescript, что является огромным плюсом, когда вы разрабатываете в команде с плохой документацией. Однако в настоящее время я переношу номер два на TypeScript, потому что мне очень удобно с ним работать, и мне не нужно настраивать пакет компилятора, чтобы он работал с Meteor, когда я не использую Gulp.
Все еще трудно найти правильный способ работы с Метеором. Вы должны понять это сами, в противном случае вы получите хорошо организованную структуру папок, но у вас нет понятия, где все находится. Удачного кодирования.
источник