组件基础——vue

NodeJS

一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!

nvm 是一种流行的运行 Node.js 的方式。 例如,它可以轻松地切换 Node.js 版本,也可以安装新版本用以尝试并且当出现问题时轻松地回滚。

查看 npm 安装路径
npm config get prefix
修改 npm 安装路径
npm config set prefix "path"
查看 npm 缓存路径
npm config get cache
修改 npm 缓存路径
npm config set cache "path"

VueJS

安装或引用

npm install vue	
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>

安装 vue 脚手架

npm install vue-cli -g

新建vue项目

vue init webpack CFormDensigner

运行项目

npm run dev

获取节点

通过在元素里面使用属性ref来获取元素,获取到得元素下的节点以列表的形式存放在对象里面。我们可以通过这个对象非常方便地获取元素的属性值,以键值对的形式保存在对象中。

<form ref="login">
    <input name="username"/>
    <input name="password"/>
</form>
<script>
    var username = app.$refs.login[0].value;
    var password = app.$refs.login[1].value;
</script>

设置组件

  • 注册组件

    Vue.component('component-name',{
        model: {},
        props: [] | {},
        data: function(){return{}},
        template: '',
        methods: {}
    })
    

    model用于绑定一个事件与属性,属性的值会跟随事件进行刷新。

    props可以通过这个定义组件的属性,用于接收外部的参数。

    data 内部传参,但是它必须为函数,这样才能复用组件使其不会出现数据窜用的情况。

    template组件模板,展示什么样的组件。

    methods组件的方法,组件内部可以用于绑定事件。

  • 定义组件属性

    props: {
      title: String,
      likes: Number,
      isPublished: Boolean,
      commentIds: Array,
      author: Object,
      callback: Function,
      contactsPromise: Promise 
    }
    props: ['title', 'likes', 'isPublished', 'commentIds', 'author']
    

    支持通过v-bind动态给属性赋值,父子数据单向下绑定(即组件内部父级的属性值更新,子级跟随着更新,但是反过来则不行)。

    属性值作为数据的初始值

    props: ['initialCounter'],
    data: function () {
      return {
        counter: this.initialCounter
      }
    }
    

    Prop验证

  • 外部绑定组件事件

    <div id="app">
        <component-name @clicknow="clicknow"></component-name>
    </div>
    
    Vue.component('component-name',{
        methods: {
            clickFun: function(){
                this.$emit('clicknow', this.data);
            }
        }
    })
    new Vue({
        el: '#app',
        methods: {
            clicknow: function(e){
                console.log(e);
            }
        }
    })
    

    事件名不存在任何自动化的大小写转换,v-on 事件监听器在 DOM 模板中会被自动转换为全小写 (因为 HTML 是大小写不敏感的),所以 v-on:myEvent 将会变成 v-on:myevent——导致 myEvent 不可能被监听到。因此,我们推荐你始终使用 kebab-case 的事件名

    v-model

  • 组件内部插入代码

    <div id="app">
        <component-name @clicknow="clicknow">
            <div>slot 标签可以让组件内部插入代码</div>
        </component-name>
    </div>
    
    Vue.component('component-name',{
        template: '<div><slot></slot></div>'
    })
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hjhcos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值