diff --git a/Readme.md b/Readme.md index 884fcda..bec5ffb 100644 --- a/Readme.md +++ b/Readme.md @@ -1,9 +1,4 @@ -# Стиль кода Академии HTML - -[![dependency status][dependency-image]][dependency-url] -[![devDependency status][devdependency-image]][devdependency-url] - -_TBD_ +# Стиль кода Aitarget ## Сервер для разработки @@ -33,22 +28,3 @@ $ npm test Для проверки скриптов используется [ESLint](http://eslint.org). -## Нашли ошибку? - -Пожалуйста, [создайте тикет](https://github.com/htmlacademy/codeguide/issues). - -## Благодарности - -* [Code Guide](http://codeguide.co) by @mdo -* [CSS Guidelines](http://cssguidelin.es) by Harry Roberts -* [Idiomatic CSS](https://github.com/necolas/idiomatic-css) by Nicolas Gallagher -* [Primer Guidelines](http://primercss.io/guidelines/) by GitHub - -## Лицензия - -Лицензия MIT, смотрите файл `License.md`. - -[dependency-image]: https://david-dm.org/htmlacademy/codeguide.svg?style=flat-square -[dependency-url]: https://david-dm.org/htmlacademy/codeguide -[devdependency-image]: https://david-dm.org/htmlacademy/codeguide/dev-status.svg?style=flat-square -[devdependency-url]: https://david-dm.org/htmlacademy/codeguide#info=devDependencies diff --git a/app/css/chapter.css b/app/css/chapter.css index 5c13650..1ce12d9 100644 --- a/app/css/chapter.css +++ b/app/css/chapter.css @@ -18,8 +18,20 @@ border-bottom: 1px solid var(--subtle-color); + &_vertical { + flex-direction: column !important; + & .chapter-part-col { + width: 100%; + + & p { + max-width: 100% !important; + } + } + } + @media (--viewport-large) { flex-direction: row; + flex-wrap: wrap; } } @@ -50,8 +62,20 @@ p { max-width: 32rem; } + + img { + width: 100%; + } } .gray-bgcolor { background-color: var(--light-subtle-color); } + +.text-bold { + font-weight: 800; +} + +.text-center { + text-align: center; +} \ No newline at end of file diff --git a/app/css/footer.css b/app/css/footer.css index 00bac59..c3ad527 100644 --- a/app/css/footer.css +++ b/app/css/footer.css @@ -1,7 +1,7 @@ footer { padding: 2rem; - background-color: var(--brand-color-dark); + background-color: var(--subtle-color); } .contacts { @@ -16,52 +16,3 @@ footer { width: 161px; } -.social-icons { - display: flex; - justify-content: space-between; - align-items: center; - margin: 0.5rem 0 1rem 0; -} - -.social-icons, -.github { - font-size: 0; -} - -.icon { - min-width: 2rem; - min-height: 2rem; - - background-repeat: no-repeat; - background-position: center; - background-size: calc(100% - 5px); - opacity: 0.5; - - &:hover { - opacity: 1; - } - - &-vk { - background-image: resolve("icon-vkontakte.svg"); - } - - &-fb { - background-image: resolve("icon-facebook.svg"); - } - - &-tw { - background-image: resolve("icon-twitter.svg"); - } - - &-ig { - background-image: resolve("icon-instagram.svg"); - } -} - -.github-link { - display: inline-block; - width: 91px; - height: 16px; - - background-image: resolve("github.svg"); -} diff --git a/app/css/general.css b/app/css/general.css index 5f1107d..eef70c5 100644 --- a/app/css/general.css +++ b/app/css/general.css @@ -1,5 +1,10 @@ +*, *:before, *:after { + box-sizing: inherit; +} + html { font-size: var(--base-px-size); + box-sizing: border-box; @media (--viewport-large) { font-size: var(--large-px-size); diff --git a/app/css/header.css b/app/css/header.css index cf9557a..c629458 100644 --- a/app/css/header.css +++ b/app/css/header.css @@ -5,8 +5,8 @@ header { background-color: var(--brand-color); background-image: - repeating-linear-gradient(150deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.06) 1px, transparent 0, transparent 41px), - repeating-linear-gradient(-150deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.06) 1px, transparent 0, transparent 41px); + repeating-linear-gradient(150deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06) 1px, transparent 0, transparent 41px), + repeating-linear-gradient(-150deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06) 1px, transparent 0, transparent 41px); @media (--viewport-medium) { padding-bottom: 4rem; @@ -15,7 +15,7 @@ header { h1 { margin: 0 0 0.25rem; - color: var(--light-color); + color: var(--dark-color); } p { @@ -25,11 +25,11 @@ header { } a:any-link { - color: var(--light-color); + color: var(--dark-color); } } .logo { - width: 300px; - height: 300px; + width: auto; + height: auto; } diff --git a/app/css/style.css b/app/css/style.css index df17289..8024fb0 100644 --- a/app/css/style.css +++ b/app/css/style.css @@ -1,7 +1,7 @@ @import "http://github.com/normalize.css"; @import "http://github.com/variables.css"; -@import "http://github.com/prismjs-default-theme/prism-default.css"; +@import "http://github.com/prismjs/themes/prism.css"; @import "http://github.com/general.css"; @import "http://github.com/prism.css"; diff --git a/app/css/variables.css b/app/css/variables.css index e3e493b..18a3f54 100644 --- a/app/css/variables.css +++ b/app/css/variables.css @@ -2,7 +2,7 @@ --base-px-size: 16px; --large-px-size: calc(var(--base-px-size) * 1.25); - --brand-color: #312785; + --brand-color: #fff; --brand-color-dark: #2d2d44; --dark-color: #5a5a5a; diff --git a/app/img/angular-helpers.jpg b/app/img/angular-helpers.jpg new file mode 100644 index 0000000..00940d3 Binary files /dev/null and b/app/img/angular-helpers.jpg differ diff --git a/app/img/bane.svg b/app/img/bane.svg deleted file mode 100644 index 2e5cc47..0000000 --- a/app/img/bane.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/img/files-naming.jpg b/app/img/files-naming.jpg new file mode 100644 index 0000000..5ed5a1a Binary files /dev/null and b/app/img/files-naming.jpg differ diff --git a/app/img/github.svg b/app/img/github.svg deleted file mode 100644 index e1cffa9..0000000 --- a/app/img/github.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/img/icon-facebook.svg b/app/img/icon-facebook.svg deleted file mode 100644 index 77beec6..0000000 --- a/app/img/icon-facebook.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/img/icon-instagram.svg b/app/img/icon-instagram.svg deleted file mode 100644 index 74ac48c..0000000 --- a/app/img/icon-instagram.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/img/icon-twitter.svg b/app/img/icon-twitter.svg deleted file mode 100644 index d5eae0c..0000000 --- a/app/img/icon-twitter.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/img/icon-vkontakte.svg b/app/img/icon-vkontakte.svg deleted file mode 100644 index f2c7d01..0000000 --- a/app/img/icon-vkontakte.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/img/logo-full.svg b/app/img/logo-full.svg deleted file mode 100644 index 7319e8a..0000000 --- a/app/img/logo-full.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/img/logo.png b/app/img/logo.png new file mode 100644 index 0000000..b942f64 Binary files /dev/null and b/app/img/logo.png differ diff --git a/app/img/logo.svg b/app/img/logo.svg deleted file mode 100644 index 241b8b6..0000000 --- a/app/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/img/og.png b/app/img/og.png deleted file mode 100644 index 3e9d36b..0000000 Binary files a/app/img/og.png and /dev/null differ diff --git a/app/img/structure-example.jpg b/app/img/structure-example.jpg new file mode 100644 index 0000000..0e1120d Binary files /dev/null and b/app/img/structure-example.jpg differ diff --git a/app/js/app.js b/app/js/app.js index fb99126..8ed8038 100644 --- a/app/js/app.js +++ b/app/js/app.js @@ -1 +1,6 @@ import 'prismjs'; +import 'prismjs/components/prism-stylus.js'; +import 'prismjs/components/prism-jade.js'; +import 'prismjs/components/prism-javascript.js'; +import 'prismjs/components/prism-git.js'; + diff --git a/app/templates/helpers/resolve.js b/app/templates/helpers/resolve.js index fd6ed77..7215c8a 100644 --- a/app/templates/helpers/resolve.js +++ b/app/templates/helpers/resolve.js @@ -22,5 +22,6 @@ module.exports = function(url) { url = file.replace(root, ''); } + url = url.replace(/^[/]{1}/, ''); return url; }; diff --git a/app/templates/index.hbs b/app/templates/index.hbs index 1fe672b..ef9e72e 100644 --- a/app/templates/index.hbs +++ b/app/templates/index.hbs @@ -1,69 +1,126 @@ - + - Стиль кода Академии HTML + Aitarget Codestyle - - - - - - - - - - + + -
- {{~> header ~}} - -
+
+ {{~> header ~}} +

Оглавление

- - + + + + +
-
+
+ +
+

Jade

+ {{~> jade/jade-rules ~}} + {{~> jade/jade-recomendations ~}} +
+ +
+

Stylus

+ {{~> stylus/stylus-rules ~}} + {{~> stylus/stylus-recomendations ~}} +
+ +
+

JavaScript

+ {{~> js/js-rules ~}} +
+ +
+

jQuery

+ {{~> jquery/jquery-rules ~}} +
-
-

HTML

- {{~> html/html-rules ~}} -
+
+

Angular

+ {{~> angular/angular-rules ~}} + {{~> angular/angular-recomendations ~}} +
-
-

CSS

- {{~> css/css-rules ~}} -
+
+

Git

+ {{~> git/git-rules ~}} +
- {{~> footer ~}} -
+ {{~> footer ~}} + - - + + diff --git a/app/templates/partials/angular/angular-recomendations.hbs b/app/templates/partials/angular/angular-recomendations.hbs new file mode 100644 index 0000000..164acd0 --- /dev/null +++ b/app/templates/partials/angular/angular-recomendations.hbs @@ -0,0 +1,8 @@ +
+
+ {{~> angular/recomendations/angular-general-recomendations ~}} +
+
+ + + diff --git a/app/templates/partials/angular/angular-rules.hbs b/app/templates/partials/angular/angular-rules.hbs new file mode 100644 index 0000000..baeabcf --- /dev/null +++ b/app/templates/partials/angular/angular-rules.hbs @@ -0,0 +1,30 @@ +
+
+ {{~> angular/rules/angular-files-naming ~}} +
+
+
+

+        {{~> angular/examples/angular-files-naming-example ~}}
+      
+
+
+
+ +
+
+ {{~> angular/rules/angular-files-structure ~}} +
+
+ {{~> angular/examples/angular-files-structure-example ~}} +
+
+ +
+
+ {{~> angular/rules/angular-helpers ~}} +
+
angular/examples/angular-helpers-example ~}} +
+
\ No newline at end of file diff --git a/app/templates/partials/angular/examples/angular-files-naming-example.hbs b/app/templates/partials/angular/examples/angular-files-naming-example.hbs new file mode 100644 index 0000000..6635d13 --- /dev/null +++ b/app/templates/partials/angular/examples/angular-files-naming-example.hbs @@ -0,0 +1 @@ +Наименование сущностей \ No newline at end of file diff --git a/app/templates/partials/angular/examples/angular-files-structure-example.hbs b/app/templates/partials/angular/examples/angular-files-structure-example.hbs new file mode 100644 index 0000000..128efe2 --- /dev/null +++ b/app/templates/partials/angular/examples/angular-files-structure-example.hbs @@ -0,0 +1 @@ +Стурктура компонента diff --git a/app/templates/partials/angular/examples/angular-general-recommendations-example.hbs b/app/templates/partials/angular/examples/angular-general-recommendations-example.hbs new file mode 100644 index 0000000..21f89ae --- /dev/null +++ b/app/templates/partials/angular/examples/angular-general-recommendations-example.hbs @@ -0,0 +1,2 @@ +

Наименование файлов

+

Для jQuery-переменных используйте префикс $.

diff --git a/app/templates/partials/angular/examples/angular-helpers-example.hbs b/app/templates/partials/angular/examples/angular-helpers-example.hbs new file mode 100644 index 0000000..425e88f --- /dev/null +++ b/app/templates/partials/angular/examples/angular-helpers-example.hbs @@ -0,0 +1,80 @@ + \ No newline at end of file diff --git a/app/templates/partials/angular/recomendations/angular-general-recomendations.hbs b/app/templates/partials/angular/recomendations/angular-general-recomendations.hbs new file mode 100644 index 0000000..bfab703 --- /dev/null +++ b/app/templates/partials/angular/recomendations/angular-general-recomendations.hbs @@ -0,0 +1,9 @@ +

Общие рекомендации

+ \ No newline at end of file diff --git a/app/templates/partials/angular/rules/angular-files-naming.hbs b/app/templates/partials/angular/rules/angular-files-naming.hbs new file mode 100644 index 0000000..71778d5 --- /dev/null +++ b/app/templates/partials/angular/rules/angular-files-naming.hbs @@ -0,0 +1,7 @@ +

Наименование файлов, папок и сущностей Angular

+

Папку, класс и html-тэг компонента называем по БЭМу.

+

Названия модулей пишем как fba.componentName

+

Название файлов через camelCase

+

Основной единицей компонента (точкой входа в компонент) является директива, ее название совпадает с названием компонента.

+

Внутри js файлов сущностей (контроллеров, сервисов, фильтров, моделей, фабрик) через camelCase название компонента + название сущности, за исключением Модели. +(т.к. модель является сервисом, но в качестве названия сущности используем Model)

diff --git a/app/templates/partials/angular/rules/angular-files-structure.hbs b/app/templates/partials/angular/rules/angular-files-structure.hbs new file mode 100644 index 0000000..89fb9fe --- /dev/null +++ b/app/templates/partials/angular/rules/angular-files-structure.hbs @@ -0,0 +1,2 @@ +

Cтруктура файлов

+

В новом создаваемом компоненте должны присутствовать jade, stylus, js, spec.js, html для разработки компонента изолированно от других и быстрого его просмотра.

diff --git a/app/templates/partials/angular/rules/angular-helpers.hbs b/app/templates/partials/angular/rules/angular-helpers.hbs new file mode 100644 index 0000000..5800dca --- /dev/null +++ b/app/templates/partials/angular/rules/angular-helpers.hbs @@ -0,0 +1,4 @@ +

Встроенные хэлперы Angular

+

По возможности используйте встроенные ангулярные хэлперы.

+

Для работы с массивами и объектами и манипуляциями элементами внутри них используйте библиотеку lodash

+ diff --git a/app/templates/partials/css/css-recomendations.hbs b/app/templates/partials/css/css-recomendations.hbs deleted file mode 100644 index e76af10..0000000 --- a/app/templates/partials/css/css-recomendations.hbs +++ /dev/null @@ -1,51 +0,0 @@ -
-
- {{~> css/recomendations/css-selectors ~}} -
-
-
-

-        {{~> css/examples/css-selectors-example ~}}
-      
-
-
-
- -
-
- {{~> css/recomendations/css-important ~}} -
-
-
-

-        {{~> css/examples/css-important-example ~}}
-      
-
-
-
- -
-
- {{~> css/recomendations/css-shorthand ~}} -
-
-
-

-        {{~> css/examples/css-shorthand-example ~}}
-      
-
-
-
- -
-
- {{~> css/rules/css-vertical-align ~}} -
-
-
-

-        {{~> css/examples/css-vertical-align-example ~}}
-      
-
-
-
diff --git a/app/templates/partials/css/css-rules.hbs b/app/templates/partials/css/css-rules.hbs deleted file mode 100644 index 8946e60..0000000 --- a/app/templates/partials/css/css-rules.hbs +++ /dev/null @@ -1,64 +0,0 @@ -
-
- {{~> css/rules/css-syntax ~}} -
-
-
-

-        {{~> css/examples/css-syntax-example ~}}
-      
-
-
-
- -
-
- {{~> css/rules/css-order ~}} -
-
-
-

-        {{~> css/examples/css-order-example ~}}
-      
-
-
-
- -
-
- {{~> css/rules/css-class-names ~}} -
-
-
-

-        {{~> css/examples/css-class-names-example ~}}
-      
-
-
-
- -
-
- {{~> css/rules/css-import ~}} -
-
-
-

-        {{~> css/examples/css-import-example ~}}
-      
-
-
-
- -
-
- {{~> css/rules/css-font-variant ~}} -
-
-
-

-        {{~> css/examples/css-font-variant-example ~}}
-      
-
-
-
diff --git a/app/templates/partials/css/examples/css-class-names-example.hbs b/app/templates/partials/css/examples/css-class-names-example.hbs deleted file mode 100644 index c4a74d4..0000000 --- a/app/templates/partials/css/examples/css-class-names-example.hbs +++ /dev/null @@ -1,11 +0,0 @@ -/* Хорошо */ -.alert-danger { … } -.tweet .user-picture { … } -.button { … } -.layout-center { … } - -/* Плохо */ -.testElement { … } -.t { … } -.big_red_button { … } -.knopka { … } diff --git a/app/templates/partials/css/examples/css-font-variant-example.hbs b/app/templates/partials/css/examples/css-font-variant-example.hbs deleted file mode 100644 index 322185b..0000000 --- a/app/templates/partials/css/examples/css-font-variant-example.hbs +++ /dev/null @@ -1,24 +0,0 @@ -/* Хорошо: указан альтернативный веб-безопасный шрифт и его тип семейства */ -body { - font-family: "Helvetica", "Arial", sans-serif; -} - -/* Кому-то нравится Arial, кому-то Tahoma */ -body { - font-family: "Helvetica", "Tahoma", sans-serif; -} - -/* Плохо: указан только нестандартный шрифт */ -body { - font-family: "Helvetica"; -} - -/* Плохо: указан только нестандартный шрифт и тип семейства, альтернативный веб-безопасный шрифт отсутствует */ -body { - font-family: "Helvetica", sans-serif; -} - -/* Плохо: Georgia — шрифт с засечками, а нестандартный шрифт — без засечек */ -body { - font-family: "Helvetica", "Georgia", sans-serif; -} diff --git a/app/templates/partials/css/examples/css-import-example.hbs b/app/templates/partials/css/examples/css-import-example.hbs deleted file mode 100644 index 17d9ef0..0000000 --- a/app/templates/partials/css/examples/css-import-example.hbs +++ /dev/null @@ -1,7 +0,0 @@ -<!-- Хорошо: подключение тегом link --> -<link rel="stylesheet" href="http://github.com/module.css"> - -<!-- Плохо --> -<style> - @import url("http://github.com/module.css"); -</style> diff --git a/app/templates/partials/css/examples/css-important-example.hbs b/app/templates/partials/css/examples/css-important-example.hbs deleted file mode 100644 index 9a77ef6..0000000 --- a/app/templates/partials/css/examples/css-important-example.hbs +++ /dev/null @@ -1,5 +0,0 @@ -/* Возможно !important здесь не нужен */ -.text-page p { - font-size: 14px !important; - line-height: 20px !important; -} diff --git a/app/templates/partials/css/examples/css-order-example.hbs b/app/templates/partials/css/examples/css-order-example.hbs deleted file mode 100644 index 824ed81..0000000 --- a/app/templates/partials/css/examples/css-order-example.hbs +++ /dev/null @@ -1,38 +0,0 @@ -.declaration-order { - /* Позиционирование */ - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 100; - - /* Блочная модель */ - display: block; - float: right; - width: 100px; - height: 100px; - margin: 10px; - padding: 10px; - - /* Типографика */ - font: normal 13px/1.5 "Arial", sans-serif; - font-style: normal; - font-size: 13px; - line-height: 1.5; - font-family: "Arial", sans-serif; - text-align: center; - color: #333333; - - /* Оформление */ - background-color: #f5f5f5; - border: 1px solid #e5e5e5; - border-radius: 3px; - opacity: 1; - - /* Анимация */ - transition: color 1s; - - /* Разное */ - will-change: auto; -} diff --git a/app/templates/partials/css/examples/css-selectors-example.hbs b/app/templates/partials/css/examples/css-selectors-example.hbs deleted file mode 100644 index b2e97ad..0000000 --- a/app/templates/partials/css/examples/css-selectors-example.hbs +++ /dev/null @@ -1,12 +0,0 @@ -/* Хорошо */ -.catalog { … } -.catalog-item img { … } -.catalog-item .item-description { … } -.catalog-item h3 { … } -.catalog-item:nth-child(odd):hover .item-description::after { … } /* это тоже два уровня вложенности */ - -/* Плохо */ -.catalog .catalog-item .item-description .subtitle { … } -#header { … } -div > p > a > span { … } -a.link, span.text { … } diff --git a/app/templates/partials/css/examples/css-shorthand-example.hbs b/app/templates/partials/css/examples/css-shorthand-example.hbs deleted file mode 100644 index 138a885..0000000 --- a/app/templates/partials/css/examples/css-shorthand-example.hbs +++ /dev/null @@ -1,16 +0,0 @@ -/* Хорошо */ -.element { - margin-bottom: 10px; - border-top-left-radius: 3px; - border-top-right-radius: 3px; - background-color: red; - background-image: url("http://github.com/image.jpg"); -} - -/* Плохо */ -.element { - margin: 0 0 10px; - border-radius: 3px 3px 0 0; - background: red; - background: url("http://github.com/image.jpg"); -} diff --git a/app/templates/partials/css/examples/css-syntax-example.hbs b/app/templates/partials/css/examples/css-syntax-example.hbs deleted file mode 100644 index 09a6a2a..0000000 --- a/app/templates/partials/css/examples/css-syntax-example.hbs +++ /dev/null @@ -1,16 +0,0 @@ -/* Хорошо */ -.selector, -.selector-secondary, -.selector[type="text"] { - padding: 15px; - margin-bottom: 15px; - background-color: rgba(0, 0, 0, 0.5); - box-shadow: 0 1px 2px #cccccc, inset 0 1px 0 #ffffff; -} - -/* Плохо */ -.selector, .selector-secondary, .selector[type=text]{ - padding:15px; - margin:0px 0px 15px; - background-color:rgba(0,0,0,.5); - box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF} diff --git a/app/templates/partials/css/examples/css-vertical-align-example.hbs b/app/templates/partials/css/examples/css-vertical-align-example.hbs deleted file mode 100644 index 59d73fd..0000000 --- a/app/templates/partials/css/examples/css-vertical-align-example.hbs +++ /dev/null @@ -1,15 +0,0 @@ -/* Хорошо */ -.login-button { - display: inline-block; - vertical-align: baseline; -} - -.grid-item { - display: inline-block; - vertical-align: top; -} - -/* Плохо */ -.login-button { - display: inline-block; -} diff --git a/app/templates/partials/css/recomendations/css-important.hbs b/app/templates/partials/css/recomendations/css-important.hbs deleted file mode 100644 index 72a9642..0000000 --- a/app/templates/partials/css/recomendations/css-important.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Использование !important

-

- В большинстве случаев необходимость использования !important в CSS возникает из-за неправильного обращения к элементам страницы через каскад. Однако, в редких случаях, без использования !important не обойтись. -

-

- Подробнее в статье: http://meiert.com/en/blog/20150310/important/. -

diff --git a/app/templates/partials/css/recomendations/css-selectors.hbs b/app/templates/partials/css/recomendations/css-selectors.hbs deleted file mode 100644 index 829bd1e..0000000 --- a/app/templates/partials/css/recomendations/css-selectors.hbs +++ /dev/null @@ -1,5 +0,0 @@ -

Селекторы

-

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

-

Длинные цепочки вложенных селекторов также усложняют код и его поддержку. Хорошим подходом считается использовать вложенность до 2 или 3 уровня. Псевдоэлементы или псевдоклассы не увеличивают уровень вложенности. -

-

Идентификаторы id для стилизации не используются. Вместо идентификаторов для задания стилей используются селекторы по классам или тегам.

diff --git a/app/templates/partials/css/recomendations/css-shorthand.hbs b/app/templates/partials/css/recomendations/css-shorthand.hbs deleted file mode 100644 index fbb4e6a..0000000 --- a/app/templates/partials/css/recomendations/css-shorthand.hbs +++ /dev/null @@ -1,31 +0,0 @@ -

Сокращенная запись

-

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

- -

- Сокращённые свойства, где элементы значений однотипные (например, - margin: 10px 15px; или - padding: 1px 2px 3px;) сложнее воспринимать, чем отдельные свойства (margin-top: 10px; padding-top: 1px;). -

-

- Свойства с разнотипными элементами значений (например, - border: 1px solid #000000;) в сокращённом виде считываются легче – их можно сокращать, если нет опасности переопределить другие значения. -

diff --git a/app/templates/partials/css/rules/css-class-names.hbs b/app/templates/partials/css/rules/css-class-names.hbs deleted file mode 100644 index 815d7ab..0000000 --- a/app/templates/partials/css/rules/css-class-names.hbs +++ /dev/null @@ -1,6 +0,0 @@ -

Имена классов

- diff --git a/app/templates/partials/css/rules/css-font-variant.hbs b/app/templates/partials/css/rules/css-font-variant.hbs deleted file mode 100644 index 1da89ef..0000000 --- a/app/templates/partials/css/rules/css-font-variant.hbs +++ /dev/null @@ -1,18 +0,0 @@ -

Варианты шрифта

-

- Альтернативные варианты шрифта и тип семейства указываются в конце перечисления font-family. -

-

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

-

- Порядок шрифтов следующий: -

-
    -
  1. нестандартный шрифт;
  2. -
  3. веб-безопасный;
  4. -
  5. тип шрифта.
  6. -
-

- Список веб-безопасных шрифтов можно посмотреть здесь — cssfontstack.com. -

diff --git a/app/templates/partials/css/rules/css-import.hbs b/app/templates/partials/css/rules/css-import.hbs deleted file mode 100644 index 846ec3c..0000000 --- a/app/templates/partials/css/rules/css-import.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Правило @import

-

- Правило @import работает медленнее, чем тег <link>. В стилях @import не должен использоваться. -

diff --git a/app/templates/partials/css/rules/css-order.hbs b/app/templates/partials/css/rules/css-order.hbs deleted file mode 100644 index 5495884..0000000 --- a/app/templates/partials/css/rules/css-order.hbs +++ /dev/null @@ -1,24 +0,0 @@ -

Порядок свойств

-

- Объявления логически связанных свойств группируются в следующем порядке: -

-
    -
  1. Позиционирование
  2. -
  3. Блочная модель
  4. -
  5. Типографика
  6. -
  7. Оформление
  8. -
  9. Анимация
  10. -
  11. Разное
  12. -
-

- Позиционирование следует первым потому, что оно влияет на положение блоков в потоке документа. Блочная модель идёт следующей, так как она определяет размеры и расположение блоков. -

-

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

-

- Сгруппированные объявления в правиле отделяются друг от друга пустой строкой. -

-

- Порядок объявления подробных правил, таких как font-size, font-family, line-height, должен соответствовать порядку в сокращённой версии правила. В случае совместного использования подробных и сокращённых правил, первой должна идти сокращённая версия. -

diff --git a/app/templates/partials/css/rules/css-syntax.hbs b/app/templates/partials/css/rules/css-syntax.hbs deleted file mode 100644 index 357b04b..0000000 --- a/app/templates/partials/css/rules/css-syntax.hbs +++ /dev/null @@ -1,21 +0,0 @@ -

Синтаксис

- diff --git a/app/templates/partials/css/rules/css-vertical-align.hbs b/app/templates/partials/css/rules/css-vertical-align.hbs deleted file mode 100644 index 4f8671e..0000000 --- a/app/templates/partials/css/rules/css-vertical-align.hbs +++ /dev/null @@ -1,10 +0,0 @@ -

Указание vertical-align

-

- Значение vertical-align должно быть явно указано для блоков с display: inline-block. -

-

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

-

- Если вы хотите, чтобы элементы выравнивались по умолчанию, то явно укажите для vertical-align значение baseline. Это позволит другим понять, что вы знаете об особенностях отображения элементов с таким выравниванием и задали его намеренно. -

diff --git a/app/templates/partials/footer.hbs b/app/templates/partials/footer.hbs index b11f00c..ec57b0e 100644 --- a/app/templates/partials/footer.hbs +++ b/app/templates/partials/footer.hbs @@ -1,26 +1,7 @@ diff --git a/app/templates/partials/git/examples/git-branch-naming-example.hbs b/app/templates/partials/git/examples/git-branch-naming-example.hbs new file mode 100644 index 0000000..31245b6 --- /dev/null +++ b/app/templates/partials/git/examples/git-branch-naming-example.hbs @@ -0,0 +1,10 @@ +/* Плохо */ +shitty-shit +shitty/shit +shitty_shit + +/* Хорошо */ +fix/presets/666 +feature/breakdowns/777 +feature/breakdowns/775 +style/sidebar/222 \ No newline at end of file diff --git a/app/templates/partials/git/examples/git-commit-writing-example.hbs b/app/templates/partials/git/examples/git-commit-writing-example.hbs new file mode 100644 index 0000000..1a1a75a --- /dev/null +++ b/app/templates/partials/git/examples/git-commit-writing-example.hbs @@ -0,0 +1,12 @@ +/* Плохо */ +1. Done + +2. Some fixes + +/* Хорошо */ +1. Rewrite step module. Make customizable fbaForm module. Needs to fully integrate it to application. + +2. Change targeting label, update campaign status in grid after change. + + + diff --git a/app/templates/partials/git/git-rules.hbs b/app/templates/partials/git/git-rules.hbs new file mode 100644 index 0000000..f545b0f --- /dev/null +++ b/app/templates/partials/git/git-rules.hbs @@ -0,0 +1,25 @@ +
+
+ {{~> git/rules/git-branch-naming ~}} +
+
+
+

+        {{~> git/examples/git-branch-naming-example ~}}
+      
+
+
+
+ +
+
+ {{~> git/rules/git-commit-writing ~}} +
+
+
+

+        {{~> git/examples/git-commit-writing-example ~}}
+      
+
+
+
diff --git a/app/templates/partials/git/rules/git-branch-naming.hbs b/app/templates/partials/git/rules/git-branch-naming.hbs new file mode 100644 index 0000000..7062112 --- /dev/null +++ b/app/templates/partials/git/rules/git-branch-naming.hbs @@ -0,0 +1,19 @@ +

Наименование веток

+

Наименование веток производить по следующему принципу:

+

type/task-short-title/task-number, где

+

type - тип выполняемой задачи. Может быть +

+

+

task-number - номер выполняемой задачи в Accunote

+

task-short-title - краткое наименование задачи

+ + + diff --git a/app/templates/partials/git/rules/git-commit-writing.hbs b/app/templates/partials/git/rules/git-commit-writing.hbs new file mode 100644 index 0000000..0095641 --- /dev/null +++ b/app/templates/partials/git/rules/git-commit-writing.hbs @@ -0,0 +1,10 @@ +

Написание коммитов

+

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

+ + + + diff --git a/app/templates/partials/header.hbs b/app/templates/partials/header.hbs index e37bd5b..bc0c0bd 100644 --- a/app/templates/partials/header.hbs +++ b/app/templates/partials/header.hbs @@ -1,7 +1,7 @@
- - + + -

Стиль кода Академии HTML

-

github.com/htmlacademy/codeguide

+

Aitarget Codestyle

+

github.com/aitarget/codeguide

diff --git a/app/templates/partials/html/examples/html-attribute-order-example.hbs b/app/templates/partials/html/examples/html-attribute-order-example.hbs deleted file mode 100644 index d11ef6c..0000000 --- a/app/templates/partials/html/examples/html-attribute-order-example.hbs +++ /dev/null @@ -1,5 +0,0 @@ -<a class="element element-big" id="element" href="http://github.com/" data-name="element">Ссылка</a> - -<input class="form-control" type="text" name="test"> - -<img class="pets-picture" src="http://github.com/cats.jpg" alt="Изображение котиков"> diff --git a/app/templates/partials/html/examples/html-boolean-example.hbs b/app/templates/partials/html/examples/html-boolean-example.hbs deleted file mode 100644 index 5f28e0c..0000000 --- a/app/templates/partials/html/examples/html-boolean-example.hbs +++ /dev/null @@ -1,8 +0,0 @@ -<!-- checked="checked" необязательно --> -<input type="checkbox" required checked> - -<input type="text" disabled> - -<select> - <option value="1" selected>1</option> -</select> diff --git a/app/templates/partials/html/examples/html-doctype-example.hbs b/app/templates/partials/html/examples/html-doctype-example.hbs deleted file mode 100644 index b4109a7..0000000 --- a/app/templates/partials/html/examples/html-doctype-example.hbs +++ /dev/null @@ -1,5 +0,0 @@ -<!DOCTYPE html> -<html lang="ru"> - <head>…</head> - <body>…</body> -</html> diff --git a/app/templates/partials/html/examples/html-encoding-example.hbs b/app/templates/partials/html/examples/html-encoding-example.hbs deleted file mode 100644 index adc5776..0000000 --- a/app/templates/partials/html/examples/html-encoding-example.hbs +++ /dev/null @@ -1,4 +0,0 @@ -<head> - <meta charset="utf-8"> - <title>Заголовок страницы</title> -</head> diff --git a/app/templates/partials/html/examples/html-form-labels-example.hbs b/app/templates/partials/html/examples/html-form-labels-example.hbs deleted file mode 100644 index 14dd64d..0000000 --- a/app/templates/partials/html/examples/html-form-labels-example.hbs +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Хорошо: элемент формы radio связан с подписью через идентификатор --> -<input type="radio" id="choose"> -<label for="choose">Радио кнопка</label> - -<!-- Хорошо: элемент формы radio и подпись обёрнуты в label --> -<label> - <input type="radio"> Радио кнопка -</label> - -<!-- Плохо: подпись не связана с элементом формы --> -<input type="radio" id="choose"> Радио кнопка diff --git a/app/templates/partials/html/examples/html-img-sizes-example.hbs b/app/templates/partials/html/examples/html-img-sizes-example.hbs deleted file mode 100644 index 12e17b8..0000000 --- a/app/templates/partials/html/examples/html-img-sizes-example.hbs +++ /dev/null @@ -1,14 +0,0 @@ -<!-- Хорошо: размеры картинке заданы --> -<div class="logo-area"> - <img src="http://github.com/logo.png" alt="" width="300" height="150"> -</div> - -<!-- Плохо: размеры картинке заданы в px --> -<div class="logo-area"> - <img src="http://github.com/logo.png" alt="" width="300px" height="150px"> -</div> - -<!-- Плохо: размеры картинке не заданы --> -<div class="logo-area"> - <img src="http://github.com/logo.png" alt=""> -</div> diff --git a/app/templates/partials/html/examples/html-js-includes-example.hbs b/app/templates/partials/html/examples/html-js-includes-example.hbs deleted file mode 100644 index ce1c2f0..0000000 --- a/app/templates/partials/html/examples/html-js-includes-example.hbs +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Хорошо: скрипт подключается перед </body> --> -<!DOCTYPE html> -<html lang="ru"> - <head>…</head> - <body> - <!-- Содержимое страницы --> - <script src="http://github.com/app.js"></script> - </body> -</html> - -<!-- Плохо: скрипт подключается в секции <head> --> -<!DOCTYPE html> -<html lang="ru"> - <head> - <script src="http://github.com/app.js"></script> - </head> - <body>…</body> -</html> diff --git a/app/templates/partials/html/examples/html-language-example.hbs b/app/templates/partials/html/examples/html-language-example.hbs deleted file mode 100644 index b4109a7..0000000 --- a/app/templates/partials/html/examples/html-language-example.hbs +++ /dev/null @@ -1,5 +0,0 @@ -<!DOCTYPE html> -<html lang="ru"> - <head>…</head> - <body>…</body> -</html> diff --git a/app/templates/partials/html/examples/html-minimal-markup-example.hbs b/app/templates/partials/html/examples/html-minimal-markup-example.hbs deleted file mode 100644 index 3728ee5..0000000 --- a/app/templates/partials/html/examples/html-minimal-markup-example.hbs +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Хорошо: не используется лишняя обертка, а для декоративного элемента нет дополнительного блока в разметке. --> -<div class="features clearfix"> - <div class="features-item"> - <h2>Быстро</h2> - <p>Мы делаем свою работу быстро!</p> - </div> -</div> - -<!-- Плохо: используется лишняя обертка, которую можно сократить, а для декоративного элемента использован тег <i>, который можно заменить на псевдоэлемент. --> -<div class="features"> - <div class="clearfix"> - <div class="features-item"> - <h2>Быстро</h2> - <i class="triangle"></i> - <p>Мы делаем свою работу быстро!</p> - </div> - </div> -</div> diff --git a/app/templates/partials/html/examples/html-protocol-example.hbs b/app/templates/partials/html/examples/html-protocol-example.hbs deleted file mode 100644 index 9200582..0000000 --- a/app/templates/partials/html/examples/html-protocol-example.hbs +++ /dev/null @@ -1,6 +0,0 @@ -<!-- Нормально --> -<img src="http://www.google.ru/images/srpr/logo11w.png" alt=""> -<img src="https://www.google.ru/images/srpr/logo11w.png" alt=""> - -<!-- Лучше --> -<img src="http://www.google.ru/images/srpr/logo11w.png" alt=""> diff --git a/app/templates/partials/html/examples/html-semantics-example.hbs b/app/templates/partials/html/examples/html-semantics-example.hbs deleted file mode 100644 index 7f54bf7..0000000 --- a/app/templates/partials/html/examples/html-semantics-example.hbs +++ /dev/null @@ -1,21 +0,0 @@ -<!-- Хорошо --> -<main> - <article> - <header> - <h1>Пост в блоге</h1> - <p>Опубликовано: <time datetime="2015-02-21">21 февраля, 2015</time></p> - </header> - <p>…</p> - </article> -</main> - -<!-- Плохо --> -<div id="main"> - <div class="article"> - <div class="header"> - <h1>Пост в блоге</h1> - <p>Опубликовано: <span>21 февраля, 2015</span></p> - </div> - <p>…</p> - </div> -</div> diff --git a/app/templates/partials/html/examples/html-style-includes-example.hbs b/app/templates/partials/html/examples/html-style-includes-example.hbs deleted file mode 100644 index 1a684af..0000000 --- a/app/templates/partials/html/examples/html-style-includes-example.hbs +++ /dev/null @@ -1,17 +0,0 @@ -<!-- Хорошо: стилевой файл подключён в секции head --> -<!DOCTYPE html> -<html lang="ru"> - <head> - <link rel="stylesheet" href="http://github.com/style.css"> - </head> - <body>…</body> -</html> - -<!-- Плохо: стилевой файл подключён в секции body --> -<!DOCTYPE html> -<html lang="ru"> - <head>…</head> - <body> - <link rel="stylesheet" href="http://github.com/style.css"> - </body> -</html> diff --git a/app/templates/partials/html/examples/html-syntax-example.hbs b/app/templates/partials/html/examples/html-syntax-example.hbs deleted file mode 100644 index 9595758..0000000 --- a/app/templates/partials/html/examples/html-syntax-example.hbs +++ /dev/null @@ -1,16 +0,0 @@ -<!DOCTYPE html> -<html lang="ru"> - <head> - <meta charset="utf-8"> - <title>Страница о коте</title> - </head> - <body> - <article class="post"> - <h1>Красивый кот</h1> - <figure class="post-item"> - <img src="http://github.com/cat.jpg" alt="Изображение кота"> - <figcaption>Кот красив!</figcaption> - </figure> - </article> - </body> -</html> diff --git a/app/templates/partials/html/html-recomendations.hbs b/app/templates/partials/html/html-recomendations.hbs deleted file mode 100644 index 9b83e0e..0000000 --- a/app/templates/partials/html/html-recomendations.hbs +++ /dev/null @@ -1,38 +0,0 @@ -
-
- {{~> html/recomendations/html-minimal-markup ~}} -
-
-
-

-        {{~> html/examples/html-minimal-markup-example ~}}
-      
-
-
-
- -
-
- {{~> html/recomendations/html-semantics ~}} -
-
-
-

-        {{~> html/examples/html-semantics-example ~}}
-      
-
-
-
- -
-
- {{~> html/recomendations/html-protocol ~}} -
-
-
-

-        {{~> html/examples/html-protocol-example ~}}
-      
-
-
-
diff --git a/app/templates/partials/html/html-rules.hbs b/app/templates/partials/html/html-rules.hbs deleted file mode 100644 index 64d938c..0000000 --- a/app/templates/partials/html/html-rules.hbs +++ /dev/null @@ -1,135 +0,0 @@ -
-
- {{~> html/rules/html-syntax ~}} -
-
-
-

-        {{~> html/examples/html-syntax-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-validator ~}} -
-
- -
-
- {{~> html/rules/html-doctype ~}} -
-
-
-

-        {{~> html/examples/html-doctype-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-encoding ~}} -
-
-
-

-        {{~> html/examples/html-encoding-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-style-includes ~}} -
-
-
-

-        {{~> html/examples/html-style-includes-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-js-includes ~}} -
-
-
-

-        {{~> html/examples/html-js-includes-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-attribute-order ~}} -
-
-
-

-        {{~> html/examples/html-attribute-order-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-boolean ~}} -
-
-
-

-        {{~> html/examples/html-boolean-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-form-labels ~}} -
-
-
-

-        {{~> html/examples/html-form-labels-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-img-sizes ~}} -
-
-
-

-        {{~> html/examples/html-img-sizes-example ~}}
-      
-
-
-
- -
-
- {{~> html/rules/html-language ~}} -
-
-
-

-        {{~> html/examples/html-language-example ~}}
-      
-
-
-
diff --git a/app/templates/partials/html/recomendations/html-minimal-markup.hbs b/app/templates/partials/html/recomendations/html-minimal-markup.hbs deleted file mode 100644 index ee684e6..0000000 --- a/app/templates/partials/html/recomendations/html-minimal-markup.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Минималистичность разметки

-

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

diff --git a/app/templates/partials/html/recomendations/html-protocol.hbs b/app/templates/partials/html/recomendations/html-protocol.hbs deleted file mode 100644 index e9ca3bd..0000000 --- a/app/templates/partials/html/recomendations/html-protocol.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Протокол ресурса

-

- Если сайт поддерживает оба протокола http: и https:, то при запросе файлов в HTML через полный URL часть с протоколом из адреса можно исключить. Это сделает URL относительным и избавит от проблем с доступом, а также немного сократит запись. -

-

- Если сайт подерживает только один из протоколов, в URL лучше явно указывать соответствующий. -

diff --git a/app/templates/partials/html/recomendations/html-semantics.hbs b/app/templates/partials/html/recomendations/html-semantics.hbs deleted file mode 100644 index 01bbd18..0000000 --- a/app/templates/partials/html/recomendations/html-semantics.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Семантическая разметка

-

- В разметке должны использоваться семантические теги HTML. -

-

- Параграфы текста должны помещаться в тег <p>. Тег <br> должен применяться по назначению. -

diff --git a/app/templates/partials/html/rules/html-attribute-order.hbs b/app/templates/partials/html/rules/html-attribute-order.hbs deleted file mode 100644 index 76c3817..0000000 --- a/app/templates/partials/html/rules/html-attribute-order.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Порядок атрибутов

-

- Атрибут класса у HTML-элементов пишется первым. Единообразное написание помогает легче считывать код и быстрее разбираться в назначении блоков по их классам. -

-

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

diff --git a/app/templates/partials/html/rules/html-boolean.hbs b/app/templates/partials/html/rules/html-boolean.hbs deleted file mode 100644 index 06a16a5..0000000 --- a/app/templates/partials/html/rules/html-boolean.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Логические атрибуты

-

- Для логических атрибутов (например, checked, disabled, required) значение не указывается, а сами атрибуты указываются последними и в единообразной последовательности во всём документе. -

diff --git a/app/templates/partials/html/rules/html-doctype.hbs b/app/templates/partials/html/rules/html-doctype.hbs deleted file mode 100644 index 7fd774d..0000000 --- a/app/templates/partials/html/rules/html-doctype.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

HTML-доктайп

-

- В начале страницы обязательно должен быть указан актуальный doctype, чтобы браузер отображал её в режиме соответствия стандартам. Это гарантирует, что страница будет выглядеть единообразно во всех современных браузерах. -

diff --git a/app/templates/partials/html/rules/html-encoding.hbs b/app/templates/partials/html/rules/html-encoding.hbs deleted file mode 100644 index 003e0e3..0000000 --- a/app/templates/partials/html/rules/html-encoding.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Кодировка символов

-

- Кодировка символов на странице всегда должна быть явно указана, чтобы обеспечить корректное отображение текста. Кодировка utf-8 предпочтительна. -

diff --git a/app/templates/partials/html/rules/html-form-labels.hbs b/app/templates/partials/html/rules/html-form-labels.hbs deleted file mode 100644 index 9a0266c..0000000 --- a/app/templates/partials/html/rules/html-form-labels.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Подписи полей ввода

-

- Для улучшения взаимодействия пользователя с элементами форм, при нажатии на подпись поля, оно должно активироваться. Для этого элемент формы связывается с его описанием с помощью идентификатора и атрибута for тега <label>. -

diff --git a/app/templates/partials/html/rules/html-img-sizes.hbs b/app/templates/partials/html/rules/html-img-sizes.hbs deleted file mode 100644 index 81166e5..0000000 --- a/app/templates/partials/html/rules/html-img-sizes.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Размеры картинок

-

- Изображениям <img> должны быть явно заданы с помощью атрибута размеры в пикселях или в процентах. В случае пикселей размерность не нужна. -

-

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

diff --git a/app/templates/partials/html/rules/html-js-includes.hbs b/app/templates/partials/html/rules/html-js-includes.hbs deleted file mode 100644 index 30d2050..0000000 --- a/app/templates/partials/html/rules/html-js-includes.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Подключение скриптов

-

- Скрипты должны подключаться в самом низу страницы, чтобы при её загрузке не блокировать отображение содержимого. -

-

- При подключении скриптов в теге <script> атрибут type не указывается, так как его значение text/javascript устанавливается по умолчанию. -

diff --git a/app/templates/partials/html/rules/html-language.hbs b/app/templates/partials/html/rules/html-language.hbs deleted file mode 100644 index 3c10753..0000000 --- a/app/templates/partials/html/rules/html-language.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Атрибут языка

-

- Для элемента <html> в атрибуте lang должен указываться соответствующий язык документа. Это помогает инструментам синтеза речи определить, какое использовать произношение или системам перевода, какие использовать языковые правила. -

diff --git a/app/templates/partials/html/rules/html-style-includes.hbs b/app/templates/partials/html/rules/html-style-includes.hbs deleted file mode 100644 index 3f0626c..0000000 --- a/app/templates/partials/html/rules/html-style-includes.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Подключение стилей

-

- Стилевые файлы с помощью <link> подключаются внутри <head>. При этом атрибут type для тега <link> не указывается, так как его значение text/css устанавливается по умолчанию. -

diff --git a/app/templates/partials/html/rules/html-syntax.hbs b/app/templates/partials/html/rules/html-syntax.hbs deleted file mode 100644 index 0ae03b6..0000000 --- a/app/templates/partials/html/rules/html-syntax.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

Синтаксис

- diff --git a/app/templates/partials/html/rules/html-validator.hbs b/app/templates/partials/html/rules/html-validator.hbs deleted file mode 100644 index ab89317..0000000 --- a/app/templates/partials/html/rules/html-validator.hbs +++ /dev/null @@ -1,4 +0,0 @@ -

Валидность

-

- Документ должен проходить проверку на валидность. Для проверки используется современный валидатор. -

diff --git a/app/templates/partials/jade/examples/jade-classes-ids-example.hbs b/app/templates/partials/jade/examples/jade-classes-ids-example.hbs new file mode 100644 index 0000000..595f850 --- /dev/null +++ b/app/templates/partials/jade/examples/jade-classes-ids-example.hbs @@ -0,0 +1,9 @@ +/* Плохо */ +.carousel +nav.nav.nav_pos_left +#carousel + +/* Хорошо */ +div(class='carousel' id="carousel") +nav(class='nav nav_pos_left') +div(id="carousel") \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-comments-example.hbs b/app/templates/partials/jade/examples/jade-comments-example.hbs new file mode 100644 index 0000000..134115f --- /dev/null +++ b/app/templates/partials/jade/examples/jade-comments-example.hbs @@ -0,0 +1,12 @@ +// Этот комментарий попадёт в HTML. + +//- Этот комментарий не попадёт в HTML. + +<!--[if IE]> +meta(name='imagetoolbar' content='no') +meta(name='msthemecompatible' content='no') +<![endif]--> + +<!--noindex--> +Это содержимое не будет индексироваться поисковиком. +<!--/noindex--> \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-inline-elements-example.hbs b/app/templates/partials/jade/examples/jade-inline-elements-example.hbs new file mode 100644 index 0000000..e0d58ef --- /dev/null +++ b/app/templates/partials/jade/examples/jade-inline-elements-example.hbs @@ -0,0 +1,14 @@ +/* Хорошо */ +ul.nav + li.nav__item + a.nav__link(href='http://github.com/') Главная + li.nav__item + a.nav__link(href='http://github.com/projects') Проекты + li.nav__item + a.nav__link(href='http://github.com/contacts') Контакты + +/* Лучше */ +ul.nav + li.nav__item: a.nav__link(href='http://github.com/') Главная + li.nav__item: a.nav__link(href='http://github.com/projects') Проекты + li.nav__item: a.nav__link(href='http://github.com/contacts') Контакты \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-linewrapping-example.hbs b/app/templates/partials/jade/examples/jade-linewrapping-example.hbs new file mode 100644 index 0000000..a573ad0 --- /dev/null +++ b/app/templates/partials/jade/examples/jade-linewrapping-example.hbs @@ -0,0 +1,24 @@ +/* Плохо */ +.project + .project__name Lorem + .project__desc + | Lorem ipsum dolor sit amet, consectetur adipisicing elit. + | Unde doloremque neque facilis sed repudiandae tempore ipsum provident officia eaque quas. +.project + .project__name Ipsum. + .project__desc + | Lorem ipsum dolor sit amet, consectetur adipisicing elit. + | Unde doloremque neque facilis sed repudiandae tempore ipsum provident officia eaque quas. + +/* Хорошо */ +.project + .project__name Lorem + .project__desc + | Lorem ipsum dolor sit amet, consectetur adipisicing elit. + | Unde doloremque neque facilis sed repudiandae tempore ipsum provident officia eaque quas. + +.project + .project__name Ipsum. + .project__desc + | Lorem ipsum dolor sit amet, consectetur adipisicing elit. + | Unde doloremque neque facilis sed repudiandae tempore ipsum provident officia eaque quas. \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-long-lines-example.hbs b/app/templates/partials/jade/examples/jade-long-lines-example.hbs new file mode 100644 index 0000000..994d7c7 --- /dev/null +++ b/app/templates/partials/jade/examples/jade-long-lines-example.hbs @@ -0,0 +1,12 @@ +/* Плохо */ +input.input-text(type='text' name='project' value='csssr' data-required='Это поле обязательно для заполнения!' data-hint='Допустимы только символы латинского алфавита `[a-z-A-Z]` и числа `[0-9]`.' required) + +/* Хорошо */ +input.input-text( + type='text' + name='project' + value='csssr' + data-required='Это поле обязательно для заполнения!' + data-hint='Допустимы только символы латинского алфавита `[a-z-A-Z]` и числа `[0-9]`.' + required +) \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-quotes-example.hbs b/app/templates/partials/jade/examples/jade-quotes-example.hbs new file mode 100644 index 0000000..ed695d3 --- /dev/null +++ b/app/templates/partials/jade/examples/jade-quotes-example.hbs @@ -0,0 +1,5 @@ +/* Плохо */ +input.input-text(type='text' name='project' value='csssr' required) + +/* Хорошо */ +input.input-text(type="text" name="project" value="csssr" required) diff --git a/app/templates/partials/jade/examples/jade-several-attributes-example.hbs b/app/templates/partials/jade/examples/jade-several-attributes-example.hbs new file mode 100644 index 0000000..7f9492a --- /dev/null +++ b/app/templates/partials/jade/examples/jade-several-attributes-example.hbs @@ -0,0 +1,5 @@ +/* Плохо */ +input.input-text(type='text', name='project', value='csssr', required) + +/* Хорошо */ +input.input-text(type='text' name='project' value='csssr' required) \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-single-attributes-example.hbs b/app/templates/partials/jade/examples/jade-single-attributes-example.hbs new file mode 100644 index 0000000..7f4b803 --- /dev/null +++ b/app/templates/partials/jade/examples/jade-single-attributes-example.hbs @@ -0,0 +1,5 @@ +/* Плохо */ +input.input-checkbox(type='checkbox' checked name='browser[]' value='chrome') + +/* Хорошо */ +input.input-checkbox(type='checkbox' name='browser[]' value='chrome' checked) \ No newline at end of file diff --git a/app/templates/partials/jade/examples/jade-unnecessary-attributes-example.hbs b/app/templates/partials/jade/examples/jade-unnecessary-attributes-example.hbs new file mode 100644 index 0000000..6938ea8 --- /dev/null +++ b/app/templates/partials/jade/examples/jade-unnecessary-attributes-example.hbs @@ -0,0 +1,5 @@ +/* Плохо */ +input.input-checkbox(type='checkbox' name='browser[]' value='chrome' checked='checked') + +/* Хорошо */ +input.input-checkbox(type='checkbox' name='browser[]' value='chrome' checked) \ No newline at end of file diff --git a/app/templates/partials/jade/jade-recomendations.hbs b/app/templates/partials/jade/jade-recomendations.hbs new file mode 100644 index 0000000..f39dfc3 --- /dev/null +++ b/app/templates/partials/jade/jade-recomendations.hbs @@ -0,0 +1,13 @@ +
+
+ {{~> jade/recomendations/jade-include-partials ~}} +
+
+ +
+
+ {{~> jade/recomendations/jade-useful-links ~}} +
+
+ + diff --git a/app/templates/partials/jade/jade-rules.hbs b/app/templates/partials/jade/jade-rules.hbs new file mode 100644 index 0000000..2d5d6c2 --- /dev/null +++ b/app/templates/partials/jade/jade-rules.hbs @@ -0,0 +1,116 @@ +
+
+ {{~> jade/rules/jade-classes-ids ~}} +
+
+
+

+        {{~> jade/examples/jade-classes-ids-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-several-attributes ~}} +
+
+
+

+        {{~> jade/examples/jade-several-attributes-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-quotes ~}} +
+
+
+

+        {{~> jade/examples/jade-quotes-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-unnecessary-attributes ~}} +
+
+
+

+        {{~> jade/examples/jade-unnecessary-attributes-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-single-attributes ~}} +
+
+
+

+        {{~> jade/examples/jade-single-attributes-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-long-lines ~}} +
+
+
+

+        {{~> jade/examples/jade-long-lines-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-linewrapping ~}} +
+
+
+

+        {{~> jade/examples/jade-linewrapping-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-inline-elements ~}} +
+
+
+

+        {{~> jade/examples/jade-inline-elements-example ~}}
+      
+
+
+
+ +
+
+ {{~> jade/rules/jade-comments ~}} +
+
+
+

+        {{~> jade/examples/jade-comments-example ~}}
+      
+
+
+
\ No newline at end of file diff --git a/app/templates/partials/jade/recomendations/jade-include-partials.hbs b/app/templates/partials/jade/recomendations/jade-include-partials.hbs new file mode 100644 index 0000000..6b4cf2b --- /dev/null +++ b/app/templates/partials/jade/recomendations/jade-include-partials.hbs @@ -0,0 +1,8 @@ +

Подключение шаблонов

+ + +

Во всех случаях через пробел указывается путь от текущего расположения до шаблона без расширения .jade.

\ No newline at end of file diff --git a/app/templates/partials/jade/recomendations/jade-useful-links.hbs b/app/templates/partials/jade/recomendations/jade-useful-links.hbs new file mode 100644 index 0000000..7b93248 --- /dev/null +++ b/app/templates/partials/jade/recomendations/jade-useful-links.hbs @@ -0,0 +1,6 @@ + +

jade-lang.com - Документация Jade

+

http://jsman.ru/jade - Ещё одна документация Jade

+

http://naltatis.github.io/jade-syntax-docs - Ещё одна документация Jade

+

html2jade.org - конвертация HTML в Jade и Jade в HTML

+ diff --git a/app/templates/partials/jade/rules/jade-classes-ids.hbs b/app/templates/partials/jade/rules/jade-classes-ids.hbs new file mode 100644 index 0000000..17ad9ed --- /dev/null +++ b/app/templates/partials/jade/rules/jade-classes-ids.hbs @@ -0,0 +1,2 @@ +

Классы и идентификаторы

+

Классы и идентификаторы пишутся в аттрибутах, а не в начале. Это позволяет улучшить читаемость и сохранить однообразие кода.

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-comments.hbs b/app/templates/partials/jade/rules/jade-comments.hbs new file mode 100644 index 0000000..7b1cb4c --- /dev/null +++ b/app/templates/partials/jade/rules/jade-comments.hbs @@ -0,0 +1,3 @@ +

Комментарии

+

Комментарии в Jade, которые не должны попасть в HTML записываются через //-

+

Простые или условные комментарии можно записывать прямо в HTML-формате.

diff --git a/app/templates/partials/jade/rules/jade-inline-elements.hbs b/app/templates/partials/jade/rules/jade-inline-elements.hbs new file mode 100644 index 0000000..825a2d1 --- /dev/null +++ b/app/templates/partials/jade/rules/jade-inline-elements.hbs @@ -0,0 +1,3 @@ +

Строчные элементы

+

Строчные элементы можно записывать на одной строке через двоеточие :.

+

злоупотреблять с длинными классами.

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-linewrapping.hbs b/app/templates/partials/jade/rules/jade-linewrapping.hbs new file mode 100644 index 0000000..9686494 --- /dev/null +++ b/app/templates/partials/jade/rules/jade-linewrapping.hbs @@ -0,0 +1,2 @@ +

Перенос строки для однотипных блоков

+

Добавляйте перенос строки для однотипных блоков с множественным вложением элементов.

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-long-lines.hbs b/app/templates/partials/jade/rules/jade-long-lines.hbs new file mode 100644 index 0000000..d556992 --- /dev/null +++ b/app/templates/partials/jade/rules/jade-long-lines.hbs @@ -0,0 +1,2 @@ +

Длинные строки

+

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

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-quotes.hbs b/app/templates/partials/jade/rules/jade-quotes.hbs new file mode 100644 index 0000000..6895cf4 --- /dev/null +++ b/app/templates/partials/jade/rules/jade-quotes.hbs @@ -0,0 +1,2 @@ +

Кавычки

+

Используйте двойные кавычки для текстовых значений.

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-several-attributes.hbs b/app/templates/partials/jade/rules/jade-several-attributes.hbs new file mode 100644 index 0000000..9e1bbca --- /dev/null +++ b/app/templates/partials/jade/rules/jade-several-attributes.hbs @@ -0,0 +1,2 @@ +

Несколько аттрибутов

+

Для нескольких атрибутов запятая не нужна.

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-single-attributes.hbs b/app/templates/partials/jade/rules/jade-single-attributes.hbs new file mode 100644 index 0000000..8770533 --- /dev/null +++ b/app/templates/partials/jade/rules/jade-single-attributes.hbs @@ -0,0 +1,2 @@ +

Одиночные аттрибуты

+

Распологайте одиночные атрибуты в последнюю очередь.

\ No newline at end of file diff --git a/app/templates/partials/jade/rules/jade-unnecessary-attributes.hbs b/app/templates/partials/jade/rules/jade-unnecessary-attributes.hbs new file mode 100644 index 0000000..580f926 --- /dev/null +++ b/app/templates/partials/jade/rules/jade-unnecessary-attributes.hbs @@ -0,0 +1,2 @@ +

Необязательные аттрибуты

+

Не давайте необязательные значения атрибутам.

\ No newline at end of file diff --git a/app/templates/partials/jquery/examples/jquery-cache-example.hbs b/app/templates/partials/jquery/examples/jquery-cache-example.hbs new file mode 100644 index 0000000..3bf0db9 --- /dev/null +++ b/app/templates/partials/jquery/examples/jquery-cache-example.hbs @@ -0,0 +1,22 @@ +/* Плохо */ +function setSidebar() { + $('#sidebar').hide(); + + // ...код... + + $('#sidebar').css({ + backgroundColor: 'pink' + }); +} + +/* Хорошо */ +function setSidebar() { + var $sidebar = $('#sidebar'); + $sidebar.hide(); + + // ...код... + + $sidebar.css({ + backgroundColor: 'pink' + }); +} \ No newline at end of file diff --git a/app/templates/partials/jquery/examples/jquery-events-example.hbs b/app/templates/partials/jquery/examples/jquery-events-example.hbs new file mode 100644 index 0000000..cb97f61 --- /dev/null +++ b/app/templates/partials/jquery/examples/jquery-events-example.hbs @@ -0,0 +1,21 @@ +/* Плохо */ +$input + .click(function () { /* ... */ }) + .focus(function () { /* ... */ }) + .blur(function () { /* ... */ }); + +/* Хорошо */ +$input + .on('click', function () { /* ... */ }) + .on('focus', function () { /* ... */ }) + .on('blur', function () { /* ... */ }); + +/* Лучше */ +// Несколько событий разделяются пробелами +$field.on('click focus', function () { /* ... */ }); + +$input.on({ + // Несколько событий разделяются пробелами + 'click focus': function () { /* ... */ }, + blur: function () { /* ... */ } +}); \ No newline at end of file diff --git a/app/templates/partials/jquery/examples/jquery-search-elements-example.hbs b/app/templates/partials/jquery/examples/jquery-search-elements-example.hbs new file mode 100644 index 0000000..3c5a3f5 --- /dev/null +++ b/app/templates/partials/jquery/examples/jquery-search-elements-example.hbs @@ -0,0 +1,39 @@ +/* Плохо */ +$('ul', '#sidebar').hide(); + +/* Плохо */ +$('#sidebar').find('ul').hide(); + +/* Хорошо */ +$('#sidebar ul').hide(); + +/* Хорошо */ +$('#sidebar > ul').hide(); + +/* Хорошо */ +$sidebar.find('ul').hide(); + + + +/* Плохо */ +$('.menu button'); + +/* Плохо */ +$('.menu button#menuToggler'); + +/* Плохо */ +$('button#menuToggler'); + +/* Хорошо */ +$('#menuToggler'); + + + +/* Плохо */ +$('.navbar-menu__item'); + +/* Плохо */ +$('.js-navbar-menu__item'); + +/* Хорошо */ +$('.js-nav-link'); diff --git a/app/templates/partials/jquery/examples/jquery-variables-example.hbs b/app/templates/partials/jquery/examples/jquery-variables-example.hbs new file mode 100644 index 0000000..c2efee6 --- /dev/null +++ b/app/templates/partials/jquery/examples/jquery-variables-example.hbs @@ -0,0 +1,5 @@ +/* Плохо */ +var sidebar = $('#sidebar'); + +/* Хорошо */ +var $sidebar = $('#sidebar'); \ No newline at end of file diff --git a/app/templates/partials/jquery/jquery-rules.hbs b/app/templates/partials/jquery/jquery-rules.hbs new file mode 100644 index 0000000..17564ec --- /dev/null +++ b/app/templates/partials/jquery/jquery-rules.hbs @@ -0,0 +1,51 @@ +
+
+ {{~> jquery/rules/jquery-variables ~}} +
+
+
+

+        {{~> jquery/examples/jquery-variables-example ~}}
+      
+
+
+
+ +
+
+ {{~> jquery/rules/jquery-cache ~}} +
+
+
+

+        {{~> jquery/examples/jquery-cache-example ~}}
+      
+
+
+
+ +
+
+ {{~> jquery/rules/jquery-search-elements ~}} +
+
+
+

+        {{~> jquery/examples/jquery-search-elements-example ~}}
+      
+
+
+
+ +
+
+ {{~> jquery/rules/jquery-events ~}} +
+
+
+

+            {{~> jquery/examples/jquery-events-example ~}}
+          
+
+
+
\ No newline at end of file diff --git a/app/templates/partials/jquery/rules/jquery-cache.hbs b/app/templates/partials/jquery/rules/jquery-cache.hbs new file mode 100644 index 0000000..bae56d5 --- /dev/null +++ b/app/templates/partials/jquery/rules/jquery-cache.hbs @@ -0,0 +1,2 @@ +

Кэширование запросов

+

Кэшируйте jQuery-запросы. Каждый новый jQuery-запрос делает повторный поиск по DOM-дереву, и приложение начинает работать медленнее..

diff --git a/app/templates/partials/jquery/rules/jquery-events.hbs b/app/templates/partials/jquery/rules/jquery-events.hbs new file mode 100644 index 0000000..c75f8d8 --- /dev/null +++ b/app/templates/partials/jquery/rules/jquery-events.hbs @@ -0,0 +1,2 @@ +

jQuery события

+

Для задания обработчика элементу используйте метод .on()

diff --git a/app/templates/partials/jquery/rules/jquery-search-elements.hbs b/app/templates/partials/jquery/rules/jquery-search-elements.hbs new file mode 100644 index 0000000..78fcff1 --- /dev/null +++ b/app/templates/partials/jquery/rules/jquery-search-elements.hbs @@ -0,0 +1,5 @@ +

Поиск элементов

+

Для DOM-запросов используйте классический каскадный CSS-синтаксис $('.sidebar ul') или родитель потомок $('.sidebar > ul')

+

Используйте find для поиска внутри DOM-объекта.

+

Для поиска одного элемента используйте только идентификатор #id

+

Для поиска нескольких элементов однотипных по функционалу используйте класс с префиксом .js-* (для разделения названия класса использовать только дефис -), а не класс для стилизации элемента, название класса должно быть небольшим, но и понятным.

\ No newline at end of file diff --git a/app/templates/partials/jquery/rules/jquery-variables.hbs b/app/templates/partials/jquery/rules/jquery-variables.hbs new file mode 100644 index 0000000..8294469 --- /dev/null +++ b/app/templates/partials/jquery/rules/jquery-variables.hbs @@ -0,0 +1,2 @@ +

Наименование переменных

+

Для jQuery-переменных используйте префикс $.

diff --git a/app/templates/partials/js/examples/js-access-functions-example.hbs b/app/templates/partials/js/examples/js-access-functions-example.hbs new file mode 100644 index 0000000..0d5513e --- /dev/null +++ b/app/templates/partials/js/examples/js-access-functions-example.hbs @@ -0,0 +1,37 @@ +/* Плохо */ +dragon.age(); + +/* Хорошо */ +dragon.getAge(); + +/* Плохо */ +dragon.age(25); + +/* Хорошо */ +dragon.setAge(25); + + +/* Плохо */ +if (!dragon.age()) { + return false; +} + +/* Хорошо */ +if (!dragon.hasAge()) { + return false; +} + + +function Jedi(options) { + options || (options = {}); + var lightsaber = options.lightsaber || 'blue'; + this.set('lightsaber', lightsaber); +} + +Jedi.prototype.set = function(key, val) { + this[key] = val; +}; + +Jedi.prototype.get = function(key) { + return this[key]; +}; \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-code-blocks-example.hbs b/app/templates/partials/js/examples/js-code-blocks-example.hbs new file mode 100644 index 0000000..bda4f89 --- /dev/null +++ b/app/templates/partials/js/examples/js-code-blocks-example.hbs @@ -0,0 +1,22 @@ + +/* Плохо */ +if (test) + return false; + +/* Хорошо */ +if (test) return false; + +/* Хорошо */ +if (test) { + return false; +} + +/* Плохо */ +function() { return false; } + +/* Хорошо */ +function() { + return false; +} + + diff --git a/app/templates/partials/js/examples/js-comments-example.hbs b/app/templates/partials/js/examples/js-comments-example.hbs new file mode 100644 index 0000000..6beee76 --- /dev/null +++ b/app/templates/partials/js/examples/js-comments-example.hbs @@ -0,0 +1,70 @@ +/* Плохо */ +// make() возвращает новый элемент +// основываясь на получаемом имени тэга +// +// @param tag +// @return element +function make(tag) { + + // ...создаем element... + + return element; +} + +/* Хорошо */ +/** + * make() возвращает новый элемент + * основываясь на получаемом имени тэга + * + * @param tag + * @return element + */ +function make(tag) { + + // ...создаем element... + + return element; +} + +/* Плохо */ +var active = true; // устанавливаем активным элементом + +/* Хорошо */ +// устанавливаем активным элементом +var active = true; + +/* Плохо */ +function getType() { + console.log('проверяем тип...'); + // задаем тип по умолчанию 'no type' + var type = this._type || 'no type'; + + return type; +} + +/* Хорошо */ +function getType() { + console.log('проверяем тип...'); + + // задаем тип по умолчанию 'no type' + var type = this._type || 'no type'; + + return type; +} + + +function Calculator() { + + // TODO FIXME: тут не нужно использовать глобальную переменную + total = 0; + + return this; +} + +function Calculator() { + + // TODO: должна быть возможность изменять значение через параметр функции + this.total = 0; + + return this; +} \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-conditionals-example.hbs b/app/templates/partials/js/examples/js-conditionals-example.hbs new file mode 100644 index 0000000..88e9fa3 --- /dev/null +++ b/app/templates/partials/js/examples/js-conditionals-example.hbs @@ -0,0 +1,27 @@ +if ([0]) { + // true + // Массив(Array) является объектом, объекты преобразуются в true +} + + +/* Плохо */ +if (name !== '') { + // ...код... +} + +/* Хорошо */ +if (name) { + // ...код... +} + +/* Плохо */ +if (collection.length > 0) { + // ...код... +} + +/* Хорошо */ +if (collection.length) { + // ...код... +} + + diff --git a/app/templates/partials/js/examples/js-constructors-example.hbs b/app/templates/partials/js/examples/js-constructors-example.hbs new file mode 100644 index 0000000..4c27486 --- /dev/null +++ b/app/templates/partials/js/examples/js-constructors-example.hbs @@ -0,0 +1,55 @@ +function Jedi() { + console.log('new jedi'); +} + +/* Плохо */ +Jedi.prototype = { + fight: function fight() { + console.log('fighting'); + }, + + block: function block() { + console.log('blocking'); + } +}; + +/* Хорошо */ +Jedi.prototype.fight = function fight() { + console.log('fighting'); +}; + +Jedi.prototype.block = function block() { + console.log('blocking'); +}; + + + +/* Плохо */ +Jedi.prototype.jump = function() { + this.jumping = true; + return true; +}; + +Jedi.prototype.setHeight = function(height) { + this.height = height; +}; + +var luke = new Jedi(); +luke.jump(); // => true +luke.setHeight(20) // => undefined + +/* Хорошо */ +Jedi.prototype.jump = function() { + this.jumping = true; + return this; +}; + +Jedi.prototype.setHeight = function(height) { + this.height = height; + return this; +}; + +var luke = new Jedi(); + +luke.jump() + .setHeight(20); diff --git a/app/templates/partials/js/examples/js-copy-array-example.hbs b/app/templates/partials/js/examples/js-copy-array-example.hbs new file mode 100644 index 0000000..c5692a9 --- /dev/null +++ b/app/templates/partials/js/examples/js-copy-array-example.hbs @@ -0,0 +1,11 @@ +var len = items.length, + itemsCopy = [], + i; + +/* Плохо */ +for (i = 0; i < len; i++) { + itemsCopy[i] = items[i]; +} + +/* Хорошо */ +itemsCopy = items.slice(); \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-copy-array-like-example.hbs b/app/templates/partials/js/examples/js-copy-array-like-example.hbs new file mode 100644 index 0000000..95b5583 --- /dev/null +++ b/app/templates/partials/js/examples/js-copy-array-like-example.hbs @@ -0,0 +1,4 @@ +function trigger() { + var args = Array.prototype.slice.call(arguments); + ... +} \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-events-example.hbs b/app/templates/partials/js/examples/js-events-example.hbs new file mode 100644 index 0000000..a9c0b43 --- /dev/null +++ b/app/templates/partials/js/examples/js-events-example.hbs @@ -0,0 +1,19 @@ +/* Плохо */ +$(this).trigger('listingUpdated', listing.id); + +... + +$(this).on('listingUpdated', function(e, listingId) { + //делаем что-нибудь с listing, например: + listing.name = listings[listingId] +}); + + +/* Хорошо */ +$(this).trigger('listingUpdated', { listingId : listing.id }); + +... + +$(this).on('listingUpdated', function(e, data) { + // делаем что-нибудь с data.listingId +}); diff --git a/app/templates/partials/js/examples/js-functions-example.hbs b/app/templates/partials/js/examples/js-functions-example.hbs new file mode 100644 index 0000000..ae947d2 --- /dev/null +++ b/app/templates/partials/js/examples/js-functions-example.hbs @@ -0,0 +1,42 @@ +/* Объявление анонимной функции */ +var anonymous = function () { + return true; +}; + +/* Объявление именованной функции */ +var named = function named() { + return true; +}; + +/* Объявление функции, которая сразу же выполняется (замыкание) */ +(function () { + console.log('Если вы читаете это, вы открыли консоль.'); +})(); + + + +/* Плохо */ +if (currentUser) { + function test() { + console.log('Плохой мальчик.'); + } +} + +/* Хорошо */ +var test; +if (currentUser) { + test = function test() { + console.log('Молодец.'); + }; +} + + +/* Плохо */ +function nope(name, options, arguments) { + // ...код... +} + +/* Хорошо */ +function yup(name, options, args) { + // ...код... +} \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-key-words-example.hbs b/app/templates/partials/js/examples/js-key-words-example.hbs new file mode 100644 index 0000000..95f651b --- /dev/null +++ b/app/templates/partials/js/examples/js-key-words-example.hbs @@ -0,0 +1,14 @@ +/* Плохо */ +var superman = { + class: 'alien' +}; + +/* Плохо */ +var superman = { + klass: 'alien' +}; + +/* Хорошо */ +var superman = { + type: 'alien' +}; \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-naming-conventions-example.hbs b/app/templates/partials/js/examples/js-naming-conventions-example.hbs new file mode 100644 index 0000000..f5073b9 --- /dev/null +++ b/app/templates/partials/js/examples/js-naming-conventions-example.hbs @@ -0,0 +1,88 @@ +/* Плохо */ +function q() { + // ...код... +} + +/* Хорошо */ +function query() { + // ...код... +} + + +/* Плохо */ +var OBJEcttsssss = {}; +var this_is_my_object = {}; +function c() {}; +var u = new user({ + name: 'Bob Parr' +}); + +/* Хорошо */ +var thisIsMyObject = {}; +function thisIsMyFunction() {}; +var user = new User({ + name: 'Bob Parr' +}); + +/* Плохо */ +function user(options) { + this.name = options.name; +} + +var bad = new user({ + name: 'Плохиш' +}); + +/* Хорошо */ +function User(options) { + this.name = options.name; +} + +var good = new User({ + name: 'Кибальчиш' +}); + +/* Плохо */ +this.__firstName__ = 'Panda'; +this.firstName_ = 'Panda'; + +/* Хорошо */ +this._firstName = 'Panda'; + + + +function Rocket() {} + +// ... + +Rocket.prototype.startMessage = 'Houston, I\'m flying into space!'; + +/* Плохо */ +Rocket.prototype.start = function () { + var _this = this; + + _this.lightsCameraAction(function () { + console.log(_this.startMessage); + }); +}; + +/* Хорошо */ +Rocket.prototype.start = function () { + var rocket = this; + + rocket.lightsCameraAction(function () { + console.log(rocket.startMessage); + }); +}; + + + +/* Плохо */ +var log = function(msg) { + console.log(msg); +}; + +/* Хорошо */ +var log = function log(msg) { + console.log(msg); +}; \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-properties-example.hbs b/app/templates/partials/js/examples/js-properties-example.hbs new file mode 100644 index 0000000..6f721bf --- /dev/null +++ b/app/templates/partials/js/examples/js-properties-example.hbs @@ -0,0 +1,25 @@ +var luke = { + jedi: true, + age: 28 +}; + +/* Плохо */ +var isJedi = luke['jedi']; + +/* Хорошо */ +var isJedi = luke.jedi; + +/* Если название свойства содержит дефис, то необходимо использовать нотацию с [] */ +var isJedi = luke['jedi-master']; + + +var luke = { + jedi: true, + age: 28 +}; + +function getProp(prop) { + return luke[prop]; +} + +var isJedi = getProp('jedi'); \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-reserved-words-example.hbs b/app/templates/partials/js/examples/js-reserved-words-example.hbs new file mode 100644 index 0000000..4cbc118 --- /dev/null +++ b/app/templates/partials/js/examples/js-reserved-words-example.hbs @@ -0,0 +1,11 @@ +/* Плохо */ +var superman = { + default: { clark: 'kent' }, + private: true +}; + +/* Хорошо */ +var superman = { + defaults: { clark: 'kent' }, + hidden: true +}; \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-spaces-example.hbs b/app/templates/partials/js/examples/js-spaces-example.hbs new file mode 100644 index 0000000..b8f31e4 --- /dev/null +++ b/app/templates/partials/js/examples/js-spaces-example.hbs @@ -0,0 +1,52 @@ +/* Плохо */ +function test(){ + console.log('test'); +} + +/* Хорошо */ +function test() { + console.log('test'); +} + +/* Плохо */ +dog.set('attr',{ + age: '1 year', + breed: 'Bernese Mountain Dog' +}); + +/* Хорошо */ +dog.set('attr', { + age: '1 year', + breed: 'Bernese Mountain Dog' +}); + + +/* Плохо */ +$('#items').find('.selected').highlight().end().find('.open').updateCount(); + +/* Хорошо */ +$('#items') + .find('.selected') + .highlight() + .end() + .find('.open') + .updateCount(); + +/* Плохо */ +var leds = stage.selectAll('.led').data(data).enter().append('svg:svg').class('led', true) + .attr('width', (radius + margin) * 2).append('svg:g') + .attr('transform', 'translate(' + (radius + margin) + ',' + (radius + margin) + ')') + .call(tron.led); + +/* Хорошо */ +var leds = stage.selectAll('.led') + .data(data) + .enter().append('svg:svg') + .class('led', true) + .attr('width', (radius + margin) * 2) + .append('svg:g') + .attr('transform', 'translate(' + (radius + margin) + ',' + (radius + margin) + ')') + .call(tron.led); + + + diff --git a/app/templates/partials/js/examples/js-strings-example.hbs b/app/templates/partials/js/examples/js-strings-example.hbs new file mode 100644 index 0000000..7458254 --- /dev/null +++ b/app/templates/partials/js/examples/js-strings-example.hbs @@ -0,0 +1,27 @@ +/* Плохо */ +var name = "Боб Дилан"; + +/* Хорошо */ +var name = 'Боб Дилан'; + +/* Плохо */ +var fullName = "Боб " + this.lastName; + +/* Хорошо */ +var fullName = 'Дилан ' + this.lastName; + + +/* Плохо */ +var errorMessage = 'Эта сверхдлинная ошибка возникла из-за белой обезъяны. Не говори про обезъяну! Не слушай об обезьяне! Не думай об обезъяне!'; + +/* Плохо */ +var errorMessage = 'Эта сверхдлинная ошибка возникла из-за белой обезъяны. \ +Не говори про обезъяну! Не слушай об обезьяне! \ +Не думай об обезъяне!'; + +/* Хорошо */ +var errorMessage = ( + 'Эта сверхдлинная ошибка возникла из-за белой обезъяны. ' + + 'Не говори про обезъяну! Не слушай об обезьяне! ' + + 'Не думай об обезъяне!' +); \ No newline at end of file diff --git a/app/templates/partials/js/examples/js-syntax-example.hbs b/app/templates/partials/js/examples/js-syntax-example.hbs new file mode 100644 index 0000000..8a8edcd --- /dev/null +++ b/app/templates/partials/js/examples/js-syntax-example.hbs @@ -0,0 +1,2 @@ +

Синтаксис

+ diff --git a/app/templates/partials/js/examples/js-variables-example.hbs b/app/templates/partials/js/examples/js-variables-example.hbs new file mode 100644 index 0000000..3e299a6 --- /dev/null +++ b/app/templates/partials/js/examples/js-variables-example.hbs @@ -0,0 +1,83 @@ +/* Плохо */ +var items = getItems(); +var goSportsTeam = true; +var dragonball = 'z'; + +/* Хорошо */ +var items = getItems(), + goSportsTeam = true, + dragonball = 'z'; + + +/* Плохо */ +var i, len, dragonball, + items = getItems(), + goSportsTeam = true; + +/* Плохо */ +var i, items = getItems(), + dragonball, + goSportsTeam = true, + len; + +/* Хорошо */ +var items = getItems(), + goSportsTeam = true, + dragonball, + length, + i; + + +/* Плохо */ +function () { + test(); + console.log('Делаю что-нибудь..'); + + //..или не делаю... + + var name = getName(); + + if (name === 'test') { + return false; + } + + return name; +} + +/* Хорошо */ +function() { + var name = getName(); + + test(); + console.log('Делаю что-то полезное..'); + + //..продолжаю приносить пользу людям.. + + if (name === 'test') { + return false; + } + + return name; +} + +/* Плохо */ +function() { + var name = getName(); + + if (!arguments.length) { + return false; + } + + return true; +} + +/* Хорошо */ +function() { + if (!arguments.length) { + return false; + } + + var name = getName(); + + return true; +} \ No newline at end of file diff --git a/app/templates/partials/js/js-rules.hbs b/app/templates/partials/js/js-rules.hbs new file mode 100644 index 0000000..b65b6ac --- /dev/null +++ b/app/templates/partials/js/js-rules.hbs @@ -0,0 +1,229 @@ +
+
+ {{~> js/rules/js-reserved-words ~}} +
+
+
+

+        {{~> js/examples/js-reserved-words-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-key-words ~}} +
+
+
+

+        {{~> js/examples/js-key-words-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-copy-array ~}} +
+
+
+

+        {{~> js/examples/js-copy-array-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-copy-array-like ~}} +
+
+
+

+        {{~> js/examples/js-copy-array-like-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-strings ~}} +
+
+
+

+        {{~> js/examples/js-strings-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-functions ~}} +
+
+
+

+        {{~> js/examples/js-functions-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-properties ~}} +
+
+
+

+        {{~> js/examples/js-properties-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-variables ~}} +
+
+
+

+        {{~> js/examples/js-variables-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-conditionals ~}} +
+
+
+

+        {{~> js/examples/js-conditionals-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-code-blocks ~}} +
+
+
+

+        {{~> js/examples/js-code-blocks-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-comments ~}} +
+
+
+

+        {{~> js/examples/js-comments-example ~}}
+      
+
+
+
+ +
+
+ {{~> js/rules/js-syntax ~}} +
+
+ {{~> js/examples/js-syntax-example ~}} +
+
+ +
+
+ {{~> js/rules/js-spaces ~}} +
+
+
+

+            {{~> js/examples/js-spaces-example ~}}
+          
+
+
+
+ +
+
+ {{~> js/rules/js-naming-conventions ~}} +
+
+
+

+            {{~> js/examples/js-naming-conventions-example ~}}
+          
+
+
+
+ +
+
+ {{~> js/rules/js-access-functions ~}} +
+
+
+

+            {{~> js/examples/js-access-functions-example ~}}
+          
+
+
+
+ +
+
+ {{~> js/rules/js-constructors ~}} +
+
+
+

+            {{~> js/examples/js-constructors-example ~}}
+          
+
+
+
+ +
+
+ {{~> js/rules/js-constructors ~}} +
+
+
+

+            {{~> js/examples/js-constructors-example ~}}
+          
+
+
+
+ +
+
+ {{~> js/rules/js-events ~}} +
+
+
+

+            {{~> js/examples/js-events-example ~}}
+          
+
+
+
diff --git a/app/templates/partials/js/recomendations/js-useful-links.hbs b/app/templates/partials/js/recomendations/js-useful-links.hbs new file mode 100644 index 0000000..7b93248 --- /dev/null +++ b/app/templates/partials/js/recomendations/js-useful-links.hbs @@ -0,0 +1,6 @@ + +

jade-lang.com - Документация Jade

+

http://jsman.ru/jade - Ещё одна документация Jade

+

http://naltatis.github.io/jade-syntax-docs - Ещё одна документация Jade

+

html2jade.org - конвертация HTML в Jade и Jade в HTML

+ diff --git a/app/templates/partials/js/rules/js-access-functions.hbs b/app/templates/partials/js/rules/js-access-functions.hbs new file mode 100644 index 0000000..b8ef85d --- /dev/null +++ b/app/templates/partials/js/rules/js-access-functions.hbs @@ -0,0 +1,5 @@ +

Геттеры и сеттеры

+

Функции универсального доступа к свойствам не требуются.

+

Если вам необходимо создать функцию для доступа к переменной, используйте раздельные функции getVal() и setVal('hello')

+

Если свойство является логическим(boolean), используйте isVal() или hasVal()

+

Вы можете создавать функции get() и set(), но будьте логичны и последовательны – то есть не добавляйте свойства, которые не могут быть изменены через эти функции.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-code-blocks.hbs b/app/templates/partials/js/rules/js-code-blocks.hbs new file mode 100644 index 0000000..a735be6 --- /dev/null +++ b/app/templates/partials/js/rules/js-code-blocks.hbs @@ -0,0 +1,2 @@ +

Блоки кода

+

Используйте фигурные скобки для всех многострочных блоков.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-comments.hbs b/app/templates/partials/js/rules/js-comments.hbs new file mode 100644 index 0000000..61338c0 --- /dev/null +++ b/app/templates/partials/js/rules/js-comments.hbs @@ -0,0 +1,6 @@ +

Комментарии

+

Используйте /** ... */ для многострочных комментариев. Включите описание, опишите типы и значения для всех параметров и возвращаемых значений в формате jsdoc.

+

Используйте // для комментариев в одну строку. Размещайте комментарии на новой строке над темой комментария. Добавляйте пустую строку над комментарием.

+

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

Эти комментарии отличаются от обычных комментариев, так как не описывают текущее поведение, а призывают к действию, например TODO -- нужно реализовать интерфейс. Такие комментарии также автоматически обнаруживаются многими IDE и редакторами кода, что позволяет быстро перемещаться между ними.

+

Используйте // TODO FIXME: для аннотирования проблем

+

Используйте // TODO: для указания решений проблем

diff --git a/app/templates/partials/js/rules/js-conditionals.hbs b/app/templates/partials/js/rules/js-conditionals.hbs new file mode 100644 index 0000000..3e57dc2 --- /dev/null +++ b/app/templates/partials/js/rules/js-conditionals.hbs @@ -0,0 +1,12 @@ +

Условные выражения и равенства

+

Используйте === и !== вместо == и !=.

+

Условные выражения вычисляются посредством приведения к логическому типу Boolean через метод ToBoolean и всегда следуют следующим правилам:

+
    +
  • Object всегда соответствует true
  • +
  • Undefined всегда соответствует false
  • +
  • Null всегда соответствует false
  • +
  • Boolean остается неизменным
  • +
  • Number соответствует false, если является +0, -0, или NaN, в противном случае соответствует true
  • +
  • String означает false, если является пустой строкой '', в противном случае true. Условно говоря, для строки происходит сравнение не ее самой, а ее длины – в соответствии с типом number.
  • +
+

Используйте короткий синтаксис.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-constructors.hbs b/app/templates/partials/js/rules/js-constructors.hbs new file mode 100644 index 0000000..ab04be7 --- /dev/null +++ b/app/templates/partials/js/rules/js-constructors.hbs @@ -0,0 +1,4 @@ +

Конструкторы

+

Присваивайте метод прототипу вместо замены прототипа на другой объект. Замена прототипа на другой объект делает наследование невозможным.

+

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

+

Вы можете заменить стандартный метод toString(), но убедитесь, что он работает и не вызывает побочных эффектов.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-copy-array-like.hbs b/app/templates/partials/js/rules/js-copy-array-like.hbs new file mode 100644 index 0000000..298f1ba --- /dev/null +++ b/app/templates/partials/js/rules/js-copy-array-like.hbs @@ -0,0 +1,2 @@ +

Копирование похожий по свойствам на массив объект

+

Чтобы скопировать похожий по свойствам на массив объект (например, NodeList или Arguments), используйте Array::slice.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-copy-array.hbs b/app/templates/partials/js/rules/js-copy-array.hbs new file mode 100644 index 0000000..df5ca3b --- /dev/null +++ b/app/templates/partials/js/rules/js-copy-array.hbs @@ -0,0 +1,2 @@ +

Копирование массива

+

Если вам необходимо скопировать массив, используйте Array::slice.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-events.hbs b/app/templates/partials/js/rules/js-events.hbs new file mode 100644 index 0000000..d7fb4fd --- /dev/null +++ b/app/templates/partials/js/rules/js-events.hbs @@ -0,0 +1,2 @@ +

События

+

Подключая набор данных к событиям (как DOM-событиям, так и js-событиям, например, в Backbone), передавайте объект вместо простой переменной. Это позволяет в процессе всплытия событий добавлять к данному объекту дополнительную информацию.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-functions.hbs b/app/templates/partials/js/rules/js-functions.hbs new file mode 100644 index 0000000..1d37184 --- /dev/null +++ b/app/templates/partials/js/rules/js-functions.hbs @@ -0,0 +1,4 @@ +

Функции

+

Никогда не объявляйте функцию внутри блока кода — например в if, while, else и так далее. Единственное исключение — блок функции. Вместо этого присваивайте функцию уже объявленной через var переменной. Условное объявление функций работает, но в различных браузерах работает по-разному.

+

Примечание. ECMA-262 устанавливает понятие блока как списка операторов. Объявление функции (не путайте с присвоением функции переменной) не является оператором.

+

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

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-key-words.hbs b/app/templates/partials/js/rules/js-key-words.hbs new file mode 100644 index 0000000..1b0b1c9 --- /dev/null +++ b/app/templates/partials/js/rules/js-key-words.hbs @@ -0,0 +1,2 @@ +

Ключевые слова

+

Не используйте ключевые слова (в том числе измененные). Вместо них используйте синонимы.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-naming-conventions.hbs b/app/templates/partials/js/rules/js-naming-conventions.hbs new file mode 100644 index 0000000..251f172 --- /dev/null +++ b/app/templates/partials/js/rules/js-naming-conventions.hbs @@ -0,0 +1,7 @@ +

Соглашение об именовании

+

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

+

Используйте camelCase для именования объектов, функций и переменных.

+

Используйте PascalCase для именования конструкторов классов.

+

Используйте подчеркивание _ в качестве префикса для именования внутренних методов и переменных объекта.

+

Создавая ссылку на this, используйте название от самого класса в camelCase, вместо self/that/_this/me и т.п

+

Задавайте имена для функций. Это повышает читаемость сообщений об ошибках кода.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-properties.hbs b/app/templates/partials/js/rules/js-properties.hbs new file mode 100644 index 0000000..db449f7 --- /dev/null +++ b/app/templates/partials/js/rules/js-properties.hbs @@ -0,0 +1,4 @@ +

Свойства

+

Используйте точечную нотацию для доступа к свойствам и методам.

+

Используйте нотацию с [], когда вы получаете свойство, имя для которого хранится в переменной, а также если название +свойства содержит дефис.

diff --git a/app/templates/partials/js/rules/js-reserved-words.hbs b/app/templates/partials/js/rules/js-reserved-words.hbs new file mode 100644 index 0000000..26ae171 --- /dev/null +++ b/app/templates/partials/js/rules/js-reserved-words.hbs @@ -0,0 +1,2 @@ +

Зарезервированные слова

+

Не используйте зарезервированные слова в качестве ключей объектов. Они не будут работать в IE8.

\ No newline at end of file diff --git a/app/templates/partials/js/rules/js-spaces.hbs b/app/templates/partials/js/rules/js-spaces.hbs new file mode 100644 index 0000000..2c78ed2 --- /dev/null +++ b/app/templates/partials/js/rules/js-spaces.hbs @@ -0,0 +1,3 @@ +

Пробелы

+

Устанавливайте один пробел перед открывающей скобкой.

+

Используйте отступы, когда делаете цепочки вызовов.

diff --git a/app/templates/partials/js/rules/js-strings.hbs b/app/templates/partials/js/rules/js-strings.hbs new file mode 100644 index 0000000..57cf5fb --- /dev/null +++ b/app/templates/partials/js/rules/js-strings.hbs @@ -0,0 +1,3 @@ +

Строки

+

Используйте одинарные кавычки '' для строк.

+

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

diff --git a/app/templates/partials/js/rules/js-syntax.hbs b/app/templates/partials/js/rules/js-syntax.hbs new file mode 100644 index 0000000..51394b4 --- /dev/null +++ b/app/templates/partials/js/rules/js-syntax.hbs @@ -0,0 +1,3 @@ +

Синтаксис

+

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

diff --git a/app/templates/partials/js/rules/js-variables.hbs b/app/templates/partials/js/rules/js-variables.hbs new file mode 100644 index 0000000..8d6d1c9 --- /dev/null +++ b/app/templates/partials/js/rules/js-variables.hbs @@ -0,0 +1,7 @@ +

Переменные

+

Используйте одно var объявление переменных для всех переменных, и объявляйте каждую переменную на новой строке.

+

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

+

Присваивайте переменные в начале области видимости. Это помогает избегать проблем с объявлением переменных и областями видимости.

+

Все переменные которые явлюятся общими для всего тела функции выносите наверх, переменные относящиеся к +отдельным функциональными частям или конструкциям (например переменные для циклов ) объявляйте рядом с этими +функциональным частями или конструкциями.

\ No newline at end of file diff --git a/app/templates/partials/stylus/examples/stylus-composite-block-name-example.hbs b/app/templates/partials/stylus/examples/stylus-composite-block-name-example.hbs new file mode 100644 index 0000000..cdc532f --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-composite-block-name-example.hbs @@ -0,0 +1,25 @@ +/* Плохо */ +.project + // ... + + &-container + // ... + + &__name + // ... + + &:before + // ... + +/* Хорошо */ +.project + // ... + + &__name + // ... + + &:before + // ... + +.project-container + // ... \ No newline at end of file diff --git a/app/templates/partials/stylus/examples/stylus-indentation-example.hbs b/app/templates/partials/stylus/examples/stylus-indentation-example.hbs new file mode 100644 index 0000000..0b862d3 --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-indentation-example.hbs @@ -0,0 +1,13 @@ +/* Плохо */ +.project +――// ... + +∙∙&__name +∙∙∙∙// ... + +/* Хорошо */ +.project +∙∙// ... + +∙∙&__name +∙∙∙∙// ... diff --git a/app/templates/partials/stylus/examples/stylus-mixins-blocks-example.hbs b/app/templates/partials/stylus/examples/stylus-mixins-blocks-example.hbs new file mode 100644 index 0000000..ed920ee --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-mixins-blocks-example.hbs @@ -0,0 +1,11 @@ +/* Плохо */ +.block + +below(666px) + &:first-child + margin-top: 5px + +/* Хорошо */ +.block + &:first-child + +below(666px) + margin-top: 5px diff --git a/app/templates/partials/stylus/examples/stylus-one-block-example.hbs b/app/templates/partials/stylus/examples/stylus-one-block-example.hbs new file mode 100644 index 0000000..1defd83 --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-one-block-example.hbs @@ -0,0 +1,37 @@ +/* Плохо */ +// main.styl +.project + // ... + + &__name + // ... + + &__before + // ... + +.project-container + // ... + +.portfolio + // ... + + +/* Хорошо */ +// project.styl +.project + // ... + + &:before + // ... + +// project__name.styl +.project__name + // ... + +// project-container.styl +.project-container + // ... + +// portfolio.styl +.portfolio + // ... diff --git a/app/templates/partials/stylus/examples/stylus-problems-example.hbs b/app/templates/partials/stylus/examples/stylus-problems-example.hbs new file mode 100644 index 0000000..07f058c --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-problems-example.hbs @@ -0,0 +1,13 @@ +/* Плохо */ +.block + // ... + + &__item + // color #08f + +/* Хорошо */ +.block + // ... + + // &__item + // color #08f \ No newline at end of file diff --git a/app/templates/partials/stylus/examples/stylus-space-classes-example.hbs b/app/templates/partials/stylus/examples/stylus-space-classes-example.hbs new file mode 100644 index 0000000..957b3f9 --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-space-classes-example.hbs @@ -0,0 +1,17 @@ +/* Плохо */ +.project + // ... + &__name + // ... + &:before + // ... + +/* Хорошо */ +.project + // ... + + &__name + // ... + + &:before + // ... \ No newline at end of file diff --git a/app/templates/partials/stylus/examples/stylus-syntax-example.hbs b/app/templates/partials/stylus/examples/stylus-syntax-example.hbs new file mode 100644 index 0000000..fdb9180 --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-syntax-example.hbs @@ -0,0 +1,14 @@ +/* Плохо */ +.project { /* ... */ } +.project__name { /* ... */ } +.project__description { /* ... */ } + +/* Хорошо */ +.project + // ... + + &__name + // ... + + &__description + // ... \ No newline at end of file diff --git a/app/templates/partials/stylus/examples/stylus-total-example.hbs b/app/templates/partials/stylus/examples/stylus-total-example.hbs new file mode 100644 index 0000000..03941c0 --- /dev/null +++ b/app/templates/partials/stylus/examples/stylus-total-example.hbs @@ -0,0 +1,73 @@ +// Компонент +.component + // ... + + // @media-примеси компонента + +below(640px) + // ... + + // Псевдоэлементы компонента + &::after + // ... + + // Псевдоклассы компонента + &:first-child + // ... + + // Псевдоэлементы с псевдоклассом компонента + &::after + // ... + + // Псевдоклассы компонента, влияющие на элементы + & .component__element + // ... + + + +// Модификаторы компонента +.component_val + // ... + + // Псевдоклассы модификатора компонента + &:first-child + // ... + + // Псевдоэлементы модификатора компонента + &::after + // ... + + // Модификаторы компонента, влияющие на элементы + & .component__element + // ... + +// Элементы +.component__element + // ... + + // @media-примеси элемента + +below(640px) + // ... + + // Псевдоэлементы элемента + &::after + // ... + + // Псевдоклассы элемента + &:first-child + // ... + + // Псевдоэлементы с псевдоклассом элемента + &::after + // ... + +// Модификаторы элемента +.component__element_val + // ... + + // Псевдоклассы модификатора элемента + &:first-child + // ... + + // Псевдоэлементы модификатора элемента + &::after + // ... \ No newline at end of file diff --git a/app/templates/partials/stylus/recomendations/stylus-general-recomendations.hbs b/app/templates/partials/stylus/recomendations/stylus-general-recomendations.hbs new file mode 100644 index 0000000..789fab6 --- /dev/null +++ b/app/templates/partials/stylus/recomendations/stylus-general-recomendations.hbs @@ -0,0 +1,4 @@ +

Общие рекомендации

+

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

+

Используйте циклы для однотипных строк с различием в значениях, только если использование циклов + целесообразно.

\ No newline at end of file diff --git a/app/templates/partials/stylus/recomendations/stylus-problems.hbs b/app/templates/partials/stylus/recomendations/stylus-problems.hbs new file mode 100644 index 0000000..8e6b649 --- /dev/null +++ b/app/templates/partials/stylus/recomendations/stylus-problems.hbs @@ -0,0 +1,3 @@ +

Возможные проблемы и пути их решения

+

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

\ No newline at end of file diff --git a/app/templates/partials/stylus/recomendations/stylus-useful-links.hbs b/app/templates/partials/stylus/recomendations/stylus-useful-links.hbs new file mode 100644 index 0000000..aae6ca2 --- /dev/null +++ b/app/templates/partials/stylus/recomendations/stylus-useful-links.hbs @@ -0,0 +1,3 @@ + +

Документация Stylus

+

Онлайн препроцессор CSS в Stylus

diff --git a/app/templates/partials/stylus/recomendations/stylus-variables.hbs b/app/templates/partials/stylus/recomendations/stylus-variables.hbs new file mode 100644 index 0000000..0cf57ba --- /dev/null +++ b/app/templates/partials/stylus/recomendations/stylus-variables.hbs @@ -0,0 +1,8 @@ +

Переменные

+

При частой записи одинаковых значений следует использовать переменные:

+ +
    +
  • Название шрифтов
  • +
  • Фирменные цвета
  • +
  • Ресурсы в data-uri
  • +
diff --git a/app/templates/partials/stylus/rules/stylus-composite-block-name.hbs b/app/templates/partials/stylus/rules/stylus-composite-block-name.hbs new file mode 100644 index 0000000..328f52a --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-composite-block-name.hbs @@ -0,0 +1,2 @@ +

Наименование составных блоков

+

Не используйте &- для описания имен составных блоков. Это затрудняет их поиск.

\ No newline at end of file diff --git a/app/templates/partials/stylus/rules/stylus-indentation.hbs b/app/templates/partials/stylus/rules/stylus-indentation.hbs new file mode 100644 index 0000000..e7a9a7f --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-indentation.hbs @@ -0,0 +1,7 @@ +

Отступы

+

Используйте пробелы для отступов, не используйте табы и пробелы одновременно - стили не скомпилируются.

+

В этом примере ∙∙ - два пробела, а ―― - один отступ с табуляцией.

+

Используйте 2 пробела для отступов. В своем редакторе настройте табуляцию в виде пробелов, чтобы при нажатии +на кнопку tab отступы делались в виде пробелов.

+ + diff --git a/app/templates/partials/stylus/rules/stylus-mixins-blocks.hbs b/app/templates/partials/stylus/rules/stylus-mixins-blocks.hbs new file mode 100644 index 0000000..5d530a0 --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-mixins-blocks.hbs @@ -0,0 +1,2 @@ +

Свойства в примесях

+

Примеси содержат в себе только блок свойств, селекторов внутри быть не должно.

\ No newline at end of file diff --git a/app/templates/partials/stylus/rules/stylus-one-block.hbs b/app/templates/partials/stylus/rules/stylus-one-block.hbs new file mode 100644 index 0000000..43e24ce --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-one-block.hbs @@ -0,0 +1,4 @@ +

Один файл - один блок

+

Один файл — один компонент. Все стили для компонента должны быть описаны в этом файле. Стили других компонентов не должны встречаться в других файлах. + Компонентами являются как блоки, так и элементы блоков и модификаторов (БЭМ терминология). +

\ No newline at end of file diff --git a/app/templates/partials/stylus/rules/stylus-space-classes.hbs b/app/templates/partials/stylus/rules/stylus-space-classes.hbs new file mode 100644 index 0000000..4a226e4 --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-space-classes.hbs @@ -0,0 +1,3 @@ +

Отступы между классами

+

Между классами с группой свойств добавляте перенос строки для лучшей читабельности. +

\ No newline at end of file diff --git a/app/templates/partials/stylus/rules/stylus-syntax.hbs b/app/templates/partials/stylus/rules/stylus-syntax.hbs new file mode 100644 index 0000000..5d0c41c --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-syntax.hbs @@ -0,0 +1,3 @@ +

Синтаксис

+

Используйте вложенность с &, + так будет видна зависимость и иерархическое дерево классов.

diff --git a/app/templates/partials/stylus/rules/stylus-total.hbs b/app/templates/partials/stylus/rules/stylus-total.hbs new file mode 100644 index 0000000..153094e --- /dev/null +++ b/app/templates/partials/stylus/rules/stylus-total.hbs @@ -0,0 +1,2 @@ +

Итого

+

Исходя из всех предыдущих получаем следующую иерархию и последовательность

\ No newline at end of file diff --git a/app/templates/partials/stylus/stylus-recomendations.hbs b/app/templates/partials/stylus/stylus-recomendations.hbs new file mode 100644 index 0000000..5522e40 --- /dev/null +++ b/app/templates/partials/stylus/stylus-recomendations.hbs @@ -0,0 +1,33 @@ +
+
+ {{~> stylus/recomendations/stylus-variables ~}} +
+
+ +
+
+ {{~> stylus/recomendations/stylus-problems ~}} +
+
+
+

+            {{~> stylus/examples/stylus-problems-example ~}}
+        
+
+
+
+ +
+
+ {{~> stylus/recomendations/stylus-general-recomendations ~}} +
+
+ +
+
+ {{~> stylus/recomendations/stylus-useful-links ~}} +
+
+ + + diff --git a/app/templates/partials/stylus/stylus-rules.hbs b/app/templates/partials/stylus/stylus-rules.hbs new file mode 100644 index 0000000..9d495f1 --- /dev/null +++ b/app/templates/partials/stylus/stylus-rules.hbs @@ -0,0 +1,90 @@ +
+
+ {{~> stylus/rules/stylus-syntax ~}} +
+
+
+

+        {{~> stylus/examples/stylus-syntax-example ~}}
+      
+
+
+
+ +
+
+ {{~> stylus/rules/stylus-indentation ~}} +
+
+
+

+        {{~> stylus/examples/stylus-indentation-example ~}}
+      
+
+
+
+ +
+
+ {{~> stylus/rules/stylus-space-classes ~}} +
+
+
+

+          {{~> stylus/examples/stylus-space-classes-example ~}}
+      
+
+
+
+ +
+
+ {{~> stylus/rules/stylus-composite-block-name ~}} +
+
+
+

+          {{~> stylus/examples/stylus-composite-block-name-example ~}}
+      
+
+
+
+ +
+
+ {{~> stylus/rules/stylus-one-block ~}} +
+
+
+

+          {{~> stylus/examples/stylus-one-block-example ~}}
+      
+
+
+
+ +
+
+ {{~> stylus/rules/stylus-mixins-blocks ~}} +
+
+
+

+          {{~> stylus/examples/stylus-mixins-blocks-example ~}}
+      
+
+
+
+ +
+
+ {{~> stylus/rules/stylus-total ~}} +
+
+
+

+          {{~> stylus/examples/stylus-total-example ~}}
+      
+
+
+