Jaggery — это фреймворк для написания веб-приложений и HTTP-ориентированных веб-сервисов для всех аспектов приложения: интерфейс, коммуникация, логика на стороне сервера и постоянство в чистом Javascript.
Это очень простое приложение, написанное на Jaggery. Это в основном адресная книга, которая поддерживает добавление новой записи в книгу и удаление записей из книги. Это приложение преднамеренно ограничено этими функциями, чтобы сделать код простым, чтобы его было проще для новичков.
Предпосылки
Jaggery должен быть загружен и сервер должен быть запущен. http://jaggeryjs.org/howto.jag
Шаг 1
Создайте каталог «адресная книга» внутри каталога «apps». ({JAGGERY_HOME} / приложений /)
Таким образом, ваш новый каталог должен выглядеть следующим образом: {JAGGERY_HOME} / apps / addressbook
Шаг 2
Создайте файл с именем «index.jag» внутри каталога «адресная книга»
Добавьте следующий фрагмент кода в файл «index.jag».
ПРИМЕЧАНИЕ. Он не является частью приложения «Адресная книга». Но это поможет вам увидеть, что ваше приложение работает.
<%
print(“Address Book”);
%>
Подождите, пока сервер автоматически развернет ваше новое приложение.
Перейдите по ссылке ниже через ваш веб-браузер. На странице должна отображаться «Адресная книга».
Ссылка http: // localhost: 9763 / addressbook / index.jag
Шаг 3
Создайте файл с именем «jaggery.conf» внутри каталога «адресная книга».
Это один из самых важных файлов в приложении Jaggery. Он содержит конфигурации уровня приложения. Для получения дополнительной информации, пожалуйста, обратитесь http://jaggeryjs.org/apidocs/jagconf.jag
Добавьте следующие основные конфигурации в файл jaggery.conf.
{
"displayName":"Address Book",
"welcomeFiles":["index.jag"],
"urlMappings":[
{
"url":"/records/*",
"path":"/controller/records.jag"
}
]
}
Это необходимо, чтобы увидеть правильное отображаемое имя в консоли управления. Чтобы увидеть, пожалуйста, перейдите по ссылке ниже.
https://192.168.184.1:9443/admin/carbon/
Шаг 4
Добавьте следующий код в файл index.jag.
<html>
<head>
<title>
AddressBook
</title>
<link href="css/styles.css" rel="stylesheet"></link>
</head>
<body onload="AddressBook.viewAllRecords()">
<div class="main_container">
<div class="row">
<div class="header">
<span class="title">Address Book</span>
</div>
</div>
<div class="row">
<div class="inputForm">
<form action="" id="addNewRecordForm" name="addNewRecordForm">
<table>
<tr>
<td>Name</td>
<td>: <input id="name" type="text" /></td>
</tr>
<tr>
<td>Address</td>
<td>: <input id="address" type="text" /></td>
</tr>
<tr>
<td>Telephone</td>
<td>: <input id="telephone" type="text" /></td>
</tr>
<tr>
<td></td>
<td class="add_record_button"><a class="#" onclick="AddressBook.addNewRecord();">Add Record</a></td>
</tr>
</table>
</form>
</div>
</div>
<div class="row">
<div id="records">
</div>
</div>
<div class="footer">
JD©
</div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/mustache.js"></script>
<script src="js/addressbook.js"></script>
</body>
</html>
Шаг 5
Создайте каталог с именем «js» и файл с именем «addressbook.js» внутри него. И скопируйте последние версии «jquery.min.js» и «mustache.js».
Добавьте следующий код в addressbook.js.
AddressBook = new function() {
this.addNewRecord = function () {
console.log("Function called addNewRecord");
var name = $("#name").val();
var address = $("#address").val();
var telephone = $("#telephone").val();
if(name == null || name == ""){
alert("Name is null");
return false;
} else if(address == null || address == ""){
alert("Address is null");
return false;
} else if (telephone == null || telephone == ""){
alert("Telephone is null");
return false;
}
if(!AddressBook.validateTelephone(telephone)){
return false;
}
AddressBook.resetInptForm();
//console.log("Name:" + name);
//console.log("Address:" + address);
//console.log("Telepone:" + telephone);
var data = {"name":name, "address":address, "telephone":telephone};
AddressBook.makeRequest("POST", "/addressbook/records/", data, function(hmtl){AddressBook.viewAllRecords();});
}
this.resetInptForm = function(){
$("#name").val('');
$("#address").val('');
$("#telephone").val('');
}
this.validateTelephone = function(telephone){
var stripped = telephone.replace(/[\(\)\.\-\ ]/g, '');
if(isNaN(parseInt(stripped))){
alert("Invalid telephone number");
return false;
}else{
return true;
}
}
this.makeRequest = function (type, url, data, callback){
console.log("Function called makeRequest");
$.ajax({
type: type,
url: url,
data: data,
dataType: "json",
success: callback
});
}
this.viewAllRecords = function () {
console.log("Function called viewAllRecords");
// Requsting all the records
AddressBook.makeRequest("GET", "/addressbook/records/", null, function(html){AddressBook.loadRecords(html);});
}
this.loadRecords = function(data) {
console.log("Function called loadRecords");
// Updating the display with new records
$.get('template/record.html', function(templete) {var html = Mustache.to_html(templete, data); $("#records").html(html);});
}
this.deleteRecord = function(id){
var answer = confirm("Are you really want to delete?");
if(answer){
var data = {"id":id};
AddressBook.makeRequest("POST", "/addressbook/records/", data, function(hmtl){AddressBook.viewAllRecords();});
}
}
}
Шаг 6
Создайте каталог с именем «controller» и файл с именем «records.jag» внутри него.
<%
include("../model/recordQuery.jag");
var verb = request.getMethod();
var name = request.getParameter('name');
var address = request.getParameter('address');
var telephone = request.getParameter('telephone');
var id = request.getParameter('id');
if(verb == "POST" && name != null && address != null && telephone != null) {
var log = new Log();
log.debug("Adding new record. [Name=" + name + ", Address=" + address + ", Telephone=" + telephone + "]");
addRecord(name, address, telephone);
} else if(verb == "POST" && id != null ) {
var log = new Log();
log.debug("Deleting record. [Id=" + id + "]");
deleteRecord(id);
} else if(verb == "GET") {
listAllRecords();
}
%>
Шаг 7
Создайте каталог с именем «model» и файл с именем «recordQuery.jag» внутри него.
<%
function addRecord(name, address, telephone){
var records = session.get("records");
if (records == null){
records = new Array();
session.put("records", records);
session.put("id", 0);
}
var id = session.get("id") + 1;
session.put("id", id);
var record = {"id":id, "name":name, "address":address, "telephone":telephone};
records.push(record);
//var log = new Log();
//log.info(session.get("records"));
}
function listAllRecords(){
var records = session.get("records");
//var log = new Log();
//log.info(records);
if (records != null){
records.sort(sortRecords);
print({"records" : records});
}else {
print("No records");
}
}
function sortRecords(first, second){
if (first.name < second.name){
return -1;
}
else if(first.name > second.name){
return 1;
}
else {
return 0
}
}
function deleteRecord(id){
var records = session.get("records");
for (var index = 0; index < records.length; index++){
var record = records[index];
if(record.id == id){
var temp_record = records[records.length - 1];
records[records.length - 1] = records[index];
records[index] = temp_record;
records.pop();
break;
}
}
}
%>
Шаг 8
Создайте каталог с именем «template» и файл с именем «record.html» внутри него.
<div>
<table class="record_table">
<tr class="table_header">
<td>
Name
</td>
<td>
Address
</td>
<td>
Telephone
</td>
<td>
</td>
</tr>
{{#records}}
<tr class="table_row">
<td class="column_name">
{{name}}
</td>
<td class="column_address">
{{address}}
</td>
<td class="column_telephone">
{{telephone}}
</td>
<td class="column_delete">
<a href="#" class="delete" onclick="AddressBook.deleteRecord({{id}})">Delete</a>
</td>
</tr>
{{/records}}
</table>
</div>
Адресная книга теперь готова с добавлением записей и удалением записей.
Попробуйте сами добавить функциональность обновления к этому.