Hướng dẫn html project with database - dự án html với cơ sở dữ liệu

Trong bài viết này, chúng ta sẽ cùng bắt đầu thực hiện công việc viết code quản lý một

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 đơn giản cho trang blog cá nhân mà chúng ta đang xây dựng. Tuy nhiên, mình muốn lưu ý một chút về
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
8 trong việc viết code xử lý
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 trước khi bắt tay vào viết code.

Code quản lý

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 sẽ được viết chủ đạo trên nền
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
1, với các thủ tục
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 thao tác
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
3 trên các tệp dữ liệu. Các kết quả thu được khi thực hiện các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 sẽ được trả về ở dạng hiệu ứng biên
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
5 - tức là thay đổi nội dung của một
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
6 được truyền vào thay vì sử dụng lệnh
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
7.

Các tham số của

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 sẽ được chia làm 2 nhóm là:

  • const Article = class extends Map {
       nonStaticMethod() {
          /* do something */ ;
          return this;
       }
    
       static clone() {
          /* do something */ ;
          return Article;
       }
    }; // Article
    
    9 - các tham số truyền dữ liệu vào và sẽ không bị thay đổi.
  • [express-blog]
    .  |
    .  +-----[database]
    .  |        |
    .  |        +-----[data]
    .  |        |        |
    .  |        |        +-----[Article]
    .  |        |        +-----[Category]
    .  |        |
    .  |        +-----[procedure]
    .  |        |        |
    .  |        |        +-----[Article]
    .  |        |        +-----[Category]
    .  |        |
    .  |        +-----[type]
    .  |        |        |
    .  |        |        +-----Article.js
    .  |        |        +-----Category.js
    .  |        |
    .  |        +-----manager.js
    .  |
    .  +-----test.js
    
    0 - các tham số nhận kết quả khi
    const Article = class extends Map {
       nonStaticMethod() {
          /* do something */ ;
          return this;
       }
    
       static clone() {
          /* do something */ ;
          return Article;
       }
    }; // Article
    
    2 được thực thi.
const selectCategoryById = async (
   in_recordId = "Infinity",
   out_selected = new Map()
) => {
   // truy vấn dữ liệu từ các tệp...
   // gắn dữ liệu vào object kết quả
   out_selected.set("@id", in_recordId);
   out_selected.set("name", "html");
};

var selected = new Map();
await selectCategoryById("01", selected);
console.log(selected);

// Category(2) [Map] {
//    '@id' => '01',
//    'name' => 'html'
// }

Do hầu hết các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 ở đây đều làm việc với các tệp và chúng ta đã thảo luận từ trước là sẽ dùng các thao tác
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
3, vì vậy nên khi nào nhìn thấy từ khóa
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
3 thì chúng ta sẽ ngầm định là Procedure. Trong trường hợp không phải là thao tác
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
3 thì mình sẽ ghi
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
6 thay vào vị trí của từ khóa đó.

Các hàm (nếu cần sử dụng) - cũng sẽ được viết với cú pháp

[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
7 và sử dụng
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
8 thay vào vị trí
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
3 ở trên. Tuy nhiên, khi sử dụng khái niệm hàm, chúng ta sẽ không có các tham số
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
9 và
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
0, mà tất cả đều sẽ được ngầm định là
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
9 và được áp dụng từng phần khi gọi hàm; Đồng thời, các hàm sẽ luôn luôn sử dụng lệnh
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
7 để trả về kết quả và không tạo ra
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
5 nào đối với các yếu tố bên ngoài hàm. Đồng thời khi định nghĩa hàm mình cũng sẽ bỏ đi tất cả các dấu
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
5.

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9

Các

[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 tự định nghĩa cũng sẽ được khai báo ở dạng gán vào một hằng
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
7 giống với các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 và
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
9. Đồng thời, tất cả các phương thức định nghĩa trong
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 sẽ đều mặc định
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
1 khi kết thúc - hoặc
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
2 nếu là phương thức
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
3.

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article

Cấu trúc thư mục database

Chúng ta sẽ khởi đầu với các nhóm dữ liệu bài viết

{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
4 và danh mục
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
5; Và thư mục
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 của chúng ta sẽ có cấu trúc cơ bản như thế này -

[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js

Các tệp dữ liệu như chúng ta vẫn quy ước trước đó là đặt trong thư mục

{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
7, với các bản ghi được xếp thành các nhóm
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
8 và
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
9. Khi các bản ghi được truy xuất vào môi trường vận hành code sẽ cần được chuyển thành các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
6; Và do đó nên chúng ta có thêm các
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 mô tả tương ứng được đặt trong thư mục
var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}
2.

Cuối cùng là các tệp code định nghĩa các thủ tục thao tác trong

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 được đặt trong thư mục
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 và sẽ được tổng kết tại
var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}
5. Code ở bên ngoài sẽ chỉ sử dụng các phương thức do
var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}
6 cung cấp và các
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 trong thư mục
var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}
2 chứ không chạm vào bất kỳ thành phần nào khác trong thư mục
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7.

Các bản ghi và cấu trúc các tệp dữ liệu

Đối với mỗi bản ghi thuộc bất kỳ kiểu dữ liệu nào -

{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
8,
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
9,
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
2, v.v... - sẽ có một thư mục đại diện với tên thư mục ở dạng
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
3 và bên trong thư mục này sẽ gồm một tệp
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
4 và một tệp
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
5. Trong đó thì tệp
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
4 sẽ chứa các thông tin dạng ngắn
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
7, còn tệp
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
5 sẽ chứa nội dung văn bản
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
7 của trang đơn mô tả cho bản ghi đó trên bề mặt web (nếu có).

[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md

Các bản ghi

{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
8 sẽ có tệp
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
4 với nội dung dạng này -

{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}

Ở đây

const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
2 là giá trị
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
3 được lưu trong tên thư mục của bản ghi này. Nội dung của tệp
{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
5 thì chỉ đơn giản là văn bản dài có chứa mã
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
5 của Github nên chúng ta không có gì để lưu ý. Khi bản ghi
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
4 này được truy vấn
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
7 và đưa vào môi trường vận hành code thì chúng ta sẽ có một
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
6 như sau:

var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}

Còn đây là nội dung tệp

{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}
4 của một danh mục
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
9:

{
   "@id": "02",
   "name": "css",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web"
   ]
}

Bạn có thể chuẩn bị trước nội dung ngắn gọn cho một vài bản ghi hoặc

const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
1 từ các liên kết dưới đây:

  • const Category = class extends Map {
       constructor(...params) {
          super(...params);
          
          for (var key of Category.fieldNames) {
             if (this.has(key))
                { /* do nothing */; }
             else
                this.set(key, null);
          } // for .. of
          
          return this;
       }
    
       static fieldNames = [
          "@id",
          "name",
          "keywords",
          "content"
       ];
    }; // Category
    
    module.exports = Category;
    
    2
    • id-0000/header.json
    • id-0000/content.md
    • id-0001/header.json
    • id-0001/content.md
    • id-Infinity/header.json
    • id-Infinity/content.md
  • const Category = class extends Map {
       constructor(...params) {
          super(...params);
          
          for (var key of Category.fieldNames) {
             if (this.has(key))
                { /* do nothing */; }
             else
                this.set(key, null);
          } // for .. of
          
          return this;
       }
    
       static fieldNames = [
          "@id",
          "name",
          "keywords",
          "content"
       ];
    }; // Category
    
    module.exports = Category;
    
    3
    • id-00/header.json
    • id-00/content.md
    • id-01/header.json
    • id-01/content.md
    • id-Infinity/header.json
    • id-Infinity/content.md

Ở đây mình cũng xin lưu ý một chút về

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
8 sử dụng các bản ghi đặc biệt là
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
5,
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
6,
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
7, Đối với bản thân mình thì số
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
8 và giá trị
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
9 rất đặc biệt và mình thường ưu tiên sử dụng các
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
3 này để làm các bản ghi mặc định cho một số nội dung đặc biệt. Cụ thể là
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
01 được mình sử dụng làm bài viết giới thiệu về blog và đặt trong trang
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
02 hoặc Trang Chủ
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
03; Còn
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
04 được mình sử dụng làm bài viết dự phòng và thông báo ngoại lệ trong trường hợp không tìm thấy nội dung phù hợp với yêu cầu nhận được.

Vì lý do này nên trong một số thao tác làm việc với

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 - ví dụ như tạo ra một giá trị
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
3 cho một bản ghi mới, trong code ví dụ minh họa ở đây bạn sẽ thấy mình có viết thêm một thao tác để chọn trị số
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
3 của bản ghi đứng trước bản ghi
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
9 và thực hiện tăng giá trị. Còn nếu bạn không sử dụng Convention như mình và không có bản ghi
const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;
9 thì chỉ việc chọn
const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;
3 của bản ghi mới nhất và tăng giá trị lên thôi.
Hướng dẫn html project with database - dự án html với cơ sở dữ liệu

Các Class mô trả dữ liệu

Các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 về cơ bản là code thực hiện tương tác giữa môi trường vận hành và các tệp tĩnh; Do đó nên trước hết chúng ta sẽ cần chuẩn bị trước các
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 mô tả các bản ghi trong môi trường phần mềm. Đối với mỗi nhóm các bản ghi thì chúng ta nên có tên
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 riêng và vì vậy nên chúng ta sẽ có hai
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 là -
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
8 và
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
9.

Về cơ bản thì các

[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 này đều không có gì đặc biệt và chỉ đơn giản là được sử dụng tạo ra các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
6 chung chuyển dữ liệu. Đối với nhu cầu sử dụng như thế này thì chúng ta có
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
19 đã được thiết kế sẵn với nhiều tính năng tiện ích phù hợp. Và đầu tiên là code cho
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
20 -

const Article = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Article.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "title",
      "short-title",
      "keywords",
      "edited-datetime",
      "category-id",
      "content"
   ];
}; // Article

module.exports = Article;

Giống với việc sử dụng các

[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 tự định nghĩa thông thường, sau khi kế thừa
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
22 chúng ta cần khởi tạo các
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
23 - hay các
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
24 - tương ứng với các bản ghi bằng cách tạo một phương thức có tên là
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
25. Phương thức này sẽ kiểm tra sự tồn tại của các khóa
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
26 và khởi tạo những thuộc tính còn thiếu khi code bên ngoài sử dụng
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
27. Và tương tự thì chúng ta có định nghĩa
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
28.

const Category = class extends Map {
   constructor(...params) {
      super(...params);
      
      for (var key of Category.fieldNames) {
         if (this.has(key))
            { /* do nothing */; }
         else
            this.set(key, null);
      } // for .. of
      
      return this;
   }

   static fieldNames = [
      "@id",
      "name",
      "keywords",
      "content"
   ];
}; // Category

module.exports = Category;

Rồi... như vậy là đã tạm đủ chất liệu cho các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 làm việc. Bây giờ chúng ta sẽ tiến hành viết code cho các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2; Khi nào cần bổ sung hoặc chỉnh sửa gì đó ở các
[data]
.  |
.  +-----[Article]
.  |        |
.  |        +-----[id-0000]
.  |                 |
.  |                 +-----header.json
.  |                 +-----content.md
.  |
.  +-----[Category]
.           |
.           +-----[id-00]
.                    |
.                    +-----header.json
.                    +-----content.md
6 này thì chúng ta sẽ quay lại xử lý thêm sau. Trong bài viết này thì chúng ta sẽ tập trung cho các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 làm việc trên các bản ghi
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
9 trước. Lý do thì là vì các bản ghi
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
4 có sự lệ thuộc vào các bản ghi
{
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01"
}
9 như chúng ta đã nói trong bài trước.

Các thủ tục cơ bản

Mặc dù mục đích sử dụng phần mềm

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
36 ở lớp bên ngoài rất đa dạng. Nhưng khi tương tác với
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 thì về cơ bản chúng ta sẽ chỉ có 4 kiểu thao tác -

  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    38 - thêm một ghi mới vào
    const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    7.
  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    40 - lấy ra một bản ghi để xem thông tin.
  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    41 - cập nhật dữ liệu của một ghi đã có.
  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    42 - xóa một bản ghi trong
    const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    7.

Và chúng ta sẽ khởi đầu với các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 tương ứng thực hiện thao tác trên một bản ghi đơn. Các thao tác phức tạp hơn (nếu cần thiết) - sẽ có thể sử dụng các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 này làm chất liệu.

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
0

Mình thường có thói quen ghi chú trong tên tệp một vài yếu tố mà mình quan tâm ở phía cuối; Vì vậy nên tên các tệp trong ví dụ mình ghi có hơi dài một chút. Bạn có thể đặt tên tệp theo cách hiểu của bạn là được, điểm này không quan trọng lắm nên bạn đừng bận tâm nhé.

Hướng dẫn html project with database - dự án html với cơ sở dữ liệu

Về cơ bản thì các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 đều phải thực hiện các thao tác nhập/xuất liên quan tới các tệp nên thường sẽ là các thao tác
[express-blog]
.  |
.  +-----[database]
.  |        |
.  |        +-----[data]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[procedure]
.  |        |        |
.  |        |        +-----[Article]
.  |        |        +-----[Category]
.  |        |
.  |        +-----[type]
.  |        |        |
.  |        |        +-----Article.js
.  |        |        +-----Category.js
.  |        |
.  |        +-----manager.js
.  |
.  +-----test.js
3, và nếu có ngoại lệ phát sinh khi tương tác với các tệp dữ liệu thì chúng ta sẽ
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
48ra ngoài cho code xử lý
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
49. Bởi vì code quản lý
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 về cơ bản là một phần mềm plug-in thụ động - được sử dụng bởi code logic điều hành của
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
49 ở phía bên ngoài; Do đó nên việc xử lý các ngoại lệ thế nào để phản hồi cho trình duyệt web thì hiển nhiên là không thể xử lý ở tầng này được.

Do các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 của chúng ta đều phải thực hiện các thao tác có nhiều bước và chắc chắn sẽ cần chia thành các tác vụ nhỏ. Ở đây chúng ta sẽ tạo sẵn một thư mục
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
53 để lưu trữ code xử lý các tác vụ chia nhỏ và có thể được sử dụng chung cho các
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 chính.

Bây giờ thì chúng ta sẽ khai báo đơn giản và tổng kết các

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 này tại
var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}
5 để code bên ngoài có thể sử dụng được:

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
1
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
2
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
3
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
4
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
5

Ở đây chúng ta tạo ra một

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
57 đại diện cho phần mềm quản lý
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
7 với một phương thức duy nhất là
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
59 (thực thi) để tìm và gọi một Procedure trong các nhóm Procedure chính
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
60 và
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
61.

Cú pháp cơ bản của

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
59 sẽ yêu cầu các thành phần lần lượt là
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
63:

  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    64 - tên của kiểu bản ghi cần thực hiện thủ tục truy vấn hoặc chỉnh sửa.
  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    65 - tên của thủ tục cần áp dụng.
  • const sumOf = /* function */
       (a = 0) =>
       (b = 0) =>
          {  var sum = a + b
             return sum
          }
    
    var nine = sumOf(1)(8)
    console.log(nine)   // 9
    
    66 - mảng chứa các tham số sử dụng cho thủ tục được chọn.

Ở phía trên thì mình chỉ liệt kê code mockup của các thao tác cơ bản thuộc nhóm

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
61. Để code có thể hoạt động được thì bạn copy/paste và đổi lại tên thư mục và một số yếu tố trong code để khởi tạo nhóm
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
60 nhé.

Sau đó chúng ta có thể viết một vài dòng trong

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
69 và chạy lệnh
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
70 để xem
var firstHTMLArticle = {
   "@id": "0001",
   "title": "Làm Thế Nào Để Tạo Ra Một Trang Web?",
   "short-title": "Giới Thiệu Mở Đầu",
   "keywords": [
      "hướng dẫn cơ bản",
      "lập trình web",
      "html",
      "giới thiệu"
   ],
   "edited-datetime": "Sat, 16 Apr 2022 10:13:22 GMT",
   "category-id": "01",
   "content": "Đây là nội dung của bài viết đầu tiên..."
}
6 đã được kết nối với các tệp
const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2 ổn chưa:

const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
6

Hướng dẫn html project with database - dự án html với cơ sở dữ liệu

Và bây giờ thì chúng ta sẽ bắt đầu viết code xử lý chi tiết cho từng

const Article = class extends Map {
   nonStaticMethod() {
      /* do something */ ;
      return this;
   }

   static clone() {
      /* do something */ ;
      return Article;
   }
}; // Article
2. Tuy nhiên thì bài viết của chúng ta tới đây thực sự là đã hơi dài quá rồi, vì vậy nên... Trong bài viết tiếp theo, chúng ta sẽ cùng viết code xử lý chi tiết cho thao tác
const sumOf = /* function */
   (a = 0) =>
   (b = 0) =>
      {  var sum = a + b
         return sum
      }

var nine = sumOf(1)(8)
console.log(nine)   // 9
38.

[Database] Bài 5 - Viết Code Quản Lý Database (Tiếp Theo)