How to better understand Vue's MVVM pattern?
In recent years, with the version upgrade of Vue.js, Vue.js has also been used as the first choice of front-end framework by more and more developers. It can be said that a front-end who does not understand Vue is not an excellent front-end engineer. Of course, Vue will get a lot of rejections if you don’t know Vue during interviews and promotions.
So what is Vue?
Vue.js is a lightweight, high-performance, componentable MVVM library with a very easy-to-use API
Many beginners are just learning Vue , basically started to pick up the manual and start writing code. In fact, before starting to write Vue, we need to understand the MVVM mode of Vue.js and the MVP mode of jq.
Look at the effect first:
We want to achieve the effect of todolist, that is, after the input content in the input box is submitted, the input content will be displayed below.
It is not difficult to achieve this effect. Both Vue and jq can do it. So the same front-end effect can also be achieved with jq. So why should Vue be preferred? So this starts with the different modes of the two.
MVP mode
MVP mode is the mode we use when writing jq code. Let’s take a look at what MVP stands for:
#model layer (data layer), presenter layer (control layer/business logic related) view (view layer)Presenter is the core layer, When using jq to achieve effects, you will find that there is a lot of code operating on the DOM.
<div id="root"> <input class="input"/> <button onclick="add(this)">提交</button> <ul></ul> </div> <script> function add(a){ var content=$(".input").val(); var html="<li>"+content+"</li>"; $('ul').append(html); } </script>
We will find that jq achieves the effect by changing the Dom structure of the page. After obtaining the input box data, it will continuously add li tags to achieve the effect. Therefore, to achieve front-end effects, the Presenter layer accounts for a large proportion of code, while the model layer has very little code.
MVVM pattern
MVVM is the abbreviation of Model-View-ViewModel. The Model layer represents the data model, and the business logic of data modification and operation can also be defined in the Model; the View represents the UI component, which can be understood as the HTML page code, and the ViewModel is an object that synchronizes the View and the Model.<div id="root"> <input v-model="inputValue" /> <button @click="handleSubmit">提交</button> <ul> <li v-for="item in list">{{item}}</li> </ul> </div> <script> new Vue({ el:"#root", data:{ inputValue:'', list:[] }, methods:{ handleSubmit:function(){ this.list.push(this.inputValue) } } }) </script>
可见,Vue是通过获取input数据,然后v-for数据循环来实现效果,而不是修改html,这是MVP模式和MVVM模式最大的区别。
那么频繁的操作DOM的缺点是效率低,解析速度慢,内存占用量过高,如果页面比较长,其缺点会更加暴露出来,那么加载时间也就不会很快了。
这也就是为什么同样的效果,我们都在追寻前沿的Vue,慢慢淘汰掉jq的原因。升职加薪,Vue技能赶紧get起来吧。
The above is the detailed content of How to better understand Vue's MVVM pattern?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

The watch option in Vue.js allows developers to listen for changes in specific data. When the data changes, watch triggers a callback function to perform update views or other tasks. Its configuration options include immediate, which specifies whether to execute a callback immediately, and deep, which specifies whether to recursively listen to changes to objects or arrays.

Vue multi-page development is a way to build applications using the Vue.js framework, where the application is divided into separate pages: Code Maintenance: Splitting the application into multiple pages can make the code easier to manage and maintain. Modularity: Each page can be used as a separate module for easy reuse and replacement. Simple routing: Navigation between pages can be managed through simple routing configuration. SEO Optimization: Each page has its own URL, which helps SEO.

There are three ways to refer to JS files in Vue.js: directly specify the path using the <script> tag;; dynamic import using the mounted() lifecycle hook; and importing through the Vuex state management library.

Vue.js has four methods to return to the previous page: $router.go(-1)$router.back() uses <router-link to="/" component window.history.back(), and the method selection depends on the scene.

There are three common methods for Vue.js to traverse arrays and objects: the v-for directive is used to traverse each element and render templates; the v-bind directive can be used with v-for to dynamically set attribute values for each element; and the .map method can convert array elements into new arrays.

There are two ways to jump div elements in Vue: use Vue Router and add router-link component. Add the @click event listener and call this.$router.push() method to jump.
