предисловие
Эта статья проходитconsole.logнекоторые особенности в сочетании сvue.jsИсходный код на простом примере позволяет понятьVueизменения в каждом процессе.
Рендеринг вывода консоли
Пожалуйста, используйте хром для просмотра и откройте консоль, чтобы увидеть эффектдемонстрационный адрес
Подготовить
vue-console.htmlсоздание
скачатьvue.jsфайл, вvue-console.htmlПредставленный в , я написал простой пример, охватывающий: инициализировать представление -> обновить представление после нажатия (включая различные функции ловушек)
код показывает, как показано ниже:
<script src="./vue.js"></script>
<div id="app">
<div id="hi" @click="changeName">{{name}}</div>
</div>
</div>
<script>
var style = 'font-size: 20px;color: blue'
var vm = new Vue({
el:'#app',
data() {
return {
name: '点我',
}
},
beforeCreate () {
console.log('%cI am beforeCreate------ 我在选项里写的', style)
},
created () {
console.log('%cI am created------ 我在选项里写的', style)
},
beforeMount () {
console.log('%cI am beforeMount------ 我在选项里写的', style)
},
mounted () {
console.log('%cI am mounted------ 我在选项里写的', style)
},
beforeUpdate () {
console.log('%cI am beforeUpdate------ 我在选项里写的',style)
},
updated () {
console.log('%cI am updated------ 我在选项里写的', style)
},
methods: {
changeName () { // 点击是文本发生变化
this.name = 'jike'
}
}
})
</script>
Конфигурация в стиле console.log
var tagLeftStyle = [
'color: #fff',
'border-top-left-radius:3px',
'border-bottom-left-radius:3px',
'background-color: #564b4f',
'padding: 5px'
].join(';')
var tagRightStyle = function (color) {
color = color?color:'#0BCF1B'
return [
'color: #fff',
'border-top-right-radius:3px',
'border-bottom-right-radius:3px',
`background-color: ${color}`,
'padding: 5px'
].join(';')
}
// ...
// 一些样式省略,具体可以去看源码
var tagVariable = function (obj, tag, desc, num, detail, color) {
console.log(`%c${lineNo} %o%c<---%c${tag}%c${desc} %c源码${num}行 %c说明: %o`, noStyle, obj, arrowStyle ,tagLeftStyle, tagRightStyle(color), sourceNoStyle, detailStyle, detail)
lineNo++
}
// %c代表后面的文本,使用css样式,%o代表对象输出
tagVariable(...)Путем передачи параметров реализуется эффект метки изображения выше,
Достаточно хорошоconsole.logОтобразите изображение и добавьте поясняющую диаграмму для облегчения понимания;
vue.jsЗвоните в определенное время, чтобы добиться хороших результатов
процесс проекта
Весь процесс я разделил на четыре этапа:构造函数阶段,初始化阶段,挂载阶段,更新阶段,
будет проходить через примеры, упомянутые выше
этап конструктора
Обычно мы используемVue, оба используютnew Vue({}), по сути, заключается в вызове его конструктора для создания экземпляра, как показано ниже.
фаза инициализации
перейдет к намdata,methodsи другую обработку, удобную для более позднего этапа вызова и реализации некоторых функций
как примерdataизnameбудет представленvmэкземпляр, поэтому мы можем использоватьthis.nameпередача
data() {
return {
name: '点我',
}
}
горная сцена
<div id="app">
<div id="hi" @click="changeName">{{name}}</div>
</div>
поставлю вышеhtmlРендеринг в представление (включая функции рендеринга, реализацию виртуального дома и т. д.)
фаза обновления
Обновления происходят при нажатии на текст на странице, и этот процесс включает в себя:wathcerвызывать,patchАлгоритмы сравнивают старые и новыеvnode,продлитьdom
иллюстрировать
В частности, вы можете посмотреть исходный код вgithubНа, если вы думаете, что можете, помогите звезде
Справочная статья:Инсайдер технологии Vue Анализ исходного кода Vue.js