Commit 1df4c9e1 authored by Кукуруза Андрій's avatar Кукуруза Андрій 🌽

update UB_in_CMD article

parent 77bcc93d
......@@ -5,8 +5,7 @@
### [yeoman](tutorial/libraryArchive/generatorUB.md)
### пример без моделей
https://gitlab.intecracy.com/unitybase/crypto-sample
### ub c коммандной строки
- [Запуск Простейшего Скрипта с помошью UB](UB_in_CMD.md)
### [Использование ub c командной строки](UB_in_CMD.md)
### [минимально простое приложение](tutorial/libraryArchive/README.md)
- [Начало работы над проектом](getting_started.md)
......
## Использование ub с коммандной строки
Платформа UB аналогично Node JS поддерживает запуск приложений содержащих JS код.
Для запуска простейшего скрипта, создадим файл `test.js` в корневом каталоге проекта по адресу:
`c:\Library\`
Впишем текст:
```js
console.log ("Hello, World!")
```
Далее для запуска и проверки его работоспособности выполним следующую последовательность:
- Откроем консоль
- Проверим наше чтобы местоположение запускаемого нами файла совпадало с местоположением нашего файла, в нашем случае `C:\library>`
- запустим наш файл командой: `ub test.js`
В ответ получим:
```
C:\library>ub test.js
Hello, World!
```
Как результат видим, что на базе платформы отрабатывают базисные JS команды.
## Функция создания, записи данных в файл и чтение из файла
Для начала работы по созданию файлов и папок подключим встроеный в UB аналогичный NodeJS модуль для работы с файловой системой FS, а также модуль Path.
Для этого в нашем файле `Test.js` Внесем значение:
```js
const fs = require(`fs`)
const path =require(`path`)
```
Для примера создадим файл данными в отдельной папке с названием `Test_file_cr`.
Можно создать папку вручную, или воспользоваться модулем File System.
Для создания можем вписать в наш test.js следующие строки:
```js
fs.mkdir(path.join(__dirname, 'Test_file_cr'), (err) => {
if (err) {
throw err
}
Console.log('Папка создана')
}
```
Где `fs.mkdir` вызов функции создания директории.
C параметрами создания `(path.join(__dirname, `Test_file_cr`))` - от текущей директории файла, создать папку с названием `Test_file_cr`.
После запуска данного скрипта командой `ub test.js` в первый раз, рекомендуется его потом убрать или закоментить, сочетанием клавиш `ctrl + /` или `ctrl+shift+/`, так как при повторном запуске система выдаст ошибку:
```
c:\library\test.js:11
throw err
^
[Error: EEXIST: file already exists, mkdir 'c:\library\Test_file_cr'] {
errno: -4075,
code: 'EEXIST',
syscall: 'mkdir',
path: 'C:\\library\\Test_file_cr'
}
```
Такой код ошибки появляется в случае когда папка уже создана.
Для обращения к файлу создаем переменную с произвольным названием, которую в последствии будем использовать как адрес файла.
В нашем случае `UBTST`
```js
const UBTST = path.join(__dirname, `Test_file_cr`, `text.txt`)
```
Создадим наш первый текстовый файл с названием `text.txt`
```js
fs.writeFile(UBTST, `It's time to try some new!`, err => {
if (err) {
throw err
}
console.log('Файл создан')
})
```
Функционал `writeFile` перезаписывает содержимое файла, потому для добавления дополнительной строки оптимальнее будет воспользоваться функцией appendFile
```js
fs.appendFile(UBTST, `\nGood news Everyone!`, err => {
if (err) {
throw err
}
console.log('Файл создан')
})
```
Таким образом получаем файл с записаными в него параметрами.
Для дальнейших действий рекомендуется закоментировать строки по созданию файла и его содержимого.
Теперь рассмотрим чтение данных.
Для упрощение задачи используем уже созданый нами ранее файл `text.txt`
Для чтения файла запишем:
```js
fs.readFile(UBTST, `utf-8`, (err,content)=>{
if (err) {
throw err
}
console.log(content)
// const data = Buffer.from(content)
// console.log('Content: ', data.toString())
})
```
В данном случае закомментированая часть является вторым вариантом вывода.
Так как, если не указать формат вывода `utf-8` или превращение данных в строку, то система передаст нам результаты в виде буфера c hex значениями.
В результате выполнения `ub test.js` получаем:
```
С:\library>ub test
It's time to try some new!
Good news Everyone!
```
## Использование ub с коммандной строки
Платформа UB аналогично Node JS поддерживает запуск приложений содержащих JS код.
Для запуска простейшего скрипта, создадим файл `test.js` в корневом каталоге проекта по адресу:
`c:\Library\`
Впишем текст:
```js
console.log ("Hello, World!")
```
Далее для запуска и проверки его работоспособности выполним следующую последовательность:
- Откроем консоль
- Проверим наше чтобы местоположение запускаемого нами файла совпадало с местоположением нашего файла, в нашем случае `C:\library>`
- запустим наш файл командой: `ub test.js`
В ответ получим:
```
C:\library>ub test.js
Hello, World!
```
Как результат видим, что на базе платформы отрабатывают базисные JS команды.
## Функция создания, записи данных в файл и чтение из файла
Для начала работы по созданию файлов и папок подключим встроеный в UB аналогичный NodeJS модуль для работы с файловой системой fs, а также модуль path.
Для этого в нашем файле `test.js` Внесем значение:
```js
const fs = require(`fs`)
const path =require(`path`)
```
Для примера создадим файл данными в отдельной папке с названием `Test_file_cr`.
Можно создать папку вручную, или воспользоваться модулем file system.
Платформа UB в отличие от Nodejs заточена под работу с Синхронными методами, потому для визуальных колбеков структура будет,
немного отличатся от асинхронных методов.
Для того чтобы проверить есть ли данная папка воспользуемся `fs.existsSync`
```js
const exists = fs.existsSync(path.join(__dirname, 'Test_file_cr'), exists =>{
console.log(exists ? "Директория уже существует"
: "Директория не найдена!");
});
console.log(exists);
```
Для создания можем вписать в наш test.js следующие строки:
```js
const mkdir = fs.mkdirSync(path.join(__dirname, `Test_file_cr1`) ); {
console.log('Папка создана')
}
console.log(mkdir)
```
Где `fs.mkdirSync` вызов функции создания директории.
C параметрами создания `(path.join(__dirname, `Test_file_cr`))` - от текущей директории файла, создать папку с названием `Test_file_cr`.
Для обращения к файлу создаем переменную с произвольным названием, которую в последствии будем использовать как адрес файла.
В нашем случае `UBTST`
```js
const UBTST = path.join(__dirname, `Test_file_cr`, `text.txt`)
```
Создадим наш первый текстовый файл с названием `text.txt`
```js
const writef = fs.writeFileSync(UBTST, `It's time to try some new!`, true);
{
console.log('Файл создан')
}
console.log(writef)
```
Функционал `writeFileSync` перезаписывает содержимое файла, потому для добавления дополнительной строки оптимальнее будет воспользоваться функцией appendFile
```js
const append = fs.appendFileSync(UBTST, `\nGood news Everyone!`, true);
{
console.log('Файл дополнен');
};
console.log(append)
```
Таким образом получаем файл с записаными в него параметрами.
Для дальнейших действий рекомендуется закоментировать строки по созданию файла и его содержимого сочетанием клавиш Ctrl+/.
Теперь рассмотрим чтение данных.
Для упрощение задачи используем уже созданый нами ранее файл `text.txt`
Для чтения файла запишем:
```js
const read = fs.readFileSync(UBTST, `utf-8`); {
// const data = Buffer.from(content)
// console.log('Content: ', data.toString())
};
console.log(read)
```
В данном случае закомментированая часть является вторым вариантом вывода.
Так как, если не указать формат вывода `utf-8` или превращение данных в строку, то система передаст нам результаты в виде буфера c hex значениями.
В результате выполнения `ub test.js` получаем:
```
С:\library>ub test
It's time to try some new!
Good news Everyone!
```
#Для следующего примера рассмотрим запуск с командной строки c вводимыми параметрами.
При запуске приложения из терминала/командной строки мы можем передавать ему параметры. Для получения параметров в коде приложения применяется массив process.argv. Это аналогично тому, как в языках C/C++/C#/Java в функцию main передается набор аргументов в виде строкового массива.
Первый элемент этого массива всегда указывает на путь к файлу ub.exe, который вызывает приложение. Второй элемент массив всегда указывает на путь к файлу приложения, который выполняется.
Создадим файл с наименованием `arg.js`
В коде файла запишем:
```js
let nodePath = process.argv[0];
let appPath = process.argv[1];
let name = process.argv[2];
let age = process.argv[3];
console.log("nodePath: " + nodePath);
console.log("appPath: " + appPath);
console.log();
console.log("name: " + name);
console.log("age: " + age);
```
При вводе `ub agr.js`
Получим результат:
```
С:\library>ub arg
nodePath: C:\ub\ub.exe
appPath: arg
name: undefined
age: undefined
```
В данном случае мы ожидаем, что приложению будут переданы два параметра: name и age. И поскольку мы их не передавали, то получаем undefined.
Если ввести туже конмаду но с параметрами получим: `ub agr.js Nick 27`
```
С:\library>ub arg Nick 27
nodePath: C:\ub\ub.exe
appPath: arg
name: Nick
age: 27
```
В данном случае "Nick" и "27" - это те значения, которые помещаются соответственно в process.argv[2] и process.argv[3]
## Использование ub с командной строки
[Код с последующих примеров можно посмотреть тут](../tutorial_projects/cmd)
Платформа UB, аналогично Node.js, поддерживает выполнение JS кода напрямую из файла.
Для запуска простейшего скрипта, создадим файл `test.js` в корневом каталоге проекта по адресу:
`C:\test\`.
Впишем текст:
```js
console.log("Hello, World!")
```
Далее для запуска и проверки его работоспособности выполним следующую последовательность:
- Откроем консоль
- Проверим чтобы наше местоположение совпадало с местоположением нашего файла, в нашем случае `C:\test>`
- Запустим наш файл командой: `ub test.js`
В ответ получим:
```
C:\test>ub test.js
Hello, World!
```
Как результат видим, что UB выполнила JS код.
### Функции создания, записи данных и чтение файлов
Для начала работы по созданию файлов и папок подключим встроенный в UB (аналогичный Node.js) модуль для работы с файловой системой `fs`, а также модуль `path`.
Впишем в `test.js`:
```js
const fs = require('fs')
const path = require('path')
```
Для примера создадим файл c данными в отдельной папке с названием `test_dir`.
:exclamation: Небольшое, но важное пояснение:
```
Платформа UB, в отличие от Node.js, была спроектирована под работу с синхронным кодом, потому асинхронный код (промисы) не будет работать.
Соответственно в модуле fs есть только синхронные версии методов.
```
Для того чтобы проверить есть ли данная папка воспользуемся `fs.existsSync`
```js
const exists = fs.existsSync(path.join(__dirname, 'test_dir'))
console.log(exists ? 'Директория уже существует' : 'Директория не найдена!')
```
Используем `fs.mkdirSync` для создания директории.
```js
fs.mkdirSync(path.join(__dirname, 'test_dir'))
```
Вызов функции с таким параметром создаст в текущей директории создать папку с названием `test_dir`.
Для обращения к файлу создаем переменную с произвольным названием, которую в последствии будем использовать как адрес файла.
В нашем случае это `testPath`.
```js
const testPath = path.join(__dirname, 'test_dir', 'text.txt')
```
Следующий код создаст текстовый файл с названием `text.txt`.
```js
fs.writeFileSync(testPath, 'It\'s time to try some new!')
```
Метод `writeFileSync` перезаписывает содержимое файла при каждом вызове, потому если вам нужно дописать дополнительную строку используйте `appendFileSync`.
```js
fs.appendFileSync(testPath, '\nGood news Everyone!', true)
```
Таким образом получаем файл с дописанным в него текстом.
Теперь рассмотрим чтение данных.
Для упрощения задачи используем уже созданный нами ранее файл `text.txt`
Чтение файла:
```js
const fileText = fs.readFileSync(testPath, 'utf-8')
console.log('text from file.txt:', fileText)
```
Если не указать формат вывода `utf-8`, то результат будет выведен в виде буфера c hex значениями.
В результате выполнения `ub test.js` получаем:
```
С:\library>ub test
text from file.txt: It's time to try some new!
Good news Everyone!
```
### Передача параметров с командной строки.
При запуске приложения из терминала/командной строки мы можем передавать ему параметры.
Для получения параметров в коде приложения применяется массив process.argv.
Это аналогично тому, как в языках C/C++/C#/Java в функцию main передается набор аргументов в виде строкового массива.
Первый элемент этого массива всегда указывает на путь к дистрибутиву `ub`, который запускает приложение.
Второй элемент массив всегда указывает на путь к файлу приложения, который выполняется.
Создадим файл с наименованием `arg.js`
Добавим код:
```js
const ubPath = process.argv[0]
const appPath = process.argv[1]
const name = process.argv[2]
const age = process.argv[3]
console.log('ubPath: ' + ubPath)
console.log('appPath: ' + appPath)
console.log()
console.log('name: ' + name)
console.log('age: ' + age)
```
При запуске `ub agr.js` получим результат:
```
С:\library>ub arg
ubPath: C:\ub\ub.exe
appPath: arg
name: undefined
age: undefined
```
В данном случае мы ожидаем, что приложению будут переданы два параметра: name и age. И поскольку мы их не передавали, то получаем undefined.
Если ввести ту же команду, но с параметрами `ub agr.js Nick 27`, получим:
```
С:\library>ub arg Nick 27
ubPath: C:\ub\ub.exe
appPath: arg
name: Nick
age: 27
```
В данном случае "Nick" и "27" - это те значения, которые помещаются соответственно в process.argv[2] и process.argv[3]
const ubPath = process.argv[0]
const appPath = process.argv[1]
const name = process.argv[2]
const age = process.argv[3]
console.log('ubPath: ' + ubPath)
console.log('appPath: ' + appPath)
console.log()
console.log('name: ' + name)
console.log('age: ' + age)
\ No newline at end of file
const fs = require('fs')
const path = require('path')
// Проверка на существование папки
const exists = fs.existsSync(path.join(__dirname, 'test_dir'))
console.log(exists ? 'Директория уже существует' : 'Директория не найдена!')
// Создание директории
fs.mkdirSync(path.join(__dirname, 'test_dir'))
// Запись текста в файл
const testPath = path.join(__dirname, 'test_dir', 'text.txt')
fs.writeFileSync(testPath, 'It\'s time to try some new!')
// Добавление данных в файл
fs.appendFileSync(testPath, '\nGood news Everyone!')
// Чтение данных из файла
const fileText = fs.readFileSync(testPath, 'utf-8')
console.log('text from file.txt:', fileText)
let nodePath = process.argv[0];
let appPath = process.argv[1];
let name = process.argv[2];
let age = process.argv[3];
console.log("nodePath: " + nodePath);
console.log("appPath: " + appPath);
console.log();
console.log("name: " + name);
console.log("age: " + age);
\ No newline at end of file
// console.log ("Hello, World!")
const fs = require(`fs`)
const path =require(`path`)
/*--------------------------------------------------------------------------------------------------------------*/
// // проверка на существование папки
// const exists = fs.existsSync(path.join(__dirname, 'Test_file_cr1'), exists =>{
// console.log(exists ? "Директория уже существует"
// : "Директория не найдена!");
//
// });
//
// console.log(exists)
/*--------------------------------------------------------------------------------------------------------------*/
// Создание директории
// const mkdir = fs.mkdirSync(path.join(__dirname, `Test_file_cr1`) ); {
// console.log('Папка создана')
// }
//
//
// console.log(mkdir)
/*--------------------------------------------------------------------------------------------------------------*/
const UBTST = path.join(__dirname, `Test_file_cr`, `text.txt`)
// /*--------------------------------------------------------------------------------------------------------------*/
// Запись текста в файл
// const writef = fs.writeFileSync(UBTST, `It's time to try some new!`, true);
// {
// console.log('Файл создан')
// }
//
// console.log(writef)
//
// // //
// /*--------------------------------------------------------------------------------------------------------------*/
// // добавление данных в файл
//
// const append = fs.appendFileSync(UBTST, `\nGood news Everyone!`, true);
// {
// console.log('Файл дополнен');
// };
//
// console.log(append)
/*--------------------------------------------------------------------------------------------------------------*/
// Чтение данных из файла.
const read = fs.readFileSync(UBTST, `utf-8`); {
// const data = Buffer.from(content)
// console.log('Content: ', data.toString())
};
console.log(read)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment