Home > Article > Web Front-end > Discussion on components and templates in Vue.js
Abstract:
Directive is an important feature in Vue.js. It mainly provides a mechanism to map data changes to DOM behavior. What changes in data are mapped to DOM behaviors? Vue.js is driven by data, so we will not directly modify the DOM structure, and there will be no similar $('ul').append(' 25edfb22a4f469ecb59f1190150159c6onebed06894275b65c1ab86501b08a632eb') such an operation, when the data changes, the instruction will modify the DOM with a set operation, so that you can only focus on the data changes without having to manage DOM changes and Status,
Vue’s built-in instructions
1. v-bindv-bind It is mainly used to bind DOM element attributes (attributes).
That is, the actual value of the element attribute is provided by the data attribute in the vm instance.
For example:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的指令</title> <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <p id="demo"> <span v-bind:cutomId="id">{{message}}</span> </p> <script> //数据 let obj ={ message:"Hello World", id:'123' }; //声明式渲染 var vm = new Vue({ el:'#demo', data:obj }); </script> </body> </html>
v-bind can be abbreviated as ":",
The above example can be abbreviated as
6040f4260c4aede9334cbe7678a21535The implementation effect is as follows:
Bind event listener , abbreviated as @.
We also used it yesterday, let’s abbreviate it to see the effect
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的指令</title> <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <p id="demo"> <span @click="clickHandle">{{message}}</span> </p> <script> //数据 let obj = { message:"hello Vue" }; //声明式渲染 var vm = new Vue({ el:"#demo", data:obj, methods:{ clickHandle(){ alert("click") } } }); </script> </body> </html>
The effect is as follows:
##3.v- html
v-html, the parameter type is string,
is used to update innerHTML, acceptedstring
will not be compiled Wait for the operation, The code is as follows<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue的指令</title> <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <p id="demo" v-html="HTML"></p> <script> //数据 let obj = { HTML:"<p>Hello World</p>" }; var vm = new Vue({ el:"#demo", data:obj }) </script> </body> </html>
The effect is as follows
For more built-in instructions, please check the official website: Vue.js instructions
template
html template
DOM-based templates, templates are all available Parse valid htmlInterpolation Text: Use "Mustache" syntax (double curly brackets) {{value}} Function: Replace the attribute value on the instance, When the value changes, the interpolated content will automatically update Native html: double curly braces output text and will not parse htmlAttributes: use v-bind Binding can respond to changesUse JavaScript
Expression: You can write simple expressionsString template
template string
-- Attribute of template option object ’ s ’ ’ s ’ s ’ s through through ’s ’ using ’s ’ using ’s ’ through through ’s through through ’s' ’ ‐ to ‐‐‐‐‐‐mn to Content hanging from the element will be ignored.The code is as follows
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>template模板</title> <script src="../vue.js"></script> </head> <body> <!--HTML模板--> <p id="demo"></p> <script> //数据 let obj = { html:"<p>String</p>", abc:1 }; var str = "<p>Hello</p>"; var vm = new Vue({ el:"#demo", data:obj, template:str }) </script> </body> </html>Have you noticed any surprising changes
There can only be one root node
Write the html structure in a pair of script tags, set type="X-template"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>template模板</title> <script src="../vue.js"></script> </head> <body> <!--HTML模板--> <p id="demo"> <span>vue</span> </p> <script type="x-template" id="temp"> <p> Hello,{{abc}}, <span>sunday</span> </p> </script> <script> //数据 let obj = { html:"<p>String</p>", abc:1 }; var vm = new Vue({ el:"#demo", data:obj, template:"#temp" }); </script> </body> </html>The effect is as follows:
Writing in script tags is still relatively limited.
If other files also have this structure, this cannot be reused. Template render functionrender function Attributes of render option object createElement(tag name, {data object}, [child element]); The child elements are text or arraysLet’s use a piece of code to demonstrate
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>render函数</title> <script src="../vue.js"></script> <style type="text/css"> .bg{ background: #ee0000; } </style> </head> <body> <p id="demo"></p> <script> //数据 let obj = { }; var vm = new Vue({ el:"#demo", data:obj, render(createElement){ return createElement( //元素名 "ul", //数据对象 { class:{ bg:true } }, //子元素 [ createElement("li",1), createElement("li",2), createElement("li",3) ] ); } }) </script> </body> </html>The effect is as follows Summarize
The above is the detailed content of Discussion on components and templates in Vue.js. For more information, please follow other related articles on the PHP Chinese website!