Структура папок AngularJS [закрито]


186

Як ви компонуєте структуру папок для великої та масштабованої програми AngularJS?


Відповіді:


251

введіть тут опис зображення

Сортувати за типом

Ліворуч у нас додаток організовано за типом. Не надто погано для менших додатків, але навіть тут ви можете почати бачити, що стає складніше знайти те, що ви шукаєте. Коли я хочу знайти певний вигляд та його контролер, вони знаходяться в різних папках. Тут може бути непогано почати, якщо ви не знаєте, як ще впорядкувати код, оскільки досить просто перейти на техніку праворуч: структура за особливостями.

Сортувати за ознаками (бажано)

Праворуч проект організований за допомогою функції. Усі види макетів та контролери переходять у папку макета, вміст адміністратора йде у папку адміністратора, а служби, які використовуються у всіх областях, переходять у папку служб. Ідея тут полягає в тому, що коли ви шукаєте код, який робить функцію роботи, він знаходиться в одному місці. Послуги дещо відрізняються, оскільки «обслуговують» багато функцій. Мені це подобається, як тільки моя програма починає формуватися, оскільки мені стає набагато легше керувати.

Добре написана публікація в блозі: http://www.johnpapa.net/angular-growth-structure/

Приклад програми: https://github.com/angular-app/angular-app


22
Ви відповідаєте на власне запитання відразу після публікації?
Якуб

34
@Jakub Під час створення питання є варіант, який називається "відповісти на власне запитання, що сприяє вікі".
Майкл Дж. Калкінс

3
@MichaelCalkins, ідея мені подобається. Я щойно перевірив деякі ваші ютуб-сюжети на кутових, приємно
Ронні

5
@ Ронні Я просто пам’ятаю, що це був один із найважчих кроків кривої навчання AngularJS, тому, сподіваємось, це допомагає людям. Я думаю, що я пройшов, як 10 різних макетів, прочитавши блоги, а що ні.
Майкл Дж. Калкінс

5
Ось сторінка найкращих практик angularJS, керована спільнотою. Пропозиція щодо їх файлової структури - це поєднання обох ваших ідей у ​​двох прикладах. Мені подобається другий приклад краще, оскільки він більше відстає від ідеї сортування за ознаками.
Джон

32

Після побудови декількох додатків, деяких у Symfony-PHP, деяких .NET MVC, деяких ROR, я виявив, що найкращим способом для мене є використання Yeoman.io з генератором AngularJS.

Це найпопулярніша та поширена структура та найкраще підтримується.

І найголовніше, зберігаючи цю структуру, вона допомагає вам відокремити код клієнтської сторони та зробити його агностичним щодо технології на стороні сервера (всілякі різні структури папок та різні двигуни шаблонів на стороні сервера).

Таким чином ви зможете легко дублювати та використовувати повторно свій та інший код.

Ось це перед тим, як будувати грунт: (але використовуйте генератор yoman, не просто створюйте його!)

/app
    /scripts
            /controllers
            /directives
            /services
            /filters
            app.js
    /views
    /styles
    /img
    /bower_components
    index.html
bower.json

А після грунтової збірки (concat, uglify, rev тощо):

    /scripts
        scripts.min.js (all JS concatenated, minified and grunt-rev)
        vendor.min.js  (all bower components concatenated, minified and grunt-rev)
    /views
    /styles
        mergedAndMinified.css  (grunt-cssmin)
    /images
    index.html  (grunt-htmlmin)

1
де повинна бути конфігурація блоку коду маршрутів? angular.module('myApp').config(function($routeProvider) { ... });
спорт

1
+1 Також ви можете налаштувати, куди йоман кладе ваші речі. IMHO, сортування за функціями / модулем у великих додатках краще, оскільки ви можете легше повторно використовувати функцію в інших додатках.
Тіві

30

Мені подобається цей запис про структуру angularjs

Це написано одним з розробників angularjs, тому слід добре зрозуміти

Ось уривок:

root-app-folder
├── index.html
├── scripts
   ├── controllers
      └── main.js
      └── ...
   ├── directives
      └── myDirective.js
      └── ...
   ├── filters
      └── myFilter.js
      └── ...
   ├── services
      └── myService.js
      └── ...
   ├── vendor
      ├── angular.js
      ├── angular.min.js
      ├── es5-shim.min.js
      └── json3.min.js
   └── app.js
├── styles
   └── ...
└── views
    ├── main.html
    └── ...

1
Питання стосується структури папок, і хоча посилання є цікавою іншими способами, воно не приносить нічого нового в таблицю для цього питання.
JohnC

Для цього використовується кутовий генератор Yeoman
EdgarT

Отже, ви організували папку за типом сценаріїв.
Тудор

4

Існує також підхід організації папок не за структурою рамки, а за структурою функції програми. Існує програма для кутових запусків github / Express, яка ілюструє це, що називається angular-app .


Це часто кращий підхід для дуже великих проектів. На жаль, ми все ще застрягли зі структурами папок ... Позначення було б краще, щоб це не мало значення, і ми могли мати кілька переглядів, залежно від тегів.
Крістоф Руссі

3

Я перебуваю в третьому додатку angularjs, і структура папок щоразу вдосконалювалася. Я моє просте зараз.

index.html (or .php)
/resources
  /css
  /fonts
  /images
  /js
    /controllers
    /directives
    /filters
    /services
  /partials (views)

Я вважаю це добре для одиночних додатків. У мене ще не було проекту, де мені потрібно було б декілька.


Пізніше у вас будуть проблеми із підтримкою та впровадженням нових функцій. Завжди корисною є структура папки з функціями та компонентами, пов’язаними з цією функцією, під її папкою.
Jaseem Abbas

Я маю рацію, думаючи, що Angular JS не має стандартної структури папок проекту чи шаблону проекту, як веб-проект asp.net або настільний додаток Windows?

1
@dotNetBlackBelt це правильно. Немає стандарту, коли мова йде про кутовий. Після публікації цього повідомлення я змінив спосіб налаштування своїх папок. Мій останній проект я більш-менш пішов, що головна відповідь цього ОП
Ронні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.