Vue基础篇一

Vue指令

Vue的指令directive很像我们所说的自定义属性,指令时Vue模板中最常用的功能,它带有v-前缀,功能是当表达式改变的时候,相应的行为作用在DOM上.

  1. <div id="app">
  2. <p v-text="a"></p>
  3. <div v-html="b"></div>
  4. </div>
  5.  
  6. <script>
  7. const app = new Vue({
  8. el: "#app",
  9. data: {
  10. a: "A",
  11. b: `<h1>B</h1>`
  12. }
  13. })
  14. </script>

v-text, v-html

  1. <div id="app">
  2. 用户名:
  3. <input type="text" v-model.lazy.trim="name">
  4. 手机号:
  5. <input type="text" v-model.number="phone">
  6. <pre>{{name}}</pre>
  7. {{typeof phone}}
  8.  
  9. <textarea name="" id="" cols="30" rows="10" v-model="article"></textarea>
  10.  
  11. {{article}}
  12.  
  13. <select v-model="from">
  14. <option value="1">河北</option>
  15. <option value="2">山西</option>
  16. </select>
  17.  
  18. <select v-model="where" multiple>
  19. <option value="1">上地</option>
  20. <option value="2">西二旗</option>
  21. <option value="3">三里屯</option>
  22. </select>
  23.  
  24. {{from}}
  25. {{where}}
  26. </div>
  27. <script>
  28. // input
  29. // textarea
  30. // select
  31.  
  32. const app = new Vue({
  33. el: "#app",
  34. data: {
  35. name: "",
  36. phone: "",
  37. article: "这是一大段文本~~~",
  38. from: null,
  39. where: []
  40.  
  41. }
  42. })
  43. </script>

v-model

  1. <div id="app">
  2. <h1>展示你们的爱好</h1>
  3. <ul>
  4. <li v-for="hobby in hobby_list">{{hobby}}</li>
  5. </ul>
  6. <h1>展示你们喜欢吃的食物</h1>
  7. <ul>
  8. <li v-for="food in food_list">{{food.name}}它的价格是: {{food.price}}</li>
  9. </ul>
  10. </div>
  11. <script>
  12. const app = new Vue({
  13. el: "#app",
  14. data: {
  15. hobby_list: ["美女", "LOL", "吃鸡"],
  16. food_list: [
  17. {
  18. name: "臭豆腐",
  19. price: 6,
  20. },
  21. {
  22. name: "榴莲",
  23. price: 100,
  24. }
  25. ]
  26. }
  27. })
  28. </script>

v-for

  1. <style>
  2. .active{
  3. background-color: red;
  4. width: 100px;
  5. height: 100px;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <a :href="path">@陈润</a>
  12. <a v-bind:href="path">@陈润</a>
  13. <div v-bind:class="{active: show}">盒子</div>
  14. </div>
  15. <script>
  16. const app = new Vue({
  17. el: "#app",
  18. data: {
  19. path: "http://www.baidu.com",
  20. show: false
  21. }
  22. })
  23. </script>

v-bind

  1. <style>
  2. .active{
  3. background: red;
  4. width: 100px;
  5. height: 100px;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <a :href="path">@chenrun</a>
  12. <button @click="on_click">点我显示盒子的样式</button>
  13. <div :class="{active: show}">盒子</div>
  14. <div v-on="{mouseenter: onMouseenter, mouseleave: onMouseleave}">鼠标事件</div>
  15. </div>
  16. <script>
  17. const app = new Vue({
  18. el: "#app",
  19. data: {
  20. path: "http://www.baidu.com",
  21. show: false
  22. },
  23. methods: {
  24. on_click: function() {
  25. this.show = ! this.show
  26. },
  27. onMouseenter: function() {
  28. console.log("鼠标移入了")
  29. },
  30. onMouseleave: function() {
  31. console.log("鼠标移除")
  32. }
  33. }
  34. })
  35. </script>

v-on

  1. <div id="app">
  2. <div v-if="role == 'vip'">
  3. <h1>欢迎会员登陆</h1>
  4. </div>
  5. <div v-else-if="role == 'vvip'">
  6. <h1>您的专属秘书为您服务</h1>
  7. </div>
  8. <div v-else>
  9. <p>gun~~~~</p>
  10. </div>
  11. </div>
  12. <script>
  13. const app = new Vue({
  14. el: "#app",
  15. data: {
  16. role: "vip",
  17. }
  18. })
  19. </script>

v-if

  1. <div id="app">
  2. <button @click="on_click">点我</button>
  3. <p v-show="show">Alex DSX</p>
  4.  
  5. <p v-if="a == 'if_show'">DSX</p>
  6. <p v-else>Alex</p>
  7. </div>
  8. <script>
  9. const app = new Vue({
  10. el: "#app",
  11. data: {
  12. show: false,
  13. a: "if_show"
  14. },
  15. methods:{
  16. on_click: function() {
  17. this.show = ! this.show
  18. }
  19. }
  20. })
  21. //if appendChild
  22. //show display
  23. </script>

v-show

  1. <div id="app">
  2. 用户名: <input type="text" v-model.lazy.trim="username"><br>
  3. {{username}}
  4. 手机号: <input type="text" v-model.number="phone"><br>
  5. {{phone}}
  6. </div>
  7. <!--//main.js-->
  8. <script>
  9. var app = new Vue({
  10. el: '#app',
  11. data: {
  12. username: "",
  13. phone: "",
  14. }
  15. })
  16. </script>

修饰符

  1. <style>
  2. .active{
  3. width: 100px;
  4. height: 100px;
  5. border: solid 1px red;
  6. background: #eeeeee;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <div class="active" v-pin.right.bottom="show"></div>
  13. </div>
  14. <script>
  15. Vue.directive("pin", function(el, binding){
  16. console.log(el);
  17. console.log(binding);
  18. let val = binding.value;
  19. let positions = binding.modifiers;
  20. if(val){
  21. for(let key in positions){
  22. el.style.position = "fixed";
  23. console.log(key);
  24. el.style[key]=0;
  25. }
  26. }else{
  27. el.style.position = "static";
  28. }
  29. });
  30. const app = new Vue({
  31. el : "#app",
  32. data: {
  33. show: true,
  34. }
  35. })
  36. </script>

自定义指令

  1. <div id="app">
  2. <table border="1">
  3. <thead>
  4. <th>学科</th>
  5. <th>分数</th>
  6. </thead>
  7. <tbody>
  8. <tr>
  9. <td>数学</td>
  10. <td><input type="text" v-model.number="math"></td>
  11. </tr>
  12. <tr>
  13. <td>英语</td>
  14. <td><input type="text" v-model.number="english"></td>
  15. </tr>
  16. <tr>
  17. <td>物理</td>
  18. <td><input type="text" v-model.number="physics"></td>
  19. </tr>
  20. <tr>
  21. <td>总分</td>
  22. <td>{{sum_num}}</td>
  23. </tr>
  24. <tr>
  25. <td>平均分</td>
  26. <td>{{average}}</td>
  27. </tr>
  28. </tbody>
  29. </table>
  30. </div>
  31. <script>
  32. const app = new Vue({
  33. el: "#app",
  34. data: {
  35. math: 95,
  36. english: 55,
  37. physics: 100,
  38. },
  39. computed: {
  40. sum_num: function(){
  41. let total = this.math + this.english + this.physics;
  42. return total
  43. },
  44. average: function(){
  45. let ret = Math.round(this.sum_num/3);
  46. return ret
  47. }
  48.  
  49. }
  50. })
  51. </script>

计算属性

Vue计算属性

我们的模板表达式非常遍历,但是逻辑复杂的时候,模板会难以维护,vue提供了计算机属性.

我们用方法也能达到效果,那么我们为什么要计算属性呢~

其实在vue中方法和计算属性达到的效果是一样的,但是计算属性时基于依赖进行缓存的.

只有依赖的数据发生改变的时候,才会重新执行计算属性的函数, 每次调用都会从缓存中拿之前算好的数据.

而方法时没调用一次,执行一次.

Vue过滤器

过滤器时在数据到达用户的最后异步进行简单的过滤处理,复杂的还要用计算属性或者方法.

  1. <div id="app">
  2. <div>
  3. <p>价格展示</p>
  4. <input type="text" v-model="price">
  5. {{price | currency('USD')}}
  6. </div>
  7. <div>
  8. <p>换算</p>
  9. <input type="text" v-model="meters">
  10. {{meters | meter}}
  11. </div>
  12. </div>
  13. <script>
  14. Vue.filter('currency', function (val, unit){
  15. console.log(val);
  16. console.log(unit);
  17. val = val || 0;
  18. var ret = val + unit;
  19. return ret
  20. });
  21. Vue.filter('meter', function(val){
  22. val = val || 0;
  23. return (val/1000).toFixed(2) + "米"
  24. });
  25. new Vue({
  26. el: "#app",
  27. data: {
  28. price: 10,
  29. meters: 10,
  30. }
  31. })
  32. </script>

过滤器

Vue基础以及指令, Vue组件的更多相关文章

  1. Vue基础以及指令

    Vue 基础篇一   一.Vue框架介绍 之前大家学过HTML,CSS,JS,JQuery,Bootstrap,现在我们要学一个新的框架Vue~ Vue是一个构建数据驱动的web界面的渐进式框架. 目 ...

  2. (day65、66)Vue基础、指令、实例成员、JS函数this补充、冒泡排序

    目录 一.Vue基础 (一)什么是Vue (二)为什么学习Vue (三)如何使用Vue 二.Vue指令 (一)文本指令 (二)事件指令v-on (三)属性指令v-bind (四)表单指令v-model ...

  3. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)

    缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...

  4. Vue基础-渲染函数-父子组件-传递数据

    Vue 测试版本:Vue.js v2.5.13 做了个 demo,把父子组件的数据都绑定到 Vue 实例 app 上,注释中的 template 相对好理解些 <div id="app ...

  5. Vue基础-作用域插槽-列表组件

    Vue 测试版本:Vue.js v2.5.13 Vue 官网介绍作用域插槽时, 在 2.5.0+,slot-scope 能被用在任意元素或组件中而不再局限于 <template>. 作用域 ...

  6. Vue基础(三)---- 组件化开发

    基本结构: ◆1.组件化开发思想 ◆2.组件注册 ◆3.Vue调试工具用法 ◆4.组件间数据交互 ◆5.组件插槽 ◆6.基于组件的案例   ◆1.组件化开发思想 优点: 提高开发效率 方便重复使用 简 ...

  7. 前端-Vue基础3(父子组件交互)

    1.子组件往父组件传值 点击子组件的值,子组件自增,父组件的值也跟着自增 通过:this.$emit('change')方法向父组件暴露事件,在子组件中引用,可以调用父组件的方法 点击子组件触发cli ...

  8. Vue基础之初识Vue

    Vue特点及优点 小巧,压缩后体积17KB: 渐进式,不需要一口吃成大胖子,一上来就用所有的东西,可以一步一步.有阶段的先吃成小胖子: 数据驱动,双向数据绑定,MVVM模式,详见下一段 指令,例如v- ...

  9. Vue基础进阶 之 Vue生命周期与钩子函数

    Vue生命周期 Vue生命周期:Vue实例从创建到销毁的过程,称为Vue的生命周期: Vue生命周期示意图:https://cn.vuejs.org/v2/guide/instance.html#生命 ...

随机推荐

  1. 当导用模块与包的import与from的问题(模块与包的调用)

    当在views.py里写impor models会不会报错呢? 1.Python里面的py文件都是每一行的代码. 2.Python解释器去找一个模块的时候,只去sys.path的路径里找 3.djan ...

  2. python之random库

    random库是用于产生并运用随机数的标准库 1. random库函数 (1)random.seed(a) 设置随机种子数,可以是浮点数或整数,如果不设置的话,则random库默认以系统时间产生当作随 ...

  3. SQL—数据分析

    留存分析——左连接 矩阵分析——group by 结构分析:分析每种产品占据总销售量的比例 排序分析

  4. RabbitMQ学习系列三-C#代码接收处理消息

    RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理 http://www.80iter.com/blog/1438251320680361 http://www. ...

  5. ActionContext介绍(在Struts2中)

    一种属性的有序序列,它们为驻留在环境内的对象定义环境.在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步.事务.实时激活.安全性等等.多个对象可以存留在一个上下文内.也有根据上下文理解 ...

  6. Spring 实现发送电子邮件的两种方法

     1.通过xml文件配置主要属性: xml文件:test.xml <bean id="mailSender" class="org.springframewor ...

  7. LeetCode Split Concatenated Strings

    原题链接在这里:https://leetcode.com/problems/split-concatenated-strings/description/ 题目: Given a list of st ...

  8. Free Online SQL Formatter

    SQL Formatter Web Service Free Online SQL Formatter SQL Parser engine used by SQL formatter 今日找了几个在线 ...

  9. database - 数据库设计/使用容易忽略的细节

    一.设计 1,数据类型尽量使用数字型,数字型的比较比字符型的快很多 2,数据类型尽量小,预测可以满足未来需求的前提 3,尽量建表时字段不允许为null,除非必要,可以用NOT NULL+DEFAULT ...

  10. 在web.config中配置httpHandlers节点是的说明

    <system.web> <httpHandlers> <add verb="*" path="*.lcj" type=" ...