Vue.js 创建一个 CNODE 社区(1)
使用 Vue.js 创建一个 CNODE 社区 (1) - 入门
终于学到了 Vue,选的毕设是用 Vue 创建一个类似 CNODE 的社区。
Vue 作为一个主要运用了 MVVM 架构的框架,很值得我们去学习,就先从 Vue 的官方网站教程中过一遍 demo,尽快熟悉关于 Vue 的各种基础概念。
简述MVVM
MVVM 和 MVC 一样,也是一种代码组织形式。
他把代码分为三个部分,分别是:
Model 表示对数据的操作
View 表示视图
ViewModel 把 Model 的变化更新到 View 上,把 View 的修改同步到 Model
参考答案
MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。
在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
ViewModel 把 Model 的变化更新到 View 上,把 View 的修改同步到 Model
Vue.js的优点
1.学习曲线平缓
2.易上手
3.功能强大
4.使用范围广
创建 Vue 实例
一个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的。通过构造函数 Vue 就可以创建一个 Vue 的根实例,并启动 Vue 应用---入口
必不可少的一个选项就是 el 。 el 用于指定一个页面中己存在的 DOM 元素来挂载 Vue实例,可以是标签。也可以是css语法
通过 Vue 实例的 data 选项,可以声明应用内需要双向绑定的数据。建议所有会用到的数据都预先在 data 内 声明,这样不至于将数据散落在业务逻辑中,难以维护。也可以指向一个已经有的变量
<div id="app"> {{ msg }}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:\'#app\',
data:{}
})
</script>
Vue 文本插值
Vue .js 只支持单个表达式,不支持语句和流控制。如三元运算符也是支持的。
<div id="app"> {{ msg }}
{{ a }}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:\'#app\',
data:{
msg:\'vue.js\',
a:2
},
})
// 访问 Vue 实例的属性
console.log(app.$data)
console.log(app.$el)
// 访问data元素的属性-- 直接app.属性名,app.msg
console.log(app.a)
</script>
Vue 初探生命周期
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
<div id="app"> {{ msg }}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:\'#app\',
data:{
msg:\'vue.js\',
a:2
},
created:function(){
alert(\'Vue 实例创建完成,还未挂载到 DOM\')
},
mounted:function(){
alert(\'Vue 实例已经挂载到 DOM\')
}
})
</script>
Vue 过滤器
Vue. 支持在{{}}插值的尾部添加一小管道符 “ | ” 对数据进行过滤,经常用于格式化文本,比如字母全部大写、货币千位使用逗号分隔等。过滤的规则是自定义的, 通过给 Vue 实例添加选项 filters 来设置
div id="app"> {{ msg }} <br>
{{ a }} <br>
{{ date }} <br>
{{ date | formatDate}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var plusDate = function(value){
return value<10?\'0\'+value:value
}
var app = new Vue({
el:\'#app\',
data:{
msg:\'vue.js\',
a:2,
date:""
},
filters:{
formatDate:function(value){
var value = new Date(value)
var years = value.getFullYear()
var month = plusDate(value.getMonth() + 1)
var day = plusDate(value.getDate())
var hour = plusDate(value.getHours())
var min = plusDate(value.getMinutes())
var sec =plusDate(value.getSeconds())
return years+\'-\'+month+\'-\'+day+\'/\'+hour+":"+min+\':\'+sec
},
},
created:function(){
// alert(\'Vue 实例创建完成,还未挂载到 DOM\')
},
mounted:function(){
var _this = this
var timer = setInterval(function(){
_this.date = new Date()
},1000)
}
})
</script>
Vue 常用指令
指令( Directives )是 Vue 模板中最常用的一项功能,它带有前缀 v-,能帮我们快速完成DOM操作。循环渲染。显示和隐藏。
v-text 解析文本,和 {{}} 作用一样
v-html 解析 HTML
v-on 绑定事件监听器
v-bind 动态更新 HTML 元素上的属性
<div id="app"> <hr>
文本插值:
{{ msg }} <br>
{{ a }} <br>
<hr>
filter 过滤器: <br>
{{ date }} <br>
{{ date | formatDate}} <br>
<hr>
常用指令:<br>
v-text: <br>
<span v-text=\'apple\'></span> <br>
v-html: <br>
<div v-html=\'banana\'></div> <br>
v-bind: <br>
<span v-bind:class="className">here</span> <br>
v-on: <br>
<button v-on:click="cout">{{ num }}</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var plusDate = function(value){
return value<10?\'0\'+value:value
}
var app = new Vue({
el:\'#app\',
data:{
msg:\'vue.js\',
a:2,
date:"",
apple:\'apple\',
banana:\'<span style="color:yellow">香蕉</span>\',
className:\'transRed\',
num:0
},
filters:{
formatDate:function(value){
var value = new Date(value)
var years = value.getFullYear()
var month = plusDate(value.getMonth() + 1)
var day = plusDate(value.getDate())
var hour = plusDate(value.getHours())
var min = plusDate(value.getMinutes())
var sec =plusDate(value.getSeconds())
return years+\'-\'+month+\'-\'+day+\'/\'+hour+":"+min+\':\'+sec
},
},
methods:{
cout:function(){
this.num = this.num + 1
}
},
created:function(){
// alert(\'Vue 实例创建完成,还未挂载到 DOM\')
},
mounted:function(){
var _this = this
var timer = setInterval(function(){
_this.date = new Date()
},1000)
}
})
</script>
以上是 Vue.js 创建一个 CNODE 社区(1) 的全部内容, 来源链接: utcz.com/z/378244.html