<body>
<h1>
{{title}}
</h1>
<p>
{{title}}
</p>
<p>
{{num}}
</p>
<script>
// var title = "hello";
// var num = 10;
// vue中数据绑定是通过set,get属性实现的,
// 所以不支持es5的浏览器就不能甩vue
// 在组件配置对象中的data中的数据,在组件创建时,都会被作为set,get属性添加到组件对象上,在set方法中进行了组件的重新渲染,所以每当data中的数据发生变化,页面就会立刻重新渲染。
function
initAttr
(){
let
title
;
let
num
;
Object
.
defineProperty
(
window
,
"title"
,{
set
(
v
){
title
=
v
;
render
();
},
get
(){
return
title
;
}
})
Object
.
defineProperty
(
window
,
"num"
,{
set
(
v
){
num
=
v
;
render
();
},
get
(){
return
num
;
}
})
}
initAttr
();
var
sourceBody
=
document
.
body
.
innerHTML
;
function
render
() {
// document.body.innerHTML
let
reg
=
/
\{\{
(
\w
+
)
\}\}
/
g
;
let
content
=
sourceBody
;
let
arr
;
while
(
arr
=
reg
.
exec
(
content
)) {
console
.
log
(
arr
);
content
=
content
.
replace
(
arr
[
0
],
window
[
arr
[
1
]])
};
document
.
body
.
innerHTML
=
content
;
// content.replace(reg,)
}
render
();
title
=
"hello"
;
num
=
10
;
setTimeout
(()
=>
{
num
=
100
;
render
();
},
2000
);
<
/script>
</body>