Skip to content

Commit 09e7bb9

Browse files
committed
Немного контента
1 parent b535f84 commit 09e7bb9

File tree

6 files changed

+316
-3
lines changed

6 files changed

+316
-3
lines changed

.vitepress/config.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export default defineConfig({
8686
{ text: 'Основы синтаксиса', link: '/learn/syntax-basics'},
8787
{ text: 'Корпоративным пользователям', link: '/learn/enterprise'},
8888
]
89-
},
89+
}
9090
]
9191
},
9292

docs/images/proj-structure.png

4.34 KB
Loading

docs/learn/libraries.md

Whitespace-only changes.

docs/learn/new-project.md

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,108 @@
66

77
Создадим пустой каталог и откроем его в VS Code с помощью меню File -> Open Folder. Этот режим открывает папку, как каталог проекта. Это основной режим разработки проектов для 1Скрипт. В нем мы работаем с содержимым папки, как с единым проектом.
88

9+
### Организация корневого каталога репозитория
10+
911
Далее, стоит определиться со структурой каталогов. Рекомендуется следующий подход:
1012

11-
* Корень репозитория не содержит собственно кода и служэ
13+
* Корень репозитория не содержит собственно кода и служит контейнером для всех ресурсов, связанных с проектом: кода, тестов, документации, вспомогательных инструментов
14+
* Код проекта, рекомендуется размещать в подпапке src. Содержимое этой папки должно быть удобно отправлять на запуск или сборку и упаковку в дистрибутив. Желательно, чтобы в ней не было ничего лишнего, что в дистрибутив попадать не должно.
15+
* Тесты проекта рекомендуется размещать в папке tests
16+
* В папке tasks рекомендуется размещать служебные скрипты, которые помогают разработчику: запускают тесты, собирают дистрибутив, еще что-то.
17+
18+
Также в корне проекта рекомендуется размещать манифест пакета, по которому собирается дистрибутив и [отправляется в хаб пакетов](/learn/libraries)
19+
20+
![](/images/proj-structure.png)
21+
22+
Файлы README и LICENSE лучше создать заранее. На начальном этапе разработки они не нужны, но когда проект будет готов к публикации, они напомнят о том, что их надо заполнить.
23+
24+
## Заполнение манифеста
25+
26+
Каждый пакет, будь то приложение или библиотека для переиспользования в других проектах, должна иметь файл манифеста. Это файл с именем `packagedef`, который описывает состав пакета: исходники, используемые библиотеки, название и версию, действия при установке и удалении пакета.
27+
28+
Технически, манифест представляет собой файл скрипта и может содержать исполняемый код. Этот скрипт обрабатывается пакетным менеджером `opm` при сборке пакета.
29+
30+
### Минимально необходимый манифест
31+
32+
В манифесте обязательно должны быть указаны:
33+
34+
* Имя пакета
35+
* Версия пакета
36+
* Состав пакета
37+
38+
Как правило, также указываются зависимости, которые надо установить вместе с пакетом. На примере ниже указаны зависимости от библиотек `fs` и `asserts`.
39+
40+
```bsl
41+
Описание.Имя("my-package")
42+
.Версия("1.0.0")
43+
.ВерсияСреды("2.0.0")
44+
.ЗависитОт("fs", "1.0.0")
45+
.ЗависитОт("asserts", "1.3.0")
46+
.ВключитьФайл("packagedef")
47+
.ВключитьФайл("src")
48+
.ВключитьФайл("oscript_modules")
49+
.ИсполняемыйФайл("src/my-script.os");
50+
```
51+
52+
### Свойства манифеста
53+
54+
* ВерсияСреды - минимально необходимая версия движка 1Скрипт, на которой будет работать пакет
55+
* ЗависитОт - указание библиотеки, которую использует наш пакет и, опционально, минимальный номер ее версии
56+
* ВключитьФайл - файл или каталог, который входит в состав пакета и будет включен в дистрибутив
57+
* ИсполняемыйФайл - если мы разрабатываем не библиотеку, а самостоятельное приложение, то здесь указываем путь к точке входа
58+
59+
::: info Информация
60+
Полный перечень настроек манифеста содержится в документации к пакетному менеджеру opm.
61+
:::
62+
63+
## Структура каталогов
64+
65+
Большинство проектов не состоят из единственного файла, а разбиты на разные модули. 1Скрипт может загружать другие скрипты в виде двух сущностей: классы и модули
66+
67+
### Класс
68+
Под классом понимается новый тип в системе типов приложения. Экземпляры объектов этого типа создаются через оператор **Новый**.
69+
70+
```bsl
71+
// подключаем функционал JSON
72+
#Использовать json
73+
74+
Парсер = Новый ПарсерJSON(); // Тип ПарсерJSON объявлен в библиотеке
75+
```
76+
77+
### Модуль
78+
79+
Модуль это то же самое, что ОбщийМодуль в системе 1С:Предприятие. Модуль - это свойство в глобальном контексте, методы которого мы можем вызывать из языка.
80+
81+
```bsl
82+
// подключаем функционал JSON
83+
#Использовать json
84+
85+
Студент = Новый Структура("Имя,Фамилия", "Иван", "Петров");
86+
// Модуль "РаботаСJSON" объявлен в библиотеке и доступен благодаря директиве #Использовать
87+
РаботаСJSON.ЗаписатьОбъект(Студент, "C:\students.json");
88+
```
89+
90+
Стандартный загрузчик ориентируется на структуру каталогов. Внутри каталога src рекомендуется создать папки `Классы` и `Модули`. Все файлы *.os из каталога "Классы" будут подключены как классы (и их можно создать через `Новый`), а файлы *.os из каталога "Модули" - как общие модули.
91+
92+
:::info Информация
93+
Подробности и принцип загрузки скриптов, а также модуль загрузчика описаны в разделе [Библиотеки](/learn/libraries)
94+
:::
95+
96+
### Подключение собственных модулей пакета
97+
98+
Для того, чтобы загрузчик отработал, необходимо в стартовом скрипте написать директиву импорта папки, в которой лежат подкаталоги `Классы` и `Модули`.
99+
100+
Например, пусть наш стартовый скрипт `my-script.os` лежит в каталоге src корня репозитория. Рядом с ним лежат 2 каталога `Классы` и `Модули`. В них расположены файлы классов и модулей соответственно. Для того, чтобы `my-script.os` увидел эти классы и модули, нам надо отправить в загрузчик "приказ" о загрузке библиотеки. Однако, в данном случае, библиотекой являемся мы сами, наш собственный проект и мы сами себя должны импортировать в пространство стартового скрипта `my-script.os`.
101+
102+
Делается это с помощью директивы `Использовать`, в качестве аргумента которой мы указываем текущий каталог (точку)
103+
104+
```bsl
105+
// Файл my-script.os
106+
// Импортируем текущую папку (в ней лежат подпапки Классы и Модули, которые обработает загрузчик)
107+
108+
#Использовать "."
109+
110+
// Использование модуля
111+
Сообщить(МойМодуль.КакойТоМетодМодуля())
112+
113+
```

0 commit comments

Comments
 (0)