JAMstack — подход для создания статических сайтов. Он включает в себя JavaScript, API и разметку. При использовании такого подхода, разработчики используют JavaScript для взаимодействия пользователя с контентом, API в качестве источника информации.... Метод отличается от традиционного применения CMS отсутствием необходимости задействовать веб-сервер для фронтенда.
// Функция для преобразования объекта
// в строку формата x-www-form-urlencoded:
function httpBuildQuery(object_to_convert) {
var params = new URLSearchParams();
var paramsGenerator = function(parent_key, iterate_object) {
for (var current_key in iterate_object) {
if (typeof iterate_object[current_key] == 'string' || typeof iterate_object[current_key] == 'number') {
if (parent_key.length > 0) {
var property_path = parent_key + '[' + current_key + ']';
} else {
var property_path = current_key;
}
params.append(property_path, iterate_object[current_key]);
} else if (typeof iterate_object[current_key] == 'object') {
if (parent_key.length > 0) {
var property_path = parent_key + '[' + current_key + ']';
} else {
var property_path = current_key;
}
paramsGenerator(property_path, iterate_object[current_key]);
}
}
}
paramsGenerator('', object_to_convert);
return params.toString();
}
// Протестируем работу функции на примере:
var test_object = {
'raz' : 'Первое свойство',
'dva' : 'Второе свойство',
'tri' : {
'test' : 'Тест',
'proverka' : 'Проверка',
'massiv' : [
'aaa',
'bbb',
'ccc',
{
'lalala' : 'lololo',
'tratata' : 'trototo'
},
123,
345,
567
]
}
};
var send_string = httpBuildQuery(test_object);
var response = await (await fetch('/NewAdvert', {
method: 'POST',
headers: {
'Content-Type' : 'application/x-www-form-urlencoded'
},
body: send_string
})).text();
console.log(response);
chrome.extension.sendMessage('Ваше сообщение');
chrome.extension.onMessage.addListener(function(message) {
console.log('Принято сообщение: ' + message);
});
// Функция для вставки файла в поле input:
async function setFile(input, name, url) {
try {
var blob = await (await fetch(url)).blob();
var dt = new DataTransfer();
dt.items.add(new File([blob], name, {type: blob.type}));
input.files = dt.files;
console.log('Файл успешно вставлен:');
console.dir(input.files);
return true;
}
catch(err) {
console.log('Ошибка при вставке файла:');
console.dir(err);
return false;
}
}
// Входные параметры:
var input_element = document.querySelector('input[type="file"]');
var file_name = 'Мое музло.mp3';
var file_link = 'https://ваш-сайт.рф/music.mp3';
// Вызовем функцию для вставки файла:
setFile(input_element, file_name, file_link);
async function get() {
var response = await (await fetch('https://test-test.com/sub?channel=system:fb:advc')).json();
console.dir(response);
}
async function getFile(link) {
var blob = await (await fetch(link)).blob();
var file = new File([blob], link.replace(/^.*\//g, ''), {type: blob.type});
return file;
}
fff = await getFile('./image-name.png');
console.log('Файл скачан:');
console.dir(fff);