Quero estudar o princípio de vue e fazer um auto-resumo.
Artigo de referência:
segredo de tecnologia Vue.js: muito detalhado, introdutório obrigatório,
conexão profunda do princípio de coleção de dependências vue: mais exemplos, tutoriais avançados
Modo observador do código-fonte vue: habilidade insuficiente, temporariamente incapaz de integrar o
código-fonte vue. Análise de detalhes: habilidade insuficiente, temporariamente incapaz de integrar
A coleção de dependências de vue está relacionada ao dep e watcher.
dep: Abreviação de dependência , que significa dependência e o conceito de assinante no modelo de observador .
observador: o significado do observador
começando
Introdução É altamente recomendável ler o primeiro artigo acima. No entanto, a integração da harmonia e a formação de seu próprio sistema de conhecimento sempre parecem quase sem sentido.
Primeiro, escrevo minha experiência de começar .
Dificuldade um:
addDep (dep: Dep) {
const id = dep.id
if (!this.newDepIds.has(id)) {
this.newDepIds.add(id)
this.newDeps.push(dep)
if (!this.depIds.has(id)) {
dep.addSub(this)
}
}
}
- addSub é adicionar o inspetor atual ao sub para notificação quando os dados forem alterados.
- newDepid e depid, newDep e dep serão trocados, então enquanto houver id no dep, deve haver watcher no sub . Se o dep não tiver um id, sub adicionará um watcher. Quando dep e newDep forem trocados , é garantido que , desde que dep tenha um id, haverá um watcher no sub
Dificuldade 2:
let i = this.deps.length
while (i--) {
const dep = this.deps[i]
if (!this.newDepIds.has(dep.id)) {
dep.removeSub(this)
}
}
-
Esta é a última etapa antes da troca
-
Antes da troca, o dep já pode ter um watcher
-
Se houver dep, mas não newDep, a coleção de dependências atual não precisa notificar este inspetor, portanto, é removida do sub.
Resumindo
Embora pareça estar começando, ainda falta um combate real , e ainda falta sentido para a integração . Vou estudar o código-fonte novamente e continuar a melhorar este artigo