前端学习:Vue.js基本使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

Vue教程文档: 
https://cn.vuejs.org/v2/guide/

定义

实例: new Vue() 
挂载点: el 
数据:data 
模板: template 
方法:methods 
计算属性: computed类似 variable = variable() 
侦听器: watch 一旦数据变化都会触发 
参数:props 
组件:components 


组件与实例的关系:每一个组件都是一个Vue实例 
父组件与子组件交互:

父组件通过 属性 传递给子组件参数
子组件通过 发布事件$emit 传递给父组件参数,前提是父组件需要先 注册事件
使用

变量使用:使用插值表达式 {{ variable }} 
文本替换:v-text="variable" 
内容替换:v-html="content" 
事件绑定:v-on:click="function" 等价于@click="function" 
属性绑定: v-bind:title="variable" 等价于 :title="variable" 
双向数据绑定: v-model="variable" 
show语句:v-show="bool" 为真时显示 
if语句:v-if="bool" 为真时加入dom 
for语句:<li v-for="(item, index) of list" :key="index">{{item}}</li>

实例
第一个Vue实例 插值表达式 

   <div id="hello">{{ hello }}</div>  <script>//Vue实例new Vue({el: "#hello",data: {hello: "hello world"}})</script>

hello world

挂载点, 实例, 模板

    <div id="root"><!-- 挂载点 --></div><script>// 实例new Vue({el: "#root",// 模板, 如果实例中没有定义模板,则默认使用挂载点里边的dom元素为模板template: "<h1>hello template {{ msg }}</h1>",data: {msg: "this is message",}})</script>


hello template this is message

文本替换
 

  <div id="text" v-text="number"></div><script>new Vue({el: "#text",data: {number: 123456,}})</script>

123456

内容替换 事件绑定

方法 v-on:等价于@

<div id="html" v-on:click="handleClick" @dblclick="handleDoubleClick" v-html="content"></div><script>new Vue({el: "#html",data:{content: "<h1>this is content</h1>"},methods: {handleClick: function(){this.content = "<h1> click</h1>"},handleDoubleClick: function(){this.content = "<h1>double click</h1>"}}})</script>

this is content

属性绑定 
使用v-bind之后,相单于一个js表达式 等价于:title 

  <div id="bind" v-bind:title="'hello ' + title">this is title</div><script>new Vue({el:"#bind",data: {title: "this is a title"}})</script>

this is title


双向数据绑定 

   <div id="db-bind"><input type="text" v-model="content"><div>{{ content }}</div></div><script>new Vue({el:"#db-bind",data: {content: "this is data double bind"}})</script>

this is data doubldasdase bind
this is data doubldasdase bind


计算属性
 

  <div id="computed"><input type="text" v-model="firstName"><input type="text" v-model="lastName"><div>{{ fullName }}</div><div>{{ count }}</div></div><script>new Vue({el:"#computed",data: {firstName: "",lastName: "",count: 0},// 计算属性computed: {fullName: function(){return this.firstName + " " + this.lastName}},// 侦听器, 一旦数据变化都会触发watch: {fullName: function(){this.count ++}}})</script>



v-if v-show v-for
 

  <div id="vif"><div v-if="show">v-if从dom中移除(适合一次操作)</div><div v-show="show">v-show从dom中隐藏(适合多次操作)</div><button @click="handleClick">toggle</button><ul><li v-for="item of list">{{item}}</li><!-- 以下方法增加key,可以提升性能 --><li v-for="(item, index) of list" :key="index">{{item}}</li></ul>
</div><script>new Vue({el: "#vif",data: {show: true,list: ["first", "second", "third", "fourth"]},methods: {handleClick: function(){this.show = !this.show}}})</script>

v-if从dom中移除(适合一次操作)
v-show从dom中隐藏(适合多次操作)
toggle
first
second
third
fourth
first
second
third
fourth


TodoList实例
 

  <div id="todolist"><input type="text" v-model="inputValue"><button @click="handleSubmit">确定</button><!-- 普通方式添加 --><ul><global></global><li v-for="(item, index) of list" :key="index">{{ item }}</li><local></local></ul><!-- 通过全局组件 --><ul><todo-item v-for="(item, index) of list" :key="index" :content="item" :index="index"@delete="handleDelete"   ><!-- 通过全局组件 --></todo-item> </ul></div><script>

        // 全局组件
   

    Vue.component("global", {template: "<li>item-global</li>"})// 组件与实例的关系:每一个组件都是一个Vue实例,Vue.component("todo-item", {props: ["content", "index"], //接收参数,通过属性传递值template: '<li @click="handleClick">{{content}} {{index}}</li>',  //显示methods: {handleClick: function(){this.$emit("delete", this.index)  //子组件通过发布和父组件通讯}}})

        // 父组件与子组件通讯,交互
        // 父组件通过 属性 传递给子组件参数
        // 子组件通过 发布事件 传递给父组件参数,前提是父组件需要先 注册事件        // 局部组件
     

  var Local = {template: "<li>item-local</li>"}new Vue({el:"#todolist",// 注册局部组件components: {"local": Local},data:{inputValue: "",list: []},methods: {handleSubmit: function(){this.list.push(this.inputValue);this.inputValue = "";},handleDelete: function(index){this.list.splice(index, 1)}}})</script>

 确定
item-global
sf
fsdfsdf
item-local
sf 0
fsdfsdf 1
--------------------- 
转自:https://blog.csdn.net/mouday/article/details/80932868 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PWE

Obstacle Override Logic The obstacle override logic provides the possibility to override obstacle within a window movement by selective switching off the anti-trap functionality.转载于:https://www.cnblogs.com/dannykong/p/11151813.html

进程间通信之消息队列

一、什么是消息队列 unix早期通信机制之一的信号能够传送的信息量有限&#xff0c;管道则只能传送无格式的字节流&#xff0c;这无疑会给应用程序开发带来不便。消息队列&#xff08;也叫做报文队列&#xff09;则克服了这些缺点。 消息队列就是一个消息的链表。可以把消息看…

“ 愿我如星君如月,夜夜流光相皎洁 ...”

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 永远相信爱情 ... 从一而终 ... --------------------------------------------------------------------------- 后记&#xff1a;2…

python内建函数和工厂函数的整理

内建函数参阅&#xff1a; https://www.cnblogs.com/pyyu/p/6702896.html 工厂函数&#xff1a; 本篇博文比较粗糙&#xff0c;后续会深入整理转载于:https://www.cnblogs.com/qiang-upc/p/11155786.html

显卡天梯图:2014最新显卡性能天梯图

随着电脑游戏的推广&#xff0c;很多用户都喜欢上了电脑网络游戏&#xff0c;所以组装电脑用户在装机的时候&#xff0c;会考虑电脑配置的游戏性能&#xff0c;要提高电脑配置游戏性能首要条件就是显卡性能要强&#xff0c;如果显卡性能不佳&#xff0c;那么其它方面性能再强&a…

进程间通信之分别用共享内存和信号量实现卖票

利用共享内存实现的卖票系统&#xff1a; 利用flag来保证同一时间只有一个程序使用内存&#xff0c;使用结束还原。 #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include <string.h> #include <…

shiro 的 @RequiresPermissions 注解使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 权限控制是shiro最核心的东西 Shiro权限声明通常是使用以冒号分隔的表达式。一个权限表达式可以清晰的指定资源类型&#xff0c;允许的…

【显卡天梯图】2014年最新显卡天梯图 – 【迄今最全系列显卡】

【显卡天梯图】2014年最新显卡天梯图 – 【迄今最全系列显卡】 随着电脑游戏的推广&#xff0c;很多用户都喜欢上了电脑网络游戏&#xff0c;所以组装电脑用户在装机的时候&#xff0c;会考虑电脑配置的游戏性能&#xff0c;要提高电脑配置游戏性能首要条件就是显卡性能要强&am…

原理系列:Spark1.x 生态圈一览

Spark生态圈&#xff0c;也就是BDAS&#xff08;伯克利数据分析栈&#xff09;&#xff0c;是伯克利APMLab实验室精心打造的&#xff0c;力图在算法&#xff08;Algorithms&#xff09;、机器&#xff08;Machines&#xff09;、人&#xff08;People&#xff09;之间通过大规模…

SpringMVC 注解 : @ModelAttribute

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 SpringMVC 注解 &#xff1a; ModelAttribute 的用法如上。 转自&#xff1a;https://blog.csdn.net/lovesomnus/article/details/78873…

网络编程项目(聊天室项目)

一、实现目标 一个在Linux下可以使用的聊天软件&#xff0c;要求至少实现如下功能&#xff1a; 1. 采用Client/Server架构 2. Client A 登陆聊天服务器前&#xff0c;需要注册自己的ID和密码 3. 注册成功后&#xff0c;Client A 就可以通过自己的ID和密码登陆聊天服务器 4…

CPU天梯图:2014年最新CPU性能天梯图

用户在组装电脑的前期需要考虑怎么选择适合自己的CPU&#xff0c;现在CPU性能强的比较贵&#xff0c;便宜的CPU性能又比较差&#xff0c;选择性价比高并且适合自己的处理器还真是比较花心思。在2014年的时候&#xff0c;最主流热门的AMD处理器是AMD A10-6800K&#xff0c;最新推…

解决: idea 修改 jsp 后,页面刷新无效

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 idea 修改 jsp 后浏览器访问无效。 解决&#xff1a;进入 idea 配置 修改部署方式&#xff1a; 修改 更新文件方式&#xff1a; OK了。

Python中的getpass模块

getpass模块用于输入密码时&#xff0c;隐藏密码字符 代码 import getpass name input("请输入你的名字&#xff1a;") passwd getpass.getpass("请输入你的密码&#xff1a;")print (name,passwd)   首先我们要import引入getpass模块&#xff0c;然后…

C++之命名空间

为什么要使用命名空间&#xff1f; 一个中大型软件往往由多名程序员共同开发&#xff0c;会使用大量的变量和函数&#xff0c;不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过&#xff0c;没有问题时&#xff0c;将它们结合到一起就有可能会出现命名冲突。 …

如何做到每天写代码?

摘要&#xff1a;总有一大堆事情没有做完&#xff0c;没有时间和精力为业余项目写代码&#xff1f;不要着急&#xff0c;看看可汗学院计算机科学院院长John Resig怎么说。本文将教你如何保证在每天都能有时间给业余项目写代码。 你是否曾为业余项目没有进展而惆怅过&#xff1f…

Vue 实现前后端分离项目

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Vue实现前后端分离项目的初体验 经过之前学习的Vue的知识&#xff1a; vue基本指令vue组件vue-resourcevue路由 其实我们已经可以开始…

C++对C的一些加强和变化

实用性加强&#xff1a; int main() {// C语言中的变量都必须在作用域开始的位置定义&#xff01;&#xff01;// C中更强调语言的“实用性”&#xff0c;所有的变量都可以在需要使用时再定义。for (int i 0; i < 10; i){std::cout << i << std::endl;}return…

优秀Unix管理员的七个习惯

摘要&#xff1a;Unix系统管理员可能会很懒或喜欢优雅的解决方法&#xff0c;这就是他们的存在之美。一位优秀的Unix系统管理员有着自己的习惯&#xff1a;不会等到问题来找你、精通所使用的工具和系统、确定事情优先次序和喜欢优雅的解决方案但不迷失等。 优秀的Unix系统管理员…

Vue.js 极简小例:读值、样式调用、if判断、a 标签、点击事件、管道

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 写法&#xff1a; <template><div id"app"><!-- 三目运算符使用 ‘ok’ 的值定义在 data 中-->{{ ok …