search
HomeWeb Front-endJS TutorialDiscussion on programming ideas of MVW class framework for introductory knowledge of AngularJS_AngularJS

By implementing two simple business requirements, this article explores the differences between AngularJS and traditional JavaScript control DOM implementation, and tries to understand the programming ideas of frameworks such as MVW in popular Web front-end development.

This requirement is very common. For example, in a two-level menu, when the first-level menu item is clicked, the corresponding submenu item should be displayed or hidden.

jQuery implementation:

Copy code The code is as follows:




  • Item 1
             

                                                                                                                                                                                       
    • Item child 1

    •                                                                                    


//javascript

$('li.parent_item').click(function(){
$(this).children('ul.child').toggle();
})

AngularJS implementation:

Copy code The code is as follows:



  • Item 1
             

                                                                                                                                                                                                                                         





The traditional way of operating DOM will not be described again. The implementation of AngularJS is much more refined than the code, and only the HTML version is sufficient. The above code uses these knowledge points of AngularJS:
1.

Directives

2.Expressions

ng-click

and

ng-hide are both Directives that come with the framework. The former is equivalent to providing an Event Handler to the li tag. In the HTML element ( li) When clicked, the Expression (expression) hide_child = !hide_child will be executed. Let's first take a look at the ng-hide directive, which controls whether the HTML element should be displayed based on the assigned expression result (Boolean value) (implemented through CSS). In other words, if the variable hide_child is true, then ul will be hidden, otherwise the result will be the opposite. Hide_child here is actually a variable on $scope

. Changing its value can also be achieved by wrapping a method in the controller controller. However, the current statement is relatively simple and can be written directly in In the assignment of the instruction.

Through the above simple code analysis, we can see two obvious features of AngularJS:

1. The operation of DOM is sealed through instructions and expressions, and only simple code can save extra JavaScript code

2. The application of instructions and expressions is only directly nested in HTML, which is somewhat contrary to the Unobtrusive JavaScript code style that jQuery promotes

Let’s look at another requirement first, and then explain the above conclusion in detail.

Requirement 2: By clicking on the div, trigger the selection of a radio button in the form

The traditional HTML Form element is not very friendly to operate on today's mobile devices. For example, the Radio button radio button requires precise positioning on a touch screen to control this component, but finger positioning is very rough. A common approach is to add a corresponding Label control, but the screen ratio of the text itself is not ideal, and it does not have a clear information transmission effect. Therefore, a div or li tag with a relatively large area is usually operated indirectly.

jQuery implementation:


Copy code The code is as follows:



       

  •                     id="option1" />
           
       

// javascript
$('li.selection').click(function(){
    $(this).children('input[type="radio"]').click();
})

AngularJS的实现:

复制代码 代码如下:



       
  •         ng-click="model.option = option.value"
            ng-class="{active: model.option == option.value}" >
                        ng-model="model.option"
                value="{{option.value}}"
                id="option1" />
           
       

In this solution, we also did not involve additional JavaScript code and used a few more instructions. For comparison and reference, we only care about the expressions of the two directives ng-click and ng-model.

Let’s first look at the ng-model directive of the input element. The assignment here means that we associate the input on the template with the option attribute of the $scope.model object to gain an in-depth understanding of the data. For binding, please refer to Data Binding. This specified association enables the template control to be directly bound to the data Model, and this binding is bidirectional. This means that once the user modifies the value in the control (check radio input), the corresponding Model object will be reassigned (model.option); at the same time, if the value of the Model object changes, the input control in the template will also correspond Reflect changes. This is actually not achieved in the above jQuery implementation.

So, through the data binding of AngularJS, the process of indirectly triggering the input by clicking on the li element is as follows:

1. Click the li tag and assign a value to model.option;
2. Modify the Model object and locate the corresponding input control (the value of value is the one of model.option);
3. Activate the checked attribute of the input control

Through the above two cases, we have a new understanding of the operation of the Web front-end.

First of all, in terms of technical implementation, by introducing new instructions, expressions, data binding and other concepts, we can operate the DOM in a completely new way, not just the JavaScript code that is limited to the interaction between users and HTML components. accomplish. This change in thinking is huge.

Since the rise of dynamic web programming at the beginning of this century, server-side programming technology has been improving. From the beginning of CGI/PHP/ASP, the language and platform gave rise to .NET vs. Java, development efficiency and software process promoted the MVC framework/ORM/AOP, etc., and performance and big data brought NodeJS/NoSQL/Hadoop, etc. , and the technical requirements for the browser front-end seem to have not been so radical. On the one hand, most of the business needs of the B/S model can be met through the server and database; on the other hand, the browser itself has differences between different platforms, is not compatible with the standards of scripting language and rendering technology, and has limitations in computing power. deficiencies and safety considerations.

In this case, the requirements on the browser side most of the time only need to consider rendering the page and simple user interaction. HTML/DOM plus JavaScript/CSS thus achieve the main work of the front-end. Therefore, there were no front-end workers in the past, only web designers were needed. Gradually, there are more and more requirements for the front-end, and jQuery has become the most widely used JavaScript encapsulation library for operating DOM. At this stage, the main task of jQuery/JavaScript is still just as a tool for user browser terminal presentation and interaction.

Understanding the origin of jQuery, it is not difficult to find that some of the rules we pursued before, such as Unobtrusive JavaScript, were limited to the means and methods of implementation. In order to separate the DOM and JavaScript code logic, we gave priority to the more maintainable ones. Way. After the front-end demand for JavaScript increased, many MVC/MVP front-end frameworks appeared, as well as AngularJS’s so-called MVW (Model-View-Whatever), and the one-size-fits-all approach to JavaScript and DOM changed. Originally, we considered the direct operation of interface display and user interaction. Now we have client-side data binding, rich instructions, and dependency injection. What awaits us will be a new programming model and way of thinking.

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
JavaScript Engines: Comparing ImplementationsJavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AM

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

Beyond the Browser: JavaScript in the Real WorldBeyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AM

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Apr 11, 2025 am 08:23 AM

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript: Exploring the Versatility of a Web LanguageJavaScript: Exploring the Versatility of a Web LanguageApr 11, 2025 am 12:01 AM

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

The Evolution of JavaScript: Current Trends and Future ProspectsThe Evolution of JavaScript: Current Trends and Future ProspectsApr 10, 2025 am 09:33 AM

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

Demystifying JavaScript: What It Does and Why It MattersDemystifying JavaScript: What It Does and Why It MattersApr 09, 2025 am 12:07 AM

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

Is Python or JavaScript better?Is Python or JavaScript better?Apr 06, 2025 am 12:14 AM

Python is more suitable for data science and machine learning, while JavaScript is more suitable for front-end and full-stack development. 1. Python is known for its concise syntax and rich library ecosystem, and is suitable for data analysis and web development. 2. JavaScript is the core of front-end development. Node.js supports server-side programming and is suitable for full-stack development.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools