学习vuejs的第一天(vuejs)

模板渲染{{}}直接可以读出data中的数据,若data中是属性值,用v-bind渲染到页面,简写:例如:有一个title的属性,要用data中的数据,则<div :title="message">或者<div v-bind:title="message">

     
     
<div id="app">
{{ message }}
</div>

     
     
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
条件和循环
     
     
<div id="app-3">
<p v-if="seen">现在你看到我了 </p>
</div>
     
     
var app3 = new Vue({
el: '#app-3',
data: {
seen: true
}
})
     
     
<div id="app-4">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div>
     
     
var app4 = new Vue({
el: '#app-4',
data: {
todos: [
{ text: '学习 JavaScript' },
{ text: '学习 Vue' },
{ text: '整个牛项目' }
]
}
})
调用实例中的方法 v-on:可以简写为@clcik
     
     
<div id="app-5">
<p>{{ message }} </p>
<button v-on:click="reverseMessage">逆转消息 </button>
</div>
     
     
var app5 = new Vue({
el: '#app-5',
data: {
message: 'Hello Vue.js!'
},
methods: {
reverseMessage: function () {
this.message = this.message.split( '').reverse().join( '')
}
}
})
数据双向绑定v-model
     
     
<div id="app-6">
<p>{{ message }} </p>
<input v-model="message">
</div>
     
     
var app6 = new Vue({
el: '#app-6',
data: {
message: 'Hello Vue!'
}
})
组件注册组件注册组件时,第一是组件模板的名字,也就是标签的名字,第二个是组件的内容,template:后面是组件内的标签内容
     
     
// 定义名为 todo-item 的新组件
Vue.component( 'todo-item', {
template: '<li>这是个待办项</li>'
})

     
     
构建组件模板
<ol>
<!-- 创建一个 todo-item 组件的实例 -->
<todo-item> </todo-item>
</ol>
从父元素中获取data传入组件 props:这个属性可以获取父元素传过来的值 在注册组件的时候这样写

 
 
Vue.component( 'todo-item', {
// todo-item 组件现在接受一个
// "prop",类似于一个自定义属性
// 这个属性名为 todo。
props: [ 'todo'],
template: '<li>{{ todo.text }}</li>'
})
   
   
用props接收一个叫todo的值


 
 
在组件中用v-bind将这个todo的值传过来,可以简写:
<div id="app-7">
<ol>
<!--
现在我们为每个 todo-item 提供待办项对象
待办项对象是变量,即其内容可以是动态的。
我们也需要为每个组件提供一个“key”,晚些时候我们会做个解释。
-->
<todo-item
v-for= "item in groceryList"
v-bind:todo= "item"
v-bind:key= "item.id">
</todo-item>
</ol>
</div>

组件初始化-构建函数
 
 
var app7 = new Vue({
el: '#app-7',
data: {
groceryList: [
{ id: 0, text: '蔬菜' },
{ id: 1, text: '奶酪' },
{ id: 2, text: '随便其他什么人吃的东西' }
]
}
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于您的问题,我可以为您提供一些参考。您可以使用 Vue.js 中的 transition 和 animate.css 库来实现聊天对话的打字效果。具体的实现方式可以参考以下代码: HTML 代码: ```html <div id="app"> <div class="chat-box"> <div class="message" v-for="msg in messages" :key="msg.id" :class="{'user': msg.isMe}"> <div class="avatar"></div> <div class="content" v-if="msg.type === 'text'"> <p v-text="msg.text"></p> <div class="typing" v-if="msg.typing"> <span></span><span></span><span></span> </div> </div> </div> </div> <div class="input-box"> <input type="text" placeholder="请输入您的消息" v-model="message" @keyup.enter="sendMessage"> <button @click="sendMessage">发送</button> </div> </div> ``` CSS 代码: ```css * { box-sizing: border-box; } .chat-box { height: 300px; overflow-y: scroll; background-color: #f5f5f5; padding: 20px; } .message { display: flex; margin-bottom: 20px; &.user { flex-direction: row-reverse; } .avatar { width: 50px; height: 50px; background-color: #f6f6f6; border-radius: 50%; margin-right: 10px; } .content { position: relative; background-color: #fff; padding: 10px 15px; border-radius: 5px; &::before { content: ""; position: absolute; width: 10px; height: 10px; background-color: #fff; transform: rotate(45deg); } &.user::before { right: -5px; bottom: 5px; border-top: 1px solid #ddd; border-left: 1px solid #ddd; } &::after { content: ""; position: absolute; width: 10px; height: 10px; background-color: #fff; transform: rotate(45deg); } &.user::after { right: -5px; bottom: -5px; border-bottom: 1px solid #ddd; border-right: 1px solid #ddd; } p { line-height: 1.5; margin: 0; } .typing { display: flex; justify-content: flex-end; margin-top: 10px; span { width: 8px; height: 8px; background-color: #555; border-radius: 50%; margin-right: 5px; animation: dot 0.6s infinite; } span:nth-child(2) { animation-delay: 0.1s; } span:nth-child(3) { animation-delay: 0.2s; } @keyframes dot { 0% { opacity: 0; transform: scale(0); } 50% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0); } } } } } .input-box { display: flex; align-items: center; input { flex: 1; padding: 10px; border: none; outline: none; border-radius: 5px; font-size: 16px; } button { padding: 10px 15px; margin-left: 10px; border: none; outline: none; border-radius: 5px; background-color: #43a047; color: #fff; font-size: 16px; cursor: pointer; } } ``` JavaScript 代码: ```javascript const app = new Vue({ el: '#app', data() { return { messages: [ { id: 1, isMe: false, type: 'text', text: '您好,欢迎您使用聊天系统!', typing: false } ], message: '' } }, methods: { sendMessage() { if (!this.message.trim()) { return } const id = this.messages.length + 1 this.messages.push({ id, isMe: true, type: 'text', text: this.message, typing: true }) this.message = '' setTimeout(() => { const index = this.messages.findIndex(message => message.id === id) this.messages.splice(index, 1, { id, isMe: true, type: 'text', text: this.message, typing: false }) }, 1000) } } }) ``` 在以上代码中,我们使用了 transition 和 animate.css 库来实现一个聊天对话的打字效果。具体的实现方式是在消息发送时,先添加一条“正在输入”的消息,1 秒后再将其替换为发送的消息,从而实现打字的效果。我们同时通过 CSS 来修饰消息框的样式,使之更加美观。最终实现的效果可以见下图: ![聊天对话的打字效果](https://img-blog.csdnimg.cn/20211001093331456.gif)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值