Vue.js 创建一个 CNODE 社区(1)

vue

使用 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

回到顶部