Category: JavaScript

22
Сен
2020

Цикл for и длинна массива

мне нужно написать функцию, которая принимает на вход число-длину массива, который должен состоять из простых чисел.
Для поиска простых чисел Я написал вспомогательную функцию
const isPrime = num => {
for (let i = 2 i <= num; i++…

21
Сен
2020

Запись имени аудио файла в бд в конкретно данном случае

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

21
Сен
2020

Цикл анимации загрузчика svg

Мне нужна помощь в создании моего SVG loader. У меня есть такая анимация, см. ниже.
Когда начинается анимация, каждый кружок становится оранжевым.
Когда он закончится, линия начнет двигаться назад (это нормально), но каждый кружок также до…

21
Сен
2020

Как вызвать импорт?

Подключаю функции:
import func1 from ‘./func1’;
import func2 from ‘./func2’;
import func3 from ‘./func3’;


import funcN from ‘./funcN’;

const funs = Object.freeze({
func1,
func2,
func3,


});

export default function getF(n…

21
Сен
2020

🗄️ 4 базовых функции для работы с файлами в Node.js

В Node.js программно манипулировать файлами можно с помощью встроенного модуля fs, содержащего функции, необходимые для чтения, записи, удаления и перемещения файлов на сервере. Рассмотрим эти функции в действии.

Перед чтением инструкции убедитесь, что у вас уже установлен Node.js. Для работы с файлами используются промисы с синтаксисом async/await . Если вы незнакомы с концепцией асинхронного программирования в JavaScript, ознакомьтесь с нашим руководством.

Шаг 1. Читаем файлы с помощью readFile()

В каждом из следующих примеров мы сначала импортируем модуль fs – стандартный
Node.js модуль для работы с файлами. В первом примере мы воспользуемся функцией
readFile() – прочитаем файл, сохраним содержимое в
переменной и выведем результат в консоль.

Начнем с
настройки среды. Создадим папку
node-files для хранения проекта:

        mkdir node-files
cd node-files
    

В этой папке создадим текстовый файл greetings.txt для тестирования работы нашей программы:

        echo "hello, hola, bonjour, hallo" > greetings.txt
    

Команда echo выводит строковый аргумент в терминал, а символ > перенаправляет вывод в файл greetings.txt.

Cоздадим и
откроем в текстовом редакторе файл readFile.js. Например, с помощью
nano:

        nano readFile.js
    

Начнем с импорта внутри файла программы модуля fs:

        const fs = require('fs').promises;
    

Когда модуль fs только
создавался, основным способом написания асинхронного кода в Node.js были коллбэки. Но по мере роста популярности промисов, команда Node.js поработала и над их поддержкой в модуле fs.

Создадим асинхронную функцию для чтения файла. Такие функции начинаются с
ключевого слова async. С помощью функции можно разрешать промисы,
используя await, вместо того чтобы связывать промис с помощью метода .then().

        const fs = require('fs').promises;

async function readFile(filePath) {
  try {
    const data = await fs.readFile(filePath);
    console.log(data.toString());
  } catch (error) {
    console.error(`Got an error trying to read the file: ${error.message}`);
  }
}
    

Чтобы ловить ошибки
асинхронного чтения файлов, заключаем вызов fs.readFile() в блок
try...catch.

По умолчанию fs.readFile()
возвращает объект, который может хранить файлы любого типа. Когда журналируется
содержимое файла, все байты преобразуются в текст с помощью метода toString().

Если обнаружена ошибка
(если файл не найден или нет прав на чтение), в консоль выведется
соответствующее сообщение.

Осталось лишь вызвать функцию.

        const fs = require('fs').promises;

async function readFile(filePath) {
  try {
    const data = await fs.readFile(filePath);
    console.log(data.toString());
  } catch (error) {
    console.error(`Got an error trying to read the file: ${error.message}`);
  }
}

readFile('greetings.txt');
    

Сохраняем файл программы и выходим из редактора. Запускаем скрипт:

        node readFile.js
    

Получаем следующий результат:

        hello, hola, bonjour, hallo
    

Шаг 2. Запись файлов с помощью writeFile()

Создадим другой программный файл writeFile.js:

        nano writeFile.js
    

В этом примере мы напишем две функции: первая будет создавать CSV-файл, а вторая –
добавлять в него данные.

Вставим в файл следующий код:

        const fs = require('fs').promises;

async function openFile() {
  try {
    const csvHeaders = 'name,quantity,price'
    await fs.writeFile('groceries.csv', csvHeaders);
  } catch (error) {
    console.error(`Got an error trying to write to a file: ${error.message}`);
  }
}
    

Сначала функция openFile() создает
переменную csvHeaders, содержащую заголовки столбцов CSV-файла, а затем использует
функцию fs.writeFile() для создания файла и записи в него данных. Первый аргумент –
путь к файлу. Поскольку мы указали только имя, Node.js создаст файл в том же
каталоге, в котором мы выполняем код. Второй аргумент – записываемые данные. Создадим еще одну функцию для добавления данных в конец файла:

        const fs = require('fs').promises;

async function openFile() {
  try {
    const csvHeaders = 'name,quantity,price'
    await fs.writeFile('groceries.csv', csvHeaders);
  } catch (error) {
    console.error(`Got an error trying to write to a file: ${error.message}`);
  }
}

async function addGroceryItem(name, quantity, price) {
  try {
    const csvLine = `\n${name},${quantity},${price}`
    await fs.writeFile('groceries.csv', csvLine, { flag: 'a' });
  } catch (error) {
    console.error(`Got an error trying to write to a file: ${error.message}`);
  }
}
    

Асинхронная функция
addGroceryItem() принимает три аргумента: название товара, сумму и цену за
единицу. Эти аргументы используются с шаблонным литеральным синтаксисом для
формирования переменной csvLine, записываемой в файл.

Затем, как и в функции openFile(), используется
метод writeFile(), но на этот раз есть третий
аргумент: объект JavaScript c ключом flag и значением 'a' . Так мы сообщаем Node.js, что данные нужно добавить в конец файла. По умолчанию флаг имеет значение 'w', при котором создается новый файл,
если он не существует, иначе файл перезаписывается. Вы можете узнать больше о
флагах файловой системы в
документации Node.js.

Для завершения скрипта
добавим в конец файла программы следующие строки:

        (async function () {
  await openFile();
  await addGroceryItem('eggs', 12, 1.50);
  await addGroceryItem('nutella', 1, 4);
})();
    

Запускаем код:

        node writeFile.js
    

В текущем каталоге будет создан новый файл groceries.csv.

        cat groceries.csv
    

Содержимое файла groceries.csv следующее:

        name,quantity,price
eggs,12,1.5
nutella,1,4
    

Вызов openFile() создал
новый файл и добавил заголовки столбцов. Последующие вызовы
addGroceryItem() добавляют две строки с данными.

Шаг 3. Удаление файлов с помощью unlink()

На этом шаге мы научимся удалять файлы с помощью функции unlink() модуля fs и напишем Node.js скрипт для
удаления groceries.csv, созданного на предыдущем шаге.
Создадим новый программный файл deleteFile.js:

        nano deleteFile.js
    

Напишем в программном файле код, создающий
асинхронную функцию deleteFile(), которая принимает путь к файлу в
качестве аргумента и передает его функции fs.unlink(), чтобы та удалила файл из файловой системы:

        const fs = require('fs').promises;

async function deleteFile(filePath) {
  try {
    await fs.unlink(filePath);
    console.log(`Deleted ${filePath}`);
  } catch (error) {
    console.error(`Got an error trying to delete the file: ${error.message}`);
  }
}

deleteFile('groceries.csv');
    
Обратите внимание
Когда вы удаляете файл с помощью функции unlink(), он не отправляется в recycle.bin или корзину, а навсегда удаляется из файловой системы. Это действие необратимо.

Сохраняем файл и запускаем код:

        node deleteFile.js
    

На выходе получаем следующее:

        Deleted groceries.csv
    

Чтобы убедиться, что
файла больше нет, используем команду ls:

        ls
deleteFile.js   greetings.txt   readFile.js     writeFile.js
    

Шаг 4. Перемещение файлов с помощью rename()

Напоследок рассмотрим функцию перемещения. Перед тем как начать, создадим папку test-data, в которую будем перемещать файл:

        mkdir test-data
    

Скопируем файл:

        cp greetings.txt greetings-2.txt
    

Откроем для
редактирования программный файл:

        nano moveFile.js
    

Создадим функцию
moveFile(), вызывающую rename(). В ней необходимо указать путь к местоположению
исходного и целевого файлов.

        const fs = require('fs').promises;

async function moveFile(source, destination) {
  try {
    await fs.rename(source, destination);
    console.log(`Moved file from ${source} to ${destination}`);
  } catch (error) {
    console.error(`Got an error trying to move the file: ${error.message}`);
  }
}

moveFile('greetings-2.txt', 'test-data/salutations.txt');
    

Функция rename() может переместить файл в другую папку, переименовать файл в текущем каталоге или сделать и то, и другое одновременно, как в нашем коде.

Сохраним и запустим код:

        node moveFile.js
    

В ответ получаем следующее:

        Moved file from greetings-2.txt to test-data/salutations.txt
    

Подтвердим успех
операции:

        ls
deleteFile.js   greetings.txt   moveFile.js     readFile.js     test-data       writeFile.js
    

Заключение

Мы изучили функции управления файлами с помощью Node.js. Сначала загрузили содержимое файла функцией readFile(). Затем создали новый файл и добавили в него данные с помощью writeFile(), удалили файл с unlink(), а затем переместили и переименовали файл посредством rename().

С помощью функций модуля fs разработчики могут контролировать использование файлов в программах Node.js. Кстати, у нас есть и другие полезные материалы по теме Node.js:

21
Сен
2020

Аттрибуты radio checked

Интересует следующий вопрос: есть ли какой-нибудь обратный атрибут у радио checked.
document.getElementById(‘radio’).checked;

Только что-то из серии no-checked может быть. Нужно для того чтобы отключать кнопку перехода к следующему вопрос…

21
Сен
2020

CSS свойство элемента wordpress [дубликат]

Тема на вордпресс дочерняя, хочу изменить стиль элемента, но параметр для элемента прикрепляется скриптом(на сколько я понял). Пытался найти по значению параметра в папке сервера, но и близко нет. Как узнать какой скрипт вешает стиль на эл…

21
Сен
2020

Ограничение диапазона чисел в React

Имеется функция, которая обрабатывает инпут и ограничивает его в диапазоне от 1 до 1000. Но не срабатывает ограничение на ввод только цифр, помогите разобраться.
onChangeSearch(e) {
let regexp = [0-9];
let value = e.target.value;

21
Сен
2020

Как запретить изменение цвета div, если другой уже такого цвета?

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

var id_focus = “”;
const handleClick = event => {
const id = event.target.closest(‘div.square’)….

21
Сен
2020

Замена текстуры в three.js

Подскажите, пожалуйста. Пытаюсь разобраться как с помощью threejs можно получить в консоль все элементы загруженного объекта в формате GLTF, для последующей замены текстур по нажатию кнопки.
var scene, camera, renderer, ambientLight, light…

21
Сен
2020

Почему код работает правильно только со стрелочной функцией?

Задача проверить все ли элементы из массива keyRecipe присутствуют в массиве availableKeys . Если хотя бы одного нет, возвращать 0.
Так работает
if (!keyRecipe.every(element => availableKeys.includes(element))) return 0;

Так нет
if (!k…

21
Сен
2020

Скрипт контроля воспроизведения аудио

Задача: воспроизводить и прекращать воспроизведение аудио в зависимости от видимости блока. То есть, если блок имеет стиль display: block, то воспроизведение начинается до тех пор, пока стиль блока не сменится на display: none.
Вот пример …

21
Сен
2020

Кнопки сверху и снизу должны дублироваться а не каждая открывать своё меню VUE.js

Не подскажите как так сделать
Должен быть только один экземпляр меню id=mySidebar и никаких mySidebar2 на vue,js
кнопки сверху и снизу должны дублироваться а не каждая открывать своё меню
меню должно лежать в хидере, в футере только кнопк…

21
Сен
2020

не работает router-view в vue проекте

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

файл index.js главный файл router’ов
файл main.js отсюда начинается работа проекта
файл App….

21
Сен
2020

Как загрузить например определенный вид товара на соответствующую странцу?

У меня есть main.js где выводит товары с json циклом на страницу , например там только кроссовки, а мне нужно вывести товары тем же js только уже тапки на другую страницу(один json).Как сделать вывод с одного jsona на другую страницу?
func…

21
Сен
2020

Как добавить сноски в CKEDITOR5

уже 3 дня убил чтоб подключить сноски к плагину CKEDITOR5, но всё никак.
Получается добавить значек сносок, но функционал не работает, выдаёт ошибку ckeditor-duplicated-modules.
Плагин нашел вот такой – ссылка
Подскажите как правильно это …

21
Сен
2020

Не всегда получаю id div’а

В прошлом вопросе мне помогли с получением id div. Но в некоторых дивах есть img с шахматными фигурами и оттуда не получаю id клетки. Помогите пофиксить это.
Код

const handleClick = event => {
const id = event.target.id
if (id) …

21
Сен
2020

Скрытие ссылки на React

Переписываю один сайт на React. В одном месте есть ссылка которую необходимо скрыть, на старой версии сайта скрипт работал нормально, а на React вроде как обработчик oncklick не подходит, в какую сторону копать?
<a className="btn…