В этом посте я собираюсь научить вас, как легко создать приложение CRUD, используя только JavaScript. Но, прежде чем двигаться дальше, проверьте JavaScript Массив объектов. Таким образом, вы можете легко понять функции и то, как работает приложение CRUD.
Начнем!😍
Я разделил это CRUD-приложение на 2 части.
- Создание и отображение логики — Часть 1
- Обновление и удаление логики — часть 2
В первой части я сосредоточусь только на стороне javascript, а в последней части я полностью интегрирую его с интерфейсом.
Я использую массив для хранения данных, как я упоминал ранее, проверьте массив объектов javascript, если вам не совсем понятно, как массивы и объекты работают сложным образом.
Структура папок
Надеюсь, вы поняли структуру папок.
- Создайте 2 папки CSS и JS и файл index.html внутри основной папки.
- Внутри папки CSS создайте файл style.css для стилей.
- и внутри папки JS создайте файл myScript.js.
Теперь откройте файл index.html и добавьте файл сценария:
<script src="JS/myScript.js"></script> <!-- add it in the bottom of the html file after body tag-->
Добавьте файл стиля следующим образом:
<link rel="stylesheet" href="CSS/style.css"> <!-- add it inside the head tag of html file-->
Часть 1. Написание логики для добавления/создания и отображения/отображения
Внутри файла myScript.js создайте три массива объектов.
- массив категорий
- массив компаний
- массив продуктов
let categories = [ { id: 1, name: "Apparel"}, { id: 2, name: "Machinery"}, { id: 3, name: "Accessories"} ] let companies = [ { id: 1, companyName: 'Amazon'}, { id: 2, companyName: 'Alibaba'}, { id: 3, companyName: 'eBay'}, { id: 4, companyName: 'GlobalSources'} ] let products = [ { id: 1, name: 'Shirt', price: 529, categoryID: 1,companyID: 1}, { id: 2, name: 'Pencils', price: 29, categoryID: 3, companyID: 2}, { id: 3, name: 'CleaningEquipment', price: 5092, categoryID: 2, companyID: 2}, { id: 4, name: 'Hardware', price: 1092, categoryID: 2, companyID: 3}, { id: 5, name: 'Jeans', price: 1300, categoryID: 1, companyID: 4} ]
Я создал 3 массива, и теперь я собираюсь связать эти массивы, чтобы отобразить все данные о продукте с названием компании и названием категории.
Во-первых, давайте напишем 2 функции, которые дают нам данные из массивов категорий и компаний, передавая индекс.
let categoryInfo = (id) => { for (let i = 0; i < categories.length; i++) { if (categories[i].id == id) { return categories[i].name} } }
Когда я передаю функции «categoryInfo» «id» в качестве аргумента, функция дает мне имя категории. Вы поняли,👌 передав «categoryId» из массива продуктов, я могу легко отобразить название категории с продуктом. 😍
console.log(categoryInfo(categories[1].id))
Напишем такую же функцию для компании.
let companyInfo = (id) => { for (let i = 0; i < companies.length; i++) { if (companies[i].id == id) { return companies[i].companyName} } }
Когда я передаю этой функции «companyInfo» «id» в качестве аргумента, функция дает мне название компании.
Я перебрал массив компаний, сравнил аргумент «id» с идентификатором компании и получил название компании.
console.log(companyInfo(companies[0].id))
Теперь, используя эти две вышеупомянутые функции «categoryInfo & companyInfo» внутри основной функции, мы можем отобразить все данные о продукте с названием категории и названием компании.
Итак, в основном я буду вызывать эти функции внутри основной функции, где я передаю categoryId и «companyId». как аргумент.
let displayProduct = () =>{ for(let i = 0; i < products.length; i++){ console.log(`Product name: ${products[i].name}`) console.log(`Product Price: ${products[i].price}`) console.log(`Product Category: ${categoryInfo(products[i].categoryID)}`) console.log(`Product Bought from: ${companyInfo(products[i].companyID)}`) console.log('') } } displayProduct()
Я создал функцию «displayProduct», которая отображает все данные о товарах. Как видите, когда я хочу получить название категории товаров, я вызываю функцию «categoryInfo» и передаю в качестве аргумента идентификатор категории. Таким образом, когда 'categoryId' совпадает с 'id' в объектах категорий, это даст нам желаемое название категории. Та же процедура применяется для функции «companyInfo».
Проверяем результат:
Браво! мы успешно реализовали логику Display/Show. Я создам для него пользовательский интерфейс в последней части, так что на данный момент мы закончили.
Теперь давайте перейдем к функции «Создать/Добавить».
Как вы знаете, чтобы добавить продукты в массив, мы должны сначала получить данные из какой-либо HTML-формы, а затем применить какое-либо событие при отправке. Итак, сначала создайте HTML-форму.
Добавьте ссылку начальной загрузки CDN в тег заголовка index.html:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
Добавьте приведенный ниже код в файл index.html.
<body> <b><h1 align="center" class="p-4">JavaScript CRUD Application</h1></b> <div class="p-5 m-1 con" style="width:400px; color:black;"> <h3>Add Product</h3> <form> <div class="form-row"> <div class="form-group col-md-12"> <label>Product Id</label> <input type="Number" class="form-control" id="id" placeholder="5"> </div> <div class="form-group col-md-12"> <label>Product Name</label> <input type="text" class="form-control" id="name" placeholder="T-Shirt"> </div> </div> <div class="form-row"> <div class="form-group col-md-12"> <label for="inputAddress">Product Price</label> <input type="text" class="form-control" id="price" placeholder="4000"> </div> <div class="form-group col-md-12"> <label>Product Category</label> <select id="cat" class="form-control"> <option selected>Choose...</option> <option value="1">Apparel</option> <option value="2">Machinery</option> <option value="3">Accessories</option> </select> </div> </div> <div class="form-row"> <div class="form-group col-md-12"> <label>Choose where to buy the product</label> <select id="com" class="form-control"> <option selected>Choose...</option> <option value="1">Amazon</option> <option value="2">eBay</option> <option value="3">Alibaba</option> <option value="4">GlobalSources</option> </select> </div> </div> <button type="button" class="btn btn-primary btn-block" onclick="addProduct()">Submit</button> </form> </div> </body>
Пользовательский интерфейс HTML-формы выглядит следующим образом:
Я обновлю пользовательский интерфейс для отображения, редактирования и удаления позже.
Теперь пришло время написать логику для добавления продукта, функцию javascript, которая берет значения из этой формы и помещает их в массив продуктов.
let addProduct = () =>{ let prod = { id: Number(document.getElementById('id').value), name: document.getElementById('name').value, price: Number(document.getElementById('price').value), categoryID: Number(document.getElementById('cat').value), companyID: Number(document.getElementById('com').value) } products.push(prod); }
На этом этапе, если вы хотите проверить результат в консоли, вы увидите, что после нажатия кнопки отправки данные добавляются в массив продуктов. Я вызвал функцию «addProduct» через событие «onclick» в HTML.
Поздравляю! Ты сделал это. Первая часть завершена.
Скоро увидимся в последней части.