ایجاد یک برنامه TODO با Nolang

در این آموزش ، ما یک برنامه ساده Todo را با استفاده از Nolang ایجاد خواهیم کرد. ما تنظیم پروژه ، تعریف طرحواره ، پیکربندی نقاط پایانی و ایجاد یک قسمت جلویی اساسی برای تعامل با برنامه را پوشش می دهیم.
پیش نیازهای
قبل از شروع ، مطمئن شوید که موارد زیر را روی دستگاه خود نصب کرده اید:
- غوغا
- یک ویرایشگر کد (به عنوان مثال ، در مقابل کد)
مرحله 1: پروژه را تنظیم کنید
یک دایرکتوری جدید برای پروژه خود ایجاد کنید و به آن بروید:
mkdir todo-app
cd todo-app
مرحله 2: پیکربندی برنامه را تعریف کنید
یک پرونده به نام ایجاد کنید app.json5
و طرح را برای موارد TODO ، پیکربندی ذخیره سازی و نقاط پایانی تعریف کنید:
{
name: "ToDo sample app",
schemas: [
{
"$id": "todo",
"type": "object",
"properties": {
"who": {
"type": "string",
"title": "Doer of Task"
},
"what": {
"type": "string",
"title": "What to do"
},
"done": {
"type": "boolean",
"title": "Is done?",
"default": false
}
},
"required": ["who", "what"]
}
],
storage: {
adapter: "json",
path: "data/todos.json"
},
endpoints: [
{
type: 'http',
static: './public',
port: 1000,
routes: [
{
path: "https://dev.to/",
method: 'post'
}
]
}
]
}
مرحله 3: فهرست داده ها را ایجاد کنید
دایرکتوری به نام ایجاد کنید data
و یک پرونده JSON خالی برای ذخیره موارد TODO:
mkdir data
echo "{\"todo\": []}" > data/todos.json
مرحله 4: قسمت جلویی را ایجاد کنید
دایرکتوری به نام ایجاد کنید public
و index.html
در داخل آن پرونده کنید. این پرونده به عنوان قسمت جلویی برای تعامل با برنامه TODO عمل می کند:
ToDo by Nolang
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
"text/javascript">
function send(command) {
return fetch('/', {
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: JSON.stringify(command)
}).then(res => res.json());
}
const todolist = document.getElementById('todolist');
function addToDoToTable(todo) {
const newRow = todolist.insertRow();
newRow.insertCell().innerText = todo.$$objid;
newRow.insertCell().innerText = todo.who;
newRow.insertCell().innerText = todo.what;
newRow.insertCell().innerHTML = `${todo.done ? 'checked' : ''} onclick="doneTodo(this, '${todo.$$objid}')">`;
}
function addTodo() {
send({
$$schema: 'todo',
$$header: {
action: 'C'
},
who: document.getElementById('who').value,
what: document.getElementById('what').value
}).then(res => {
addToDoToTable(res);
});
}
function loadTodos() {
send({
$$schema: 'todo',
$$header: {
action: 'R'
}
}).then(res => {
todolist.innerHTML = '';
res.forEach(todo => {
addToDoToTable(todo);
});
});
}
function doneTodo(t, todoid) {
send({
$$schema: 'todo',
$$header: {
action: 'U',
filter: {
$$objid: todoid
}
},
done: t.checked
});
}
function clearTodos() {
send({
$$schema: 'todo',
$$header: {
action: 'D',
filter: {
done: true
}
}
}).then(() => {
loadTodos();
});
}
loadTodos();
مرحله 5: برنامه را اجرا کنید
برنامه Nolang را با دستور زیر شروع کنید:
nolang app.json5
مرحله ششم: برنامه را در یک مرورگر باز کنید
به سمت http://localhost:1000
در مرورگر وب شما. شما باید بتوانید با استفاده از رابط ارائه شده در TODOS اضافه ، مشاهده ، بروزرسانی و حذف کنید index.html
بشر
توضیح اسکریپت های Nolang و بارهای JSON
پیکربندی برنامه Nolang طرح برنامه ، ذخیره سازی و نقاط پایانی را تعریف می کند.
-
تعریف شمما:
-
$id
: شناسه برای طرحواره. -
type
: نوع داده (شیء در این مورد). -
properties
: زمینه های این طرح. -
required
: زمینه های اجباری.
-
-
پیکربندی ذخیره سازی:
-
adapter
: روش ذخیره سازی (پرونده JSON در این مورد). -
path
: مسیر پرونده ذخیره سازی.
-
-
نقاط پایانی:
-
type
: نوع نقطه پایانی (HTTP در این مورد). -
static
: فهرست پرونده های استاتیک. -
port
: شماره پورت سرور. -
cors
: پیکربندی اشتراک منابع متقاطع. -
routes
: مسیرهای HTTP.
-
بارهای JSON برای عملیات CRUD
- ایجاد (ج): یک مورد جدید TODO اضافه کنید.
{
"$$schema": "todo",
"$$header": {
"action": "C",
"debug": true
},
"who": "John Doe",
"what": "Finish writing report",
"done": false
}
- بخوانید (R): موارد TODO را بازیابی کنید.
{
"$$schema": "todo",
"$$header": {
"action": "R",
"debug": true
}
}
- بروزرسانی (U): یک مورد TODO را به روز کنید.
{
"$$schema": "todo",
"$$header": {
"action": "U",
"debug": true,
"filter": {
"$$objid": "12345"
}
},
"done": true
}
- حذف (D): موارد کامل TODO را حذف کنید.
{
"$$schema": "todo",
"$$header": {
"action": "D",
"filter": {
"done": true
}
}
}
پایان
شما اکنون یک برنامه ساده Todo را با استفاده از Nolang ایجاد کرده اید. این آموزش شامل تنظیم پروژه ، تعریف طرحواره ، پیکربندی نقاط پایانی و ایجاد یک جلوی اساسی است. با افزودن ویژگی های بیشتر یا سفارشی کردن آن متناسب با نیازهای خود ، احساس راحتی کنید.
اگر سوالی دارید یا به کمک بیشتری نیاز دارید ، احساس راحتی کنید! 😊
می توانید پرونده های کد را برای این آموزش در مخزن Nolang Github پیدا کنید.
برنامه نویسی مبارک! 🎉