Vue学習の心得
4913 ワード
Vueソース学習の心得
Vueソースの読み取りの心得を記録し、gitからコードをダウンロードし、最初のコードから読み取ります.1.Vueデータバインド
el:'app',
data:{
msg:'hello Wolrd',
hello:「こんにちは!」
}
})
双方向バインドの原理は、次のとおりです.
心得
Vueソースの読み取りの心得を記録し、gitからコードをダウンロードし、最初のコードから読み取ります.1.Vueデータバインド
<div id="app'>
{{msg}}
{{hello}}
{{world}}
new Vue({el:'app',
data:{
msg:'hello Wolrd',
hello:「こんにちは!」
}
})
双方向バインドの原理は、次のとおりです.
function Vue(opt){
const bindingMark = 'data-element-binding'
// id html
var item = document.getElementById(opt.el);
content = el.innerHTML.replace(/\{\{(.*)\}\}/g, markToken);
el.innerHTML = content;//
// bingding
for(variable in bindings){
bind(variable);
}
if (opt.data) {
for (var variable in opt.data) {
data[variable] = opt.data[variable]
}
// , {{some}} ⇒
function markToken (match, variable) {
bindings[variable] = {}
return ' + bindingMark + '="' + variable +'">'
}
// node , bindings els nodeList, bindingMark , binding [msg:{els:nodesList},hello:{els:nodeList},world:{els:[]}]
function bind (variable) {
bindings[variable].els = el.querySelectorAll('[' + bindingMark + '="' + variable + '"]')
;[].forEach.call(bindings[variable].els, function (e) {
e.removeAttribute(bindingMark)
})
// ,set , , , , ,
Object.defineProperty(data, variable, {
set: function (newVal) {
[].forEach.call(bindings[variable].els, function (e) {
bindings[variable].value = e.textContent = newVal
})
},
get: function () {
return bindings[variable].value
}
})
}
}
心得
Vue , "<span>{{params}}<span>"
<span data-element-bindings='params'><span> ,
Object.define , ,