55 najpopularniejszych pytań i odpowiedzi podczas rozmów kwalifikacyjnych MVC (PDF)
Pytania i odpowiedzi dotyczące wywiadu MVC dla nowicjuszy
1) Co to jest kontroler widoku modelu?
MVC to wzorzec architektury oprogramowania do tworzenia aplikacji internetowych. Jest obsługiwany przez trzy obiekty: Model, View i Controller.
👉 Bezpłatne pobieranie pliku PDF: pytania i odpowiedzi dotyczące wywiadu MVC
2) Co reprezentuje kontroler widoku modelu w aplikacji MVC?
W modelu MVC
- Model– Reprezentuje domenę danych aplikacji. Innymi słowy, logika biznesowa aplikacji jest zawarta w modelu i odpowiada za utrzymanie danych.
- Zobacz– Reprezentuje interfejs użytkownika, za pomocą którego komunikują się użytkownicy końcowi. Krótko mówiąc, cała logika interfejsu użytkownika jest zawarta w View.
- Kontroler- To kontroler odpowiada na działania użytkownika. Na podstawie działań użytkownika odpowiedni kontroler reaguje w modelu i wybiera widok do renderowania, który wyświetla interfejs użytkownika. Logika wprowadzania danych przez użytkownika jest zawarta w sterowniku.
3) Nazwij zestaw, aby zdefiniować MVC
Kolekcja Ramy MVC jest zdefiniowany w pakiecie System.Web.Mvc.
4) Jakie są różne typy zwracane przez metodę akcji kontrolera
Oto różne typy zwracane przez metodę akcji kontrolera:
- Pokaż rezultat
- JavaWynik skryptu
- Wynik przekierowania
- Wynik JSON
- Wynik treści
5) Jaka jest różnica między dodawaniem tras do aplikacji z formularzem internetowym a aplikacją MVC?
Do dodawania tras do aplikacji webformowej używamy metody MapPageRoute() klasy RouteCollection, natomiast do dodawania tras do aplikacji MVC używamy metody MapRoute().
6) Jakie są dwa sposoby dodawania ograniczeń do trasy?
Istnieją dwie metody dodawania ograniczeń do trasy
- Używaj wyrażeń regularnych
- Użyj obiektu, który implementuje interfejs IRouteConstraint
7) Jakie są zalety MVC?
- MVC dzieli Twój projekt na inny segment, dzięki czemu programiści mogą łatwo nad nim pracować
- Łatwo jest edytować lub zmienić jakąś część projektu, co przynosi korzyści w postaci niższych kosztów rozwoju i utrzymania projektu
- MVC sprawia, że Twój projekt jest bardziej systematyczny
- Stanowi wyraźne oddzielenie logiki biznesowej od logiki prezentacji
- Każdy obiekt MVC ma inne obowiązki
- Rozwój postępuje równolegle
- Łatwy w zarządzaniu i utrzymaniu
- Wszystkie klasy i obiekty są od siebie niezależne
8) Do czego służą funkcje „beforeFilter()”, „beforeRender” i „afterFilter” w kontrolerze?
- przedFilter(): Ta funkcja jest uruchamiana przed każdą akcją w kontrolerze. To właściwe miejsce, aby sprawdzić aktywną sesję lub sprawdzić uprawnienia użytkownika.
- przedRender(): Ta funkcja jest wywoływana po logice akcji kontrolera, ale przed renderowaniem widoku. Ta funkcja nie jest często używana, ale może być wymagana, jeśli wywołujesz funkcję render() ręcznie przed zakończeniem danej akcji.
- po filtrze(): Ta funkcja jest wywoływana po każdej akcji kontrolera i po zakończeniu renderowania. Jest to ostatnia metoda kontrolera do uruchomienia.
9) Jaka jest rola komponentów Prezentacja, Abstrakcja i Kontrola w MVC?
Oto rola komponentów Prezentacja, Abstrakcja i Kontrola w MVC:
- Prezentacja: Jest to wizualna reprezentacja określonej abstrakcji w aplikacji
- Abstrakcja: Jest to funkcjonalność domeny biznesowej w aplikacji
- Kontrola: Jest to komponent zapewniający spójność pomiędzy abstrakcją w systemie a jej prezentacją użytkownikowi oraz komunikacją z innymi kontrolkami w systemie
10) Jakie są wady modelu MVC?
Oto kilka istotnych wad modelu MVC:
- Wzór modelu jest nieco skomplikowany.
- Widoczna nieefektywność dostępu do danych.
- Przy nowoczesnym interfejsie użytkownika korzystanie z MVC jest trudne.
- Do równoległego rozwoju potrzebujesz wielu programistów.
- Wymagana jest znajomość wielu technologii.
11) Jaka jest rola „ActionFilters” w MVC?
W MVC „ActionFilters” pomagają wykonywać logikę podczas wykonywania akcji MVC lub jej wykonywania.
12) Jakie są etapy realizacji projektu MVC?
Etapy realizacji projektu MVC obejmują:
- Otrzymaj pierwsze zapytanie o aplikację
- Wykonaj routing
- Utwórz procedurę obsługi żądań MVC
- Utwórz kontroler
- Wykonaj kontroler
- Wywołaj działanie
- Wykonaj wynik
13) Co to jest routing i trzy segmenty?
Routing pomaga określić strukturę adresu URL i zmapować adres URL za pomocą kontrolera.
Trzy segmenty ważne dla routingu to:
- Nazwa kontrolera
- Nazwa metody akcji
- Parametr
14) Jak routing odbywa się we wzorcu MVC?
Istnieje grupa tras zwana RouteCollection, która składa się z tras zarejestrowanych w aplikacji. Metoda RegisterRoutes rejestruje trasy w tej kolekcji. Trasa definiuje wzorzec adresu URL i procedurę obsługi, której należy użyć, jeśli żądanie pasuje do wzorca.
Pierwszym parametrem metody MapRoute jest nazwa trasy. Drugi parametr będzie wzorcem, do którego pasuje adres URL. Trzeci parametr może być wartością domyślną dla symboli zastępczych, jeśli nie zostały one określone.
15) Jak można przechodzić z jednego widoku do drugiego za pomocą hiperłącza?
Używając metody „ActionLink”, jak pokazano w poniższym kodzie. Poniższy kod utworzy prosty adres URL, który pomoże przejść do kontrolera „Home” i wywołać akcję „GotoHome”.
Zwiń/skopiuj kod
<%= Html.ActionLink("Home", "Gotohome") %>
Pytania i odpowiedzi dotyczące wywiadu MVC dla doświadczonych
16) W jaki sposób utrzymywane są sesje w MVC?
Sesje można utrzymywać w MVC na trzy sposoby: tempdata, viewdata i viewbag.
17) Jaka jest różnica pomiędzy danymi tymczasowymi, przeglądaniem danych i przeglądaniem torby?
- Dane tymczasowe: Ułatwia zachowanie danych podczas przełączania się z jednego kontrolera na inny.
- Zobacz dane: Pomaga zachować dane po przejściu od kontrolera do widoku.
- Zobacz torbę: To dynamiczne opakowanie danych widoku.
18) Co to jest widok częściowy w MVC?
Częściowy widok w MVC renderuje część zawartości widoku. Jest to pomocne w ograniczaniu powielania kodu. Krótko mówiąc, widok częściowy umożliwia renderowanie widoku w widoku macierzystym.
19) Jak zaimplementować Ajax w MVC?
W MVC Ajax można zaimplementować na dwa sposoby
- Biblioteki Ajaxa
- jquery
20) Jaka jest różnica pomiędzy „ActionResult” a „ViewResult”?
„ActionResult” jest klasą abstrakcyjną, natomiast „ViewResult” wywodzi się z klasy „AbstractResult”. „ActionResult” ma wiele klas pochodnych, takich jak „JsonResult”, „FileStreamResult” i „ViewResult”.
„ActionResult” jest najlepszy, jeśli dynamicznie generujesz różne typy widoków.
21) Jak odesłać wynik w formacie JSON w MVC?
Aby odesłać wynik w formacie JSON w MVC, możesz użyć klasy „JSONRESULT”.
22) Jaka jest różnica pomiędzy widokiem a widokiem częściowym?
Oto różnica między widokiem a widokiem częściowym
Zobacz | Częściowy widok |
---|---|
Zawiera stronę układu | Nie zawiera strony układu |
Przed wyrenderowaniem dowolnego widoku renderowana jest strona startowa widoku | Widok częściowy nie sprawdza widokustart.cshtml. Nie możemy umieścić wspólnego kodu dla widoku częściowego w viewStart.cshtml.page |
Widok może zawierać znaczniki, takie jak treść, HTML, głowa, tytuł, meta itp. | Widok częściowy został zaprojektowany specjalnie do renderowania w widoku i dlatego nie zawiera żadnych znaczników |
Widok nie jest lżejszy w porównaniu do widoku częściowego | Zwykły widok możemy przekazać do metody RenderPartial |
23) Jakie są typy wyników w MVC?
W MVC istnieje dwanaście typów wyników, gdzie klasa „ActionResult” jest klasą główną, a 11 to jej podtypy:
- Pokaż rezultat
- Wynik częściowego widoku
- Pusty wynik
- Wynik przekierowania
- RedirectToRouteResult
- Wynik Jsona
- JavaWynik skryptu
- Wynik treści
- Wynik zawartości pliku
- Wynik pliku strumienia
- Wynik ścieżki pliku
24) Jakie jest znaczenie atrybutu NonActionAttribute?
Wszystkie metody publiczne klasy kontrolera są traktowane jako metoda akcji. Jeśli chcesz zapobiec tej metodzie domyślnej, musisz przypisać metodę publiczną za pomocą NonActionAttribute.
25) Jaki jest pożytek z domyślnej trasy {resource}.axd/{*pathinfo}?
Trasa domyślna uniemożliwia przekazywanie do kontrolera żądań dotyczących pliku zasobów sieciowych, takiego jak Webresource.axd lub ScriptResource.axd.
26) Jaka jest kolejność wykonywania filtrów, jeśli zaimplementowano wiele filtrów?
Kolejność filtrów będzie następująca:
- Filtry autoryzacyjne
- Filtry akcji
- Filtry odpowiedzi
- Filtry wyjątków
27) Jakie filtry ASP.NET zostaną ostatecznie wykonane?
Na koniec wykonywane są „Filtry wyjątków”.
28) Jakie są rozszerzenia plików widoków brzytwy?
W przypadku widoków brzytwy rozszerzenia plików to
- .cshtml: jeśli C# jest językiem programowania
- .vbhtml: Jeśli VB jest językiem programowania
29) Jakie są dwa sposoby dodawania ograniczeń do trasy?
Istnieją dwie metody dodawania ograniczeń do trasy:
- Korzystanie z wyrażeń regularnych
- Korzystanie z obiektu implementującego interfejs IRouteConstraint
30) Jakie są dwa przypadki, w których routing nie jest zaimplementowany lub wymagany?
Dwa przypadki, w których routing nie jest wymagany, to
- Gdy zostanie znaleziony plik fizyczny pasujący do wzorca adresu URL
- Gdy routing jest wyłączony dla wzorca adresu URL
Pytania do rozmowy kwalifikacyjnej MVC dotyczące 5 lat doświadczenia
31) Jakie są cechy MVC?
Oto cechy MVC:
- Łatwe i bezproblemowe testowanie. Wysoce testowalna, rozszerzalna i podłączana platforma.
- Oferuje pełną kontrolę nad kodem HTML i adresami URL
- Wykorzystuje istniejące funkcje dostarczane przez ASP.NET, JSP, Django itp.
- Wyraźne oddzielenie logiki: Model, Widok, Kontroler. Rozdzielenie zadań aplikacji poprzez logikę biznesową, logikę Ul i logikę wejściową.
- Routing adresów URL dla adresów URL przyjaznych SEO. Potężne mapowanie adresów URL dla zrozumiałych i możliwych do przeszukiwania adresów URL.
- Wsparcie dla rozwoju opartego na testach (TDD).
32) Jaki jest prawdziwy przykład MVC?
Oto przykład z życia wzięty MVC:
- Załóżmy, że idziesz do restauracji. Nie będziesz chodzić do kuchni i przygotowywać jedzenia, które z pewnością możesz zrobić w domu. Zamiast tego po prostu idź tam i poczekaj, aż kelner przyjdzie.
- Teraz przychodzi do ciebie kelner, a ty po prostu zamawiasz jedzenie. Kelner nie wie, kim jesteś i czego chcesz, po prostu spisał szczegóły zamówienia.
- Następnie kelner idzie do kuchni. W kuchni kelner nie przygotowuje jedzenia.
- Kucharz przygotowuje Twoje jedzenie. Kelner otrzymuje Twoje zamówienie wraz z numerem stolika.
- Następnie kucharz przygotowuje dla ciebie jedzenie. Używa składników, aby ugotować jedzenie. Załóżmy, że zamówiłeś kanapkę warzywną. Następnie potrzebuje chleba, pomidora, ziemniaka, papryki, cebuli, kawałka, sera itp., które pochodzą z lodówki
- Cook w końcu przekazuje jedzenie kelnerowi. Teraz zadaniem kelnera jest wyniesienie jedzenia poza kuchnię.
- Teraz kelner wie, jakie jedzenie zamówiłeś i jak jest podawane.
W tym przypadku,
View= You Waiter= Controller Cook= Model Refrigerator= Data
33) Jaka jest różnica między 3-poziomami Architecture i MVC Architektura?
Oto różnica między 3-poziomami Architecture i MVC Archistruktura:
Parametr | 3-Tier Architektura | MVC Architektura |
---|---|---|
Komunikacja | Ten typ wzorca architektury nigdy nie komunikuje się bezpośrednio z warstwą danych. | Wszystkie warstwy komunikują się bezpośrednio, wykorzystując topologię trójkąta. |
Stosowanie | Trójwarstwowy: szeroko stosowany w aplikacjach internetowych, gdzie klient, warstwy danych i oprogramowanie pośrednie działają na fizycznie oddzielnych platformach. | Zwykle używany w aplikacjach działających na pojedynczej graficznej stacji roboczej. |
34) Jak można wykorzystać architekturę MVC w JSP?
Poniższy przykład ilustruje wykorzystanie architektury MVC w JSP:
- Bierzemy przykład formularza z dwiema zmiennymi: „email” i „hasło”, który stanowi naszą warstwę widoku.
- Gdy użytkownik wprowadzi adres e-mail i hasło oraz kliknie przycisk „Wyślij”, akcja zostaje przekazana do mvc_servlet, gdzie przekazywane są adres e-mail i hasło.
- Ten mvc_servlet jest warstwą kontrolera. Tutaj w mvc_servlet żądanie jest wysyłane do obiektu bean, który działa jako warstwa modelu.
- Wartości adresu e-mail i hasła są wpisywane do komponentu bean i przechowywane do dalszych celów.
- Z komponentu bean pobierana jest wartość i wyświetlana w warstwie widoku.
Mvc_example.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>MVC Guru Example</title> </head> <body> <form action="Mvc_servlet" method="POST"> Email: <input type="text" name="email"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Mvc_servlet.java
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Mvc_servlet */ public class Mvc_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Mvc_servlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String email=request.getParameter("email"); String password=request.getParameter("password"); TestBean testobj = new TestBean(); testobj.setEmail(email); testobj.setPassword(password); request.setAttribute("gurubean",testobj); RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp"); rd.forward(request, response); } }
TestBean.java
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String email="null"; private String password="null"; }
Mvc_success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="demotest.TestBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success</title> </head> <body> <% TestBean testguru=(TestBean)request.getAttribute("gurubean"); out.print("Welcome, "+testguru.getEmail()); %> </body> </html>
35) Jak działa MVC na wiosnę?
Oto jak działa MVC na wiosnę:
- DispatcherServlet odbiera żądanie.
- Następnie DispatcherServlet komunikuje się z HandlerMapping. Odwołuje również kontroler powiązany z tym konkretnym żądaniem.
- Kontroler przetwarza to żądanie wywołując metody usługi, a obiekt ModelAndView jest zwracany przez DispatcherServlet.
- Nazwa widoku jest wysyłana do ViewResolver w celu znalezienia rzeczywistego widoku do wywołania.
- Następnie DispatcherServlet jest przekazywany do View w celu wyrenderowania wyniku.
- Korzystając z danych modelu, widok renderuje i odsyła wynik do użytkownika.
36) O jakich ważnych kwestiach należy pamiętać podczas tworzenia aplikacji MVC?
Oto kilka ważnych punktów, o których należy pamiętać podczas tworzenia aplikacji MVC:
- Należy pamiętać, że ASP.net MVC nie zastępuje aplikacji opartych na formularzach internetowych ASP.Net
- Podejście do tworzenia aplikacji MVC należy wybrać na podstawie wymagań aplikacji i funkcji udostępnianych przez ASP.net MVC, aby dopasować je do konkretnych potrzeb programistycznych.
- Proces tworzenia aplikacji w ASP.NET MVC jest bardziej złożony w porównaniu z aplikacjami opartymi na formularzach internetowych.
- Łatwość konserwacji aplikacji jest zawsze większa w przypadku oddzielenia zadań aplikacji.
37) Jaka jest różnica między formularzami internetowymi a MVC?
Oto różnica między formularzami internetowymi a MVC:
parametry | Formularze internetowe | MVC |
---|---|---|
Model | Formularze sieci Web Asp.Net są zgodne z modelem programowania sterowanym zdarzeniami. | Asp.Net MVC korzysta z modelu programowania opartego na wzorcach MVC. |
Używany od | Istnieje od 2002 roku | Po raz pierwszy został wydany w 2009 roku |
Obsługa stanu widoku | Formularze sieci Web Asp.Net obsługują stan widoku do zarządzania stanem po stronie klienta. | .Net MVC nie obsługuje stanu widoku. |
Typ adresu URL | Formularze sieci Web Asp.Net mają adresy URL oparte na plikach. Oznacza to, że nazwa pliku istnieje w adresach URL i muszą one istnieć fizycznie. | Asp.Net MVC ma adresy URL oparte na trasach, co oznacza, że adresy URL są przekierowywane do kontrolerów i akcji. |
Składnia | Asp.Net MVC jest zgodny ze składnią formularzy internetowych. | Asp.Net MVC ma dostosowaną składnię. |
Typ widoku | Widoki formularzy internetowych są ściśle powiązane z kodem (ASPX-CS), tj. logiką. | Widoki MVC i logika są zawsze przechowywane osobno. |
Spójny wygląd i styl | Posiada strony wzorcowe zapewniające spójny wygląd. | Asp.Net MVC ma układy zapewniające spójny wygląd. |
Ponowne użycie kodu | Formularze internetowe oferują kontrolę użytkownika umożliwiającą ponowne wykorzystanie kodu. | Asp.Net MVC oferuje częściowe widoki umożliwiające ponowne wykorzystanie kodu. |
Kontrola HTML | Less kontrolę nad renderowanym HTML. | Pełna kontrola nad HTML |
Zarządzanie państwowe | Automatyczne zarządzanie stanem kontroli. | Ręczne zarządzanie stanem. |
Wsparcie TDD | Wymagany słaby lub niestandardowy TDD. | Zachęca i obejmuje TDD! |
38) Jak wyświetlić coś w CodeIgniter?
Oto kod wyświetlający coś w CodeIgniter:
<?=$title?> As opposed to <?php echo $title; ?> Control structures are usually written as follows <?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?><p> </li> <?php endforeach; ?>
39) Napisz kod demonstrujący model, widok i kontroler w CodeIgniter.
Oto kod demonstrujący model, widok i kontroler w CodeIgniter:
Otwórz plik kontrolera Welcome.php, w którym znajduje się aplikacja/kontrolery:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Zaktualizuj indeks w następujący sposób:
public function index() { $this->load->model('customers_model'); $data['customer'] = $this->customers_model->get_customer(3); $this->load->view('welcome_message',$data); }
Napisz następujący kod w customer_model.php w application/models.
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
Otwórz plik Welcome_message.php znajdujący się w
application/views/welcome_message.php
Zastąp kod następującym
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h3>Customer Details Card</h3> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
40) Czy możesz stworzyć aplikację internetową zawierającą zarówno formularze internetowe, jak i MVC?
Tak. Musisz uwzględnić poniższe odwołania do zestawu MVC w aplikacji formularzy internetowych, aby utworzyć aplikację hybrydową.
System.Web.Mvc System.Web.Razor System.ComponentModel.DataAnnotations
41) Jak przypisać nazwę aliasu dla akcji ASP.NET Web API?
Możemy nadać alias dla akcji Web API tak samo jak w przypadku ASP.NET MVC wykorzystując atrybut „ActionName” w następujący sposób:
[HttpPost] [ActionName("SaveStudentInfo")] public void UpdateStudent(Student aStudent) { StudentRepository.AddStudent(aStudent); }
42) Jaka jest główna różnica między MVC a WebAPI?
Oto główna różnica między MVC i WebAPI:
Framework MVC służy do tworzenia aplikacji posiadających interfejs użytkownika. W tym celu można wykorzystać widoki do zbudowania interfejsu użytkownika.
WebAPI służy do tworzenia usług HTTP. Inne aplikacje można również nazwać metodami WebAPI do pobierania tych danych.
43) Jak możesz mieć pewność, że Web API zwraca tylko dane JSON?
Aby zmusić Web API do serializacji zwracanego obiektu do formatu JSON i zwracania tylko danych JSON. W tym celu należy dodać następujący kod w klasie WebApiConfig.cs w dowolnym projekcie MVC Web API:
//JsonFormatter //MediaTypeHeaderValue Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json")); 1 2 3 //JsonFormatter //MediaTypeHeaderValue Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"))
44) Jaka jest różnica między MVVM i MVC?
Oto ważne różnice między MVVM i MVC:
MVC | MVVM |
---|---|
Kontroler jest punktem wejścia do Aplikacji. | Widok jest punktem wejścia do aplikacji. |
Relacja jedna do wielu pomiędzy kontrolerem i widokiem. | Relacje jeden do wielu pomiędzy widokiem a modelem widoku. |
Widok nie ma odniesienia do kontrolera | Widok zawiera odniesienia do modelu widoku. |
MVC to stary model | MVVM jest stosunkowo nowym modelem. |
Trudny do odczytania, zmiany, przeprowadzenia testu jednostkowego i ponownego wykorzystania tego modelu | Proces debugowania będzie skomplikowany, gdy mamy do czynienia ze złożonymi powiązaniami danych. |
Komponent modelu MVC można testować niezależnie od użytkownika | Łatwe do oddzielnych testów jednostkowych, a kod jest sterowany zdarzeniami. |
45) Co to jest MVC w AngularJS?
Angular.js opiera się na architekturze MVC. Schemat struktury MVC pokazano poniżej.
- Kontroler reprezentuje warstwę zawierającą logikę biznesową. Zdarzenia użytkownika uruchamiają funkcje zapisane w kontrolerze. Zdarzenia użytkownika są częścią kontrolera.
- Widoki służą do reprezentowania warstwy prezentacji udostępnianej użytkownikom końcowym.
- Modele służą do reprezentowania danych. Dane w modelu mogą być tak proste, jak tylko deklaracje prymitywne. Na przykład, jeśli utrzymujesz aplikację studencką, Twój model danych może mieć tylko identyfikator studenta i nazwisko. Może być również złożony, jeśli ma ustrukturyzowany model danych. Jeśli utrzymujesz aplikację dotyczącą własności samochodu, możesz mieć struktury definiujące sam pojazd pod względem pojemności silnika, liczby miejsc siedzących itp.
46) Jaka jest rola MVC w AngularJS?
Poniżej znajduje się prosta definicja działania kontrolera AngularJS.
- Podstawowym obowiązkiem administratora jest kontrola danych przekazywanych do widoku. Zakres i widok komunikują się dwukierunkowo.
- Właściwości widoku mogą wywoływać „funkcje” w zakresie. Co więcej, zdarzenia w widoku mogą wywoływać „metody” w zakresie. Poniższy fragment kodu przedstawia prosty przykład funkcji.
- Funkcja($scope) definiowana podczas definiowania kontrolera oraz funkcja wewnętrzna, która służy do zwracania konkatenacji $scope.firstName i $scope.lastName.
- W AngularJS zdefiniowanie funkcji jako zmiennej nazywa się to metodą.
- Dane w ten sposób przechodzą od kontrolera do zakresu, a następnie dane przechodzą tam i z powrotem z zakresu do widoku.
- Zakres służy do eksponowania modelu w widoku. Model można modyfikować za pomocą metod zdefiniowanych w zakresie, które można wywołać za pomocą zdarzeń z widoku. Możemy zdefiniować dwukierunkowe powiązanie modelu z zakresu do modelu.
- Kontrolery nie powinny być idealnie używane do manipulowania DOM. Powinno się to odbywać za pomocą dyrektyw, które zobaczymy później.
- Najlepszą praktyką jest posiadanie kontrolerów opartych na funkcjonalności. Na przykład, jeśli masz formularz do wprowadzania danych i potrzebujesz do tego kontrolera, utwórz kontroler o nazwie „kontroler formularza”.
47) Jak zbudować podstawowy kontroler w AngularJS
Poniższy fragment kodu to prosta strona HTML o tytule „Rejestracja na wydarzenie” i zawierająca odniesienia do ważnych bibliotek, takich jak Bootstrap, jquery i Angular.
- Dodajemy odniesienia do arkuszy stylów CSS bootstrap, które będą używane w połączeniu z bibliotekami bootstrap.
- Dodajemy odniesienia do bibliotek AngularJS. Zatem wszystko, co w przyszłości zrobimy z angular.js, będzie odwoływać się do tej biblioteki.
- Dodajemy odniesienia do biblioteki bootstrap, aby nasza strona internetowa była bardziej responsywna w przypadku niektórych elementów sterujących.
- Dodaliśmy odniesienia do bibliotek jquery, które będą używane do manipulacji DOM. Jest to wymagane przez Angular, ponieważ niektóre funkcje Angulara zależą od tej biblioteki.
Domyślnie powyższy fragment kodu będzie obecny we wszystkich naszych przykładach, dzięki czemu w kolejnych sekcjach będziemy mogli pokazać tylko konkretny kod angularJS.
Po drugie, spójrzmy na nasze pliki i strukturę plików, od których zaczniemy w naszym kursie:
- Najpierw segregujemy nasze pliki w 2 folderach, tak jak ma to miejsce w przypadku każdej konwencjonalnej aplikacji internetowej. Mamy folder „CSS”. Będzie zawierał wszystkie nasze pliki kaskadowych arkuszy stylów, a następnie będziemy mieli nasz folder „lib”, w którym będą znajdować się wszystkie nasze JAVASCRIPT akta.
- Plik bootstrap.css jest umieszczany w folderze CSS i służy do dodawania dobrego wyglądu i działania naszej witrynie.
- Angular.js to nasz główny plik, który został pobrany ze strony angularJS i przechowywany w naszym folderze lib.
- Plik app.js będzie zawierał nasz kod dla kontrolerów.
- Plik bootstrap.js służy jako uzupełnienie pliku bootstrap.cs w celu dodania funkcjonalności bootstrap do naszej aplikacji internetowej.
- Plik jquery zostanie użyty w celu dodania do naszej witryny funkcji manipulacji DOM.
Przykład użycia angular.js:
Chcemy po prostu wyświetlić słowa „AngularJS” w formacie tekstowym i w polu tekstowym, gdy strona jest wyświetlana w przeglądarce.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body> <h3> Guru99 Global Event</h3> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script src="lib/angular.js"></script> <script src="lib/bootstrap.js"></script> <script src="lib/jquery-1.11.3.min.js"></script> <div ng-app="DemoApp" ng-controller="DemoController"> Tutorial Name : <input type="text" ng-model="tutorialName"><br> This tutorial is {{tutorialName}} </div> <script> var app = angular.module('DemoApp',[]); app.controller('DemoController', function($scope){ $scope.tutorialName = "Angular JS"; }); </script> </body> </html>
48) Jakie jest zastosowanie kontrolera ng w plikach zewnętrznych w AngularJS
Wykonaj następujące kroki, aby użyć ng-controller w plikach zewnętrznych w AngularJS
Krok 1) W pliku app.js dodaj następujący kod dla swojego kontrolera
angular.module('app',[]).controller('HelloWorldCtrl',function($scope) { $scope.message = "Hello World" });
Krok 2) Teraz w pliku Sample.html dodaj klasę div, która będzie zawierać dyrektywę ng-controller, a następnie dodaj odwołanie do zmiennej składowej „message”.
<!DOCTYPE html> <html ng-app="app"> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body> <h3> Guru99 Global Event</h3> <div class="container"> <div ng-controller="HelloWorldCtrl">{{message}}</div> </div> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script src="lib/angular.js"></script> <script src="lib/bootstrap.js"></script> <script src="lib/jquery-1.11.3.min.js"></script> <script src="app.js"></script> </body> </html>
49) Napisz kod definiujący metody w kontrolerze AngularJS?
Oto kod definiujący metody w kontrolerze AngularJS:
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body ng-app="DemoApp"> <h3> Guru99 Global Event</h3> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script src="lib/angular.js"></script> <script src="lib/bootstrap.js"></script> <script src="lib/jquery-1.11.3.min.js"></script> <div ng-app="DemoApp" ng-controller="DemoController"> Tutorial Name :<input type="text" ng-model="tutorialName"><br> <br> This tutorial is {{tutorialName}} </div> <script> var app = angular.module('DemoApp', []); app.controller('DemoController', function($scope) { $scope.tutorialName = "Angular JS"; $scope.tName = function() { return $scope.tName; }; }); </script> </body> </html>
50) Napisz kod, używając ng-model, aby wyświetlić wieloliniową kontrolę wejścia w AngularJS.
Oto kod wykorzystujący ng-model do wyświetlania wieloliniowego sterowania wejściem w AngularJS:
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> </head> <body > <h3> Guru99 Global Event</h3> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <div ng-app="DemoApp" ng-controller="DemoCtrl"> <form> Topic Description:<br> <br> <textarea rows="4" cols="50" ng-model="pDescription"></textarea><br><br> </form> </div> <script> var app = angular.module('DemoApp',[]); app.controller('DemoCtrl', function($scope){ $scope.pDescription="This topic looks at how Angular JS works \nModels in Angular JS"}); </script> </body> </html>
51) Napisz kod demonstrujący użycie elementów wejściowych.
Oto przykład kodu wykorzystującego elementy wejściowe AngulaJS:
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> <link rel="stylesheet" href="css/bootstrap.css"/> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> </head> <body > <h3> Guru99 Global Event</h3> <div ng-app="DemoApp" ng-controller="DemoCtrl"> <form> Topic Description:<br> <br> Name : <input type="text" ng-model="pname"><br> Topic : <br> <input type="checkbox" ng-model="Topic.Controller">Controller<br> <input type="checkbox" ng-model="Topic.Models">Models </form> </div> <script> var app = angular.module('DemoApp',[]); app.controller('DemoCtrl', function($scope){ $scope.pname="Guru99"; $scope.Topic = { Controller:true, Models:false }; }); </script> </body> </html>
52) Jak stworzyć model w PHP?
Oto kod do utworzenia modelu w PHP:
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->load->database(); } public function total_votes() { $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries'); return $query->row()->choices_count; } public function get_results() { $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } public function add_vote($choice) { $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); } } ?>
53) Dlaczego warto używać PHP MVC Framework?
Powinieneś używać frameworka PHP MVC, ponieważ upraszcza on pracę ze złożonymi technologiami poprzez:
- Ukrywanie wszystkich skomplikowanych szczegółów implementacji
- Zapewnienie standardowych metod, które możemy wykorzystać do budowy naszych aplikacji.
- Zwiększona produktywność programistów wynika z tego, że podstawowa implementacja działań, takich jak łączenie się z bazą danych, oczyszczanie danych wejściowych użytkownika itp., została już częściowo wdrożona.
- Przestrzeganie profesjonalnych standardów kodowania
54) Jakie są popularne frameworki PHP MVC?
Oto popularne frameworki PHP MVC:
Zapalnik kodu: Jest to jeden z najpopularniejszych frameworków PHP MVC. Jest lekki i ma krótką krzywą uczenia się. Posiada bogaty zestaw bibliotek, które pomagają szybko tworzyć strony internetowe i aplikacje. Mogą z niego korzystać również użytkownicy z ograniczoną wiedzą na temat programowania OOP.
Kohana: To Hierarchical Model View Controller HMVC, który jest bezpiecznym i lekkim frameworkiem. Posiada bogaty zestaw komponentów do szybkiego tworzenia aplikacji.
CiastoPHP: Jest wzorowany na Ruby on rails. Jest znany z takich pojęć jak wzorce projektowania oprogramowania, konwencja ponad konfiguracją, ActiveRecord itp.
Zend: Jest to potężna platforma;
- Bezpieczne, niezawodne, szybkie i skalowalne
- Obsługuje Web 2.0 i tworzenie usług internetowych.
Zawiera interfejsy API od dostawców takich jak AmazonGoogle Flickr, Yahoo itp. Jest idealny do tworzenia aplikacji biznesowych.
55) Jak tworzyć widoki w PHP?
Oto kod do tworzenia widoków w PHP:
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h3>JavaScript Libraries - Opinion Poll</h3> <p><b>What is your favorite JavaScript Library? </b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
Stwórzmy teraz stronę wyników Results.php
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h3>JavaScript Libraries - Opinion Poll Results</h3> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
Te pytania podczas rozmowy kwalifikacyjnej pomogą również w Twoim życiu (ustach)