• 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>
    
  • 相关阅读:
    Nodejs-内置核心模块&npm包管理工具

    python 内置函数
    序列化和反序列化(json 和pickle)dumps 为序列化, json为反序列化
    迭代器iter()
    生成器 yield
    装饰器的解释说明
    面向过程中的局部变量(global)
    函数的参数设定
    集合的基本操作
  • 原文地址:https://www.cnblogs.com/No-harm/p/9696597.html
Copyright © 2020-2023  润新知