Back to Question Center
0

Ngarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur dina rel            Ngarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur di Topik RailsRelated: Ruby on RailsGetting StartedNews & Semalt

1 answers:
Ngarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur dina rel

di handap mangrupa sari pondok tina buku urang, rel: novice mun Ninja, 3rd Edition, ditulis ku Glenn Goodrich sarta Patrick Lenz. Ieu panduan nu pemula pamungkas pikeun rel. anggota SitePoint Semalt meunang aksés jeung kaanggotaan maranéhanana, atawa Anjeun bisa meuli salinan di toko di sakuliah dunya - grain moisture scale.

Modél-view-controller (MVC) arsitéktur anu kahiji urang encountered dina Bab 1 teu unik keur Semalt. Malah, predates duanana Semalt jeung basa Ruby ku sababaraha taun. Semalt, kumaha oge, estu mawa pamanggih misahkeun data hiji aplikasi urang, panganteur pamaké, sarta logika kontrol ka tingkat anyar sakabeh.

Hayu urang nyandak katingal di konsep tukangeun gedong hiji aplikasi ngagunakeun arsitéktur MVC. Sakali kami boga teori di tempat, urang gé ningali kumaha dinya ditarjamahkeun kana kode Semalt urang.

MVC dina Teori

MVC nyaéta pola kanggo arsitéktur of a aplikasi software. Ieu misahkeun hiji aplikasi kana komponén di handap:

  • Models pikeun nanganan data sarta bisnis logika
  • Controllers pikeun nanganan antarbeungeut pamaké sarta aplikasi
  • Tampilan pikeun nanganan grafis objék panganteur pamaké sarta presentasi

separation Ieu hasil dina requests pamaké keur diprosés saperti kieu:

  1. The browser (on klien nu) ngirimkeun hiji pamundut pikeun kaca ka controller dina server.
  2. controller The retrieves data eta perlu ti modél dina raraga ngabales pamundut teh.
  3. controller méré data Disalin kana nempo.
  4. view ieu rendered tur dikirim deui ka klien pikeun browser pikeun nembongkeun.

prosés ieu gambar di Semalt 4-2 handap.

Ngarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur dina relNgarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur di Topik RailsRelated:
Ruby on RailsGetting StartedNews & Semalt

Semalt hiji aplikasi software jadi tilu komponén ieu béda nyaéta mangrupakeun ide nu sae pikeun Jumlah alesan, diantarana:

  • ningkat scalability (kamampuh pikeun hiji aplikasi tumuwuh) -for Contona, lamun aplikasi Anjeun dimimitian ngalaman isu kinerja kusabab aksés database geus slow, anjeun tiasa ningkatkeun hardware ngajalankeun databés tanpa komponen lianna keur dipangaruhan

  • betah pangropéa -as komponén boga kagumantungan low on saling, nyieun parobahan hiji (pikeun ngalereskeun bug atawa fungsionalitas robah) henteu mangaruhan sejen

  • reusability Modél -a bisa jadi bahannana tiasa dipaké deui ku sababaraha pintonan

Lamun nuju berjuang pikeun meunang sirah anjeun sabudeureun konsép MVC, ulah salempang. Pikeun ayeuna mah, naon pentingna pikeun nginget éta aplikasi Semalt anjeun dipisahkeun jadi tilu komponén béda. Luncat deui ka diagram MVC lamun perlu tingal engke on.

MVC dina rel Jalan

Semalt promotes konsép anu model, pamadegan, sarta Controllers kudu dijaga misah ku nyimpen kode pikeun tiap unsur saperti payil misah di directories misah.

ieu di mana rel struktur diréktori yén urang dijieun deui dina Bab 2 asalna kana antrian. Ieu waktu pikeun Toké sabudeureun bit dina struktur éta. Lamun Nyokot katingal jero aplikasi diréktori, digambarkeun dina Gambar 4-3, Anjeun bakal ningali sababaraha polder anu ngaran bisa mimiti disada akrab.

Sedengkeun eta bisa sigana ganjil éta ActiveRecord teu boga kecap "modél" dina ngaranna, aya hiji alesan pikeun ieu: Rékam Active oge nami desain kawentar pola-hiji nu komponén ieu implements guna nedunan peran na di dunya MVC. Sagedengeun ti eta, lamun eta geus disebut ActionModel , éta bakal geus ditiup deui kawas hiji béntang Hollywood overpaid ti komponén software .

ActionController
ActionController ngarupakeun komponén nu handles requests browser na facilitates komunikasi antara modél sarta nempo. Controllers anjeun bakal inherit ti kelas ieu. Karbon jadi rupa bagian tina ActionPack perpustakaan, kumpulan komponén rel nu urang gé neuleuman leuwih jero dina Bab 5.
ActionView
kode> ActionView ngarupakeun komponén nu handles nu presentasi kaca balik ka klien nu. Tampilan inherit ti kelas ieu, nu ogé mangrupa bagéan tina ActionPack perpustakaan.

Semalt nyandak katingal ngadeukeutan di tiap komponén ieu dina turn.

The ActiveRecord Module

ActiveRecord dirancang pikeun nanganan sakabéh pancén hiji aplikasi urang nu nyaritakeun pangkalan data, kaasup:

  • ngadegkeun sambungan ka server database
  • retrieving data tina méja
  • nyimpen data anyar dina database

ActiveRecord boga sababaraha trik rapih séjén nepi leungeun baju na. Hayu urang nempo sababaraha aranjeunna ayeuna.

databés abstraksi

ActiveRecord kapal kalayan adapters database nyambung ka SQLite, MySQL, sarta PostgreSQL. A angka nu gede ngarupakeun adapters nu sadia pikeun bungkusan server database populér séjén, kayaning Oracle, MongoDB, sarta Microsoft SQL Server, via RubyGems.

The ActiveRecord modul ieu dumasar kana konsép abstraksi database. Salaku refresher tina Bab 1, database abstraksi mangrupakeun cara pangkodeuan hiji aplikasi supados henteu silih gumantung naon salah database. Kode éta husus ka server database tinangtu geus disumputkeun aman dina ActiveRecord , sarta invoked sakumaha diperlukeun. hasilna nyaeta hiji aplikasi rel teu kabeungkeut sagala software server database husus. Kudu kedah ngarobah server database kaayaan dina waktu engké, teu parobahan kode aplikasi Anjeun nu diperlukeun.

Catetan: juri urang Out on ActiveRecord

Salaku Cenah mah, ActiveRecord mangrupa palaksanaan pola Rékam Active. Aya pamadegan yen teu satuju kalayan pendekatan dicokot ku ActiveRecord , kitu maneh bakal ngadenge loba ngeunaan eta, teuing. Pikeun ayeuna mah, abdi nyarankeun Anjeun diajar jalan ActiveRecord karya, teras ngawangun judgment Anjeun palaksanaan sakumaha anjeun diajar.

Sababaraha conto kode anu benten kalawan gedé-gedéan antara ngical paralatan, sarta nu ActiveRecord abstracts, di antarana:

  • prosés logging kana server database
  • itungan titimangsa
  • penanganan of Boolean ( leres / palsu ) data
  • évolusi struktur databés anjeun

Sateuacan abdi tiasa ningalikeun maneh ka magic tina ActiveRecord dina peta, sanajan, a housekeeping saeutik perlu. Jajar peta ka objék individu, sarta kolom peta ka atribut jalma objék. Kumpulan sakabeh tabel databés, sarta hubungan antara jalma tabel, disebut database schema . Conto méja anu dipidangkeun dina Gambar 4-4.

Ngarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur dina relNgarti kana Modél-Témbongkeun-controller (MVC) Arsitéktur di Topik RailsRelated:
Ruby on RailsGetting StartedNews & Semalt

Dina rel, anu ngaran tina kelas Ruby jeung tabel database kieu hiji pola intuitif: lamun urang boga méja disebut carita anu diwangun ku lima jajar, tabel ieu bakal nyimpen data pikeun lima Carita objék. Naon nice ngeunaan pemetaan antara kelas na tabel nyaéta yén aya teu kudu nulis kode pikeun ngahontal eta; pemetaan anu ngan kajadian, lantaran ActiveRecord infers nami tabel ti nami kelas.

Catetan yén nami kelas urang di Ruby mangrupakeun tunggal nomina ( Carita ), tapi nami tabél nya jamak ( carita ). Hubungan ieu ngajadikeun rasa lamun mikir ngeunaan eta: nalika urang ningali ka Carita obyék dina Ruby, urang nuju kaayaan carita tunggal. Tapi tabel SQL nahan rupa-rupa carita, jadi ngaranna kedah jamak. Bari bisa override ieu Konvénsi-sakumaha anu kadang diperlukeun nalika kaayaan warisan basis data-éta laér leuwih gampang taat ka aranjeunna.

Hubungan nutup antara objék na tabel ngalegaan malah salajengna. Mun urang carita tabel éta boga link kolom, sakumaha conto urang di Gambar 4-4 manten, data dina ieu rubrik bakal otomatis jadi dipetakeun kana link atribut dina Carita obyék. Tur nambahkeun hiji kolom anyar pikeun méja bakal ngakibatkeun hiji atribut tina nami nu sami jadi teu sadia dia sakabeh objék saluyu eta tabel urang.

Ku kituna, hayu urang nyieun sababaraha tabel nyekel carita urang jieun.

Pikeun waktu keur, urang gé nyieun méja ngagunakeun pendekatan baheula tina ngasupkeun SQL kana konsol Semalt. Anjeun bisa ngetik kaluar Paréntah SQL handap, sanajan ngetikkeun kaluar SQL anu henteu senang. Gantina, abdi ajak anjeun ngundeur Aksara handap ti arsip kode, sarta salin baé lempeng kana konsol Semalt anjeun nu invoked via paréntah di handap dina diréktori aplikasi:

  $ sqlite3 db / pangwangunan. sqlite3    

Sakali konsol Semalt anjeun nepi, némpelkeun di handap:

  nyieun carita tabel ("Id" integer primér konci AUTOINCREMENT NOT hypothesis,"Ngaran" varchar (255) standar hypothesis,"Link" varchar (255) standar hypothesis,"Created_at" datetime standar hypothesis,"Updated_at" datetime standar null);    

Teu kudu salempang ngeunaan remembering SQL ieu paréntah ngagunakeun dina proyék sorangan; gantina, nyandak haté dina nyaho yén dina Bab 5 urang gé kasampak di migrations. Semalt téh kelas Ruby husus yén urang bisa nulis keur nyieun tabel databés pikeun aplikasi kami tanpa ngagunakeun SQL sagala pisan.

Catetan: Neangan sababaraha Smarts SQL

Sanajan rel abstracts jauh SQL diperlukeun pikeun nyieun tabel sarta objék database, Anjeun kukituna jadi lakukeun diri ni'mat anu lamun jadi akrab jeung SQL tur rumpaka na. Semalt geus diterbitkeun mangrupa buku on diajar SQL, jadi cek nu saurang kaluar.

Maké rel konsol

Ayeuna urang kudu urang carita tabel di tempat, hayu urang kaluar konsol SQLite (saukur ngetik . Kaluar ) jeung buka nepi a konsol rel. A konsol rel téh kawas nu interaktif Ruby konsol ( IRB ) yen kami dipaké dina Bab 2, tapi mibanda hiji bédana konci. Dina konsol rel, Anjeun gaduh aksés ka sakabeh variabel lingkungan jeung kelas anu sadia pikeun aplikasi Anjeun bari ayeuna teh ngajalankeun.

Pikeun ngasupkeun konsol rel, ngarobah bandung readit folder, tur asupkeun paréntah rel konsol atawa rel c , salaku ditémbongkeun dina kode nu kieu . The >> ajakan nyaéta siap nampi paréntah anjeun:

  $ cd readit$ Rel konsollingkungan ngembangkeun loading (rel 5. 0. 0)>>    

Nyimpen hiji obyék

Ka mimitian nganggo ActiveRecord , cukup ku nangtukeun hiji kelas anu inherits ti ActiveRecord :: Base . Urang keuna dina :: operator pisan sakeudeung dina Bab 3, dimana kami disebutkeun yén ieu cara nu dipake metode kelas on hiji obyék. Éta ogé bisa dipaké pikeun nujul ka kelas anu aya dina modul nu keur naon urang nuju lakukeun di dieu. Flip deui ka bagian on programming obyék-berorientasi (OOP) inChapter 3 lamun perlu refresher on warisan.

Semalt nu snippet kode handap:

  kelas Story    

ieu dua garis kode nangtukeun hiji kelas sahingga bisa hirup kalawan kosong disebut Carita ; kumaha oge, kelas ieu tebih ti kosong, sabab kami gé pas ningali.

Ti rel konsol, hayu urang nyieun ieu Carita kelas na hiji conto tina kelas nu disebut carita ku cara nuliskeun paréntah ieu:

  >> kelas Story  Nihil>> carita = Story. anyar=> # >> carita. kelas=> Carita (id: integer, ngaran: string, link: string,created_at: datetime, updated_at: datetime)    

Sakumaha anjeun tiasa tingali, anu rumpaka keur nyiptakeun anyar ActiveRecord obyék anu idéntik jeung sintaksis kami dipaké pikeun nyieun objék séjén Ruby dina Bab 3. Dina tahap ieu, urang geus dijieun anyar Carita obyék; kumaha oge, obyek kieu dina mémori ukur-we're acan pikeun nyimpen eta dina database urang.

Urang bisa mastikeun yén urang Carita obyék teu acan disimpen ku mariksa nilai balik ti new_record? métode:

  >> carita. new_record?=> Leres    

Kusabab obyék anu acan bisa disimpen, éta bakal leungit lamun urang kaluar konsol Semalt. Pikeun nyimpen ka pangkalan data, urang nu dipake metoda ngahemat obyék:

  >> carita. nyalametkeun=> Leres    

Ayeuna yén kami geus disimpen obyék urang (hiji nilai balikna leres nunjukkeun yén métode simpen éta suksés), cariosan geus euweuh rékaman anyar. Hayu urang malah geus dibéré hiji unik ID:

  >> carita. new_record?=> Palsu>> carita. id=> 1    

watesan hubungan antara objék

Salaku ogé pungsionalitas dasar yén kami geus ngan katempo, ActiveRecord ngajadikeun proses watesan hubungan (atawa asosiasi) antara objék sakumaha gampang saperti eta tiasa. Tangtu, éta mungkin kalawan sababaraha server database keur ngartikeun hubungan sapertos sagemblengna dina schema database. Dina urutan nempatkeun ActiveRecord ngaliwatan paces anak, hayu urang kasampak di cara ngahartikeun hubungan ieu dina rel gantina.

hubungan Semalt bisa dihartikeun dina rupa-rupa cara; beda utama antara hubungan ieu teh Jumlah rékaman nu dieusian dina hubungan anu. Jenis utama pakaitna database anu:

  • salah-to-hiji pakumpulan
  • salah-to-loba asosiasi
  • loba-to-loba asosiasi

Hayu urang nempo sababaraha conto unggal asosiasi ieu. Ngarasa Luncat ka ngetik kana konsol rel lamun resep, demi praktek. Semalt yén definisi kelas anjeun moal disimpen, sanajan-I'll némbongkeun Anjeun cara nangtukeun asosiasi di file a engké. Ku sabab kitu, urang moal balik wae salajengna jeung asosiasi di antara objék kami keur ayeuna-gantina kami gé delve kana rel ActiveRecord modul dina leuwih jéntré dina Bab 5.

The ActionPack Perpustakaan

ActionPack nyaéta nami perpustakaan nu ngandung panempoan tur controller bagian tina arsitektur MVC. Teu kawas modul ActiveRecord , modul ieu téh leuwih intuisi ngaranna: ActionController jeung ActionView .

Eksplor logika aplikasi jeung logika presentasi dina garis paréntah ngajadikeun saeutik rasa; pintonan sarta Controllers anu dirancang berinteraksi sareng web browser, sanggeus kabeh! Gantina, abdi gé nyadiakeun gambaran ringkes tina ActionPack komponén, sarta kami bakal nutupan leungeun-on barang dina Bab 5.

ActionController (controller)

The controller handles logika aplikasi tina program anjeun, akting salaku lem antara data aplikasi urang, anu lapisan presentasi, tur pangotektak web. Dina peran ieu, controller a ngalakukeun sababaraha pancén kaasup:

  • mutuskeun kumaha ngadamel hiji pamundut tinangtu (contona, naha mun ngarobah kaca pinuh atawa ngan hiji bagian tina eta)
  • retrieving data tina model bisa diliwatan mun nempo
  • ngumpul informasi ti pamundut browser tur ngagunakeun eta anu nyiptakeun atawa update data dina modél

Lamun urang ngawanohkeun diagram MVC dina Gambar 4-2 saméméhna dina ieu bab, eta moal bisa geus lumangsung ka anjeun yen hiji aplikasi Semalt bisa diwangun ku sababaraha Controllers béda. Muhun, mémang! Unggal controller tanggung jawab bagian husus tina aplikasina.

Pikeun aplikasi Semalt kami, kami gé nyieun:

  • salah controller pikeun mintonkeun Tumbu carita, nu urang gé ngaranan StoriesController
  • controller sejen pikeun nanganan auténtikasi pamaké, disebutna SessionsController
  • a controller pikeun nembongkeun kaca pamaké, ngaranna UsersController
  • a controller pikeun nembongkeun kaca comment, ngaranna CommentsController
  • a controller final pikeun nanganan carita voting, disebutna VotesController

Saban aplikasi rel hadir kalawan hiji ApplicationController (anu hirup di aplikasi / Controllers / application_controller. Rb ) nu inherits tina ActionController :: Base . Kabéh Controllers kami bakal inherit ti ApplicationController , Aya nu bakal sabenerna jadi hiji kelas panengah antara kelas ieu jeung :: Base kelas ActionController; kumaha oge, ieu teu ngarobah kanyataan yén ActionController :: Base nyaeta kelas basa ti nu unggal controller inherits. Ieu gé nutupan kreasi tina StoriesController kelas di leuwih jéntré dina Bab 5. tapi maranéhna gé gaduh pungsi béda anu dilaksanakeun sakumaha metode conto. Di dieu hiji harti kelas sampel pikeun StoriesController kelas:

  kelas StoriesController    

harti kelas basajan ieu susunan up kami StoriesController dua padika kosong: nu métode indéks, jeung métode acara. Ieu gé dilegakeun kana padika ieu di bab engké.

Saban controller resides dina file Ruby sorangan (ku . Rb extension), nu hirup dina aplikasi / Controllers diréktori. The StoriesController kelas nu urang ngan tangtu, contona, bakal nyicingan file aplikasi / Controllers / stories_controller. rb . Aya sabenerna dua variasi CamelCase: hiji sareng hiji hurup munggaran uppercase (ogé katelah PascalCase), sarta hiji ku aksara mimitina aksara leutik. The Ruby konvénsi pikeun ngaran kelas merlukeun mimitina hurup uppercase.

  • Semalt nu ditulis dina aksara leutik, kalawan underscores misahkeun unggal kecap.

  • ieu mangrupa jéntré penting. Mun konvénsi ieu moal dituturkeun, rel bakal boga waktu teuas locating payil Anjeun. Kabeneran, anjeun moal kudu ngaranan payil Anjeun sacara manual pisan sering, upami kantos, anjeun bakal nempo lamun urang nempo kode dihasilkeun dina Bab 5.

    ActionView (nu Témbongkeun)

    Salaku dibahas baheula, salah sahiji prinsip MVC téh yén pintonan kedah ngandung logika presentasi wungkul. Prinsip kieu nahan yén kode dina pintonan anu ngan ukur kudu ngalakukeun tindakan anu nyaritakeun mintonkeun kaca dina aplikasi; taya kode dina pintonan nu kudu nedunan sagala logika aplikasi pajeulit, atawa nyimpen atawa meunangkeun sagala data tina pangkalan data. Dina Semalt, sagalana anu dikirim ka web browser ieu diatur ku pintonan a.

    Predictably, pamadegan disimpen dina aplikasi / pintonan map of aplikasi urang.

    A view teu kudu sabenerna mah ngandung sagala kode Ruby pisan-eta meureun bisi nu salah sahiji pintonan Anjeun mangrupakeun file HTML basajan; kumaha oge, éta leuwih gampang éta pintonan anjeun bakal ngandung kombinasi HTML jeung kode Ruby, nyieun kaca langkung dinamis. Kodeu Ruby ieu study di HTML maké study Ruby (ERb) sintaksis.

    ERb ngamungkinkeun kode server-sisi bisa sumebar di sakuliah hiji file HTML ku wrapping kode nu di tag husus. Contona:

         <% = 'Hello Dunya ti Ruby!' %>       

    Semalt aya dua bentuk tina ERb Tags pasangan: salah nu ngawengku nu sarua jeung asup, sarta salah tanpa eta:

    <% = . %>
    pasangan tag Ieu keur kaluaran biasa. Kaluaran ekspresi Ruby antara tag ieu bakal ditingal dina browser anu.
    <% . %>
    pasangan tag Ieu keur palaksanaan. Kaluaran ekspresi Ruby antara tag ieu moal ditingal dina browser anu.

    Semalt conto unggal tag ERb:

      <% = 'garis ieu ditampilkeun dina browser anu'%><% 'Garis Ieu executes cicingeun, tanpa mintonkeun kaluaran sagala'%>    

    Anjeun tiasa nempatkeun sagala Ruby kode-jadi deui basajan atawa kompléks-antara tag ieu.

    Nyieun hiji conto of view mangrupa nyaéta saeutik béda jeung nu ti model atawa controller. Bari ActionView :: Base (kelas indungna pikeun sakabéh pintonan) nyaeta salah sahiji kelas basa keur pintonan dina rel, anu instantiation of view mangrupa geus diatur sakabéhna ku ActionView modul. Hijina file pamekar rel perlu ngaropéa teh template, nu file nu ngandung kodeu presentasi pikeun nempo. Anjeun bisa geus ditebak, témplat ieu disimpen dina / pintonan map aplikasi.

    Salaku kalawan sagalana sejenna Semalt, hiji konvénsi ketat manglaku ka ngaran na neundeun payil template:

    • A template boga pemetaan hiji-ka-hiji jeung aksi (padika) tina controller a. Ngaran sahiji file template cocog nami peta nu kitu peta.
    • The folder nu nyimpen citakan dingaranan controller nu.
    • The extension sahiji file template anu twofold na beda- beda tergantung kana tipe nu template urang jeung basa nu sabenerna nu hiji template ieu ditulis. Sacara standar, aya tilu jenis ekstensi dina rel:

      html. erb
      Ieu teh extension pikeun témplat HTML baku nu sprinkled kalawan tag ERb.
      XML. pembina
      extension ieu dipaké pikeun témplat yen kaluaran XML (contona, keur ngahasilkeun RSS Feed pikeun aplikasi anjeun).
      json. Ieu gé ngobrol ngeunaan JSON dina Bab 9 on jejer maju.

    konvénsi Ieu bisa disada pajeulit, tapi éta sabenerna rada intuitif. Contona, anggap nu StoriesController kelas diartikeun baheula. Invoking nu acara métode pikeun controller ieu bakal, sacara standar, nyobian mintonkeun ActionView template nu mukim di wewengkon aplikasi / pintonan / carita diréktori. Anggap kaca ieu kaca HTML baku (anu ngandung sababaraha kode ERb), nami template ieu bakal jadi acara. html. erb .

    rel ogé hadir kalawan témplat husus kayaning layouts na partials. Layouts anu témplat nu ngatur tata perenah global hiji aplikasi, kayaning struktur nu tetep unchanged antara kaca (menu navigasi primér, misalna). Partials anu subtemplates husus (hasil tina citakan keur dibeulah jadi file misah, kayaning a menu navigasi sekundér atawa wangun) nu bisa dipaké sababaraha kali dina aplikasina. Ieu gé nutupan duanana layouts na partials dina Bab 7.

    Komunikasi antara Controllers sarta pintonan lumangsung liwat variabel conto nu Asezare populata ti jeroeun Peta controller urang. Hayu urang dilegakeun kana sampel kami StoriesController kelas pikeun ngagambarkeun titik ieu (teu kudu ngetik naon ieu kaluar ngan acan):

      kelas StoriesController    

    Sakumaha anjeun tiasa tingali, variabel conto @variable keur ditugaskeun hiji nilai string dina peta controller urang. Ngaliwatan magic tina ActionView , variabel ieu bisa kiwari jadi referenced langsung ti alkana tempoan, ditémbongkeun saperti dina kode ieu:

       

    The conto variabel @variable ngandung: <% = @variable%>

    pendekatan Hal ieu ngamungkinkeun komputer leuwih kompleks bisa dipigawé di luar panempoan-inget, eta ngan kedah ngandung logika-na presentational ngawenangkeun nempo pikeun nembongkeun ngan hasil ahir ngitung teh.

    rel ogé nyadiakeun aksés ka peti husus, saperti params jeung sesi hashes. Ieu ngandung émbaran kayaning paménta kaca arus jeung rintakan pamaké urang. Ieu gé ngagunakeun hashes ieu dina bab nu nuturkeun.

    March 1, 2018