Vue.js(持续更新)

本文深入解析Vue.js框架的核心特性,包括渐进式开发、MVVM模型、指令使用及组件化开发。涵盖声明式渲染、条件循环、双向数据绑定等关键功能,辅以实例代码,适合初学者快速上手。


1. Vue.js介绍

渐进式框架:说明vue.js的轻量,一个前端项目可以使用vue.js一两个特性也可以整个项目都用vue.js;
自底向上逐层应用:作为渐进式框架要实现的目标就是方便项目增量开发(可以逐渐引入vue.js开发)。

Vue.js的使用

  1. 在html页面使用script引入vue.js的库即可使用;
  2. 使用Npm管理依赖,使用webpack打包工具对vue.js应用打包(大型应用推荐此方案);
  3. Vue-CLI脚手架,使用vue.js官方提供的CLI脚本架很方便去创建vue.js工程雏形。

Vue.js的功能

1)声明式渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。
比如:使用vue.js的插值表达式放在Dom的任意地方, 差值表达式的值将被渲染在Dom中。


2)条件与循环

dom中可以使用vue.js提供的v-if、v-for等标签,方便对数据进行判断、循环。


3)双向数据绑定

提供v-model 指令,它可以轻松实现Dom元素和数据对象之间双向绑定,
即修改Dom元素中的值自动修改绑定的数据对象,修改数据对象的值自动修改Dom元素中的值。


4)处理用户输入

为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法


5)组件化应用构建

vue.js可以定义一个一个的组件,在vue页面中引用组件,这个功能非常适合构建大型应用。


2. Vue.js 模型及示例

Vue.js是MVVM模型的:

Model:负责数据存储
View:负责页面展示
View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示

MVVM模型
三层结构代码示例:

1、定义html,引入vue.js
2、定义app div,此区域作为vue的接管区域
3、定义vue实例,接管app区域。
4、定义model(数据对象)
5、VM完成在app中展示数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue.js测试程序</title>
</head>
<body>
<!--实现在body区域显示一个名称:coderwhat扣什-->
<div id="app">
    {{name}}<!--相当于MVVM的view视图,插值表达式-->
</div>
</body>
<script src="vue.min.js"></script><!--引入vue.js的包-->
<script>
    // 编写MVVM中的VM(ViewModel)及model部分部分
    var VM = new Vue({
        el: '#app',  <!--vm接管了app区域的管理-->
        data: {      <!--model数据-->
            name: 'coderwhat扣什'
        }
    });
</script>
</html>

2.1 需要掌握的一些语法

参看在vue-router中写的

3. 常用指令

3.1 v-model, v-bind, v-text, v-on

v-model:在表单控件或者组件上创建数据对象和DOM属性的双向绑定,且仅能在以下元素中使用

input,select, textarea,components(Vue中的组件)


v-bind:将数据对象绑定到dom的任意属性上,且可以给dom绑定一个或多个特性,且v-bind可省略用 “:” 代替


v-text:可以将一个变量的值渲染到指定的元素中,它可以解决插值表达式闪烁的问题


v-on:绑定一个按钮的单击事件,且v-on可省略用 “@” 代替

代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue.js常用指令测试</title>
</head>
<body>
<div id="app">
    <!--{{name}}--><!--当网速较慢的时候,直接使用插值表达式,造成闪烁,即先显示插值表达式,再等到加载完vm后,显示实际值-->
    <span v-text="name"></span><!--当我们用v-text来显示插值表达式时,在vm未加载完前,表达式所在位置显示为空-->
    <input type="text" v-model="num1"> + <!--使用v-model来双向绑定dom和vm-->
    <input type="text" v-model="num2"> =
    <!--<span v-text="Number.parseInt(num1) + Number.parseInt(num2)"></span>-->
    <span v-text="result"></span>
    <button v-on:click="change">计算</button><!--使用v-on监听点击事件,触发change函数,函数在vm中定义-->

    <a v-bind:href="url">百度</a><!--使用v-bind绑定任意属性,且v-bind可省略用":"代替-->
    <a :href="url">百度2</a>
    <div :style="{fontSize: size + 'px'}">测试字体</div>
</div>
</body>
<script src="vue.min.js"></script>
<script>
    var VM = new Vue({
        el: '#app',
        data: { //model中的数据
            name: 'coderwhat扣什',
            num1: 0,
            num2: 0,
            result: 0,
            url: 'http://www.baidu.com',
            size: 33
        },
        methods: {  //model中定义的方法
            change: function () {
                this.result = Number.parseInt(this.num1) + Number.parseInt(this.num2) //VM中引用自己数据对象里的变量时,要用this
            }
        }
    });
</script>
</html>

3.2 v-if, v-for

用法及解释参看示例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue.js测试程序</title>
</head>
<body>
<div id="app">
    <ul>
        <!--v-for-->
        <!--key为主键,代表元素自身的唯一的属性值-->
        <!--如果是简单数组,就是索引,如果是复杂数组,就是元素自身的唯一属性-->
		<!--结果引用要使用{{xx}}括起来-->
        <li v-for="(item,index) in list" :key="index" v-if="index % 2 == 0">{{index}}--{{item}}</li>
            <!--遍历list数组,item为数组元素,index为索引,key为主键(索引)-->

        <li v-for="(value,key) in user">{{key}}=={{value}}</li>
            <!--遍历单个key value形式的json数据时,使用value和key代表值和键-->

        <li v-for="(item,index) in userlist":key="item.user.uname">
            <!--遍历数组,数组里是key value形式的json数据,item是数组的每个元素,index为索引,key为元素自身的唯一标识,这里选择uname作为主键-->
            <div v-if="item.user.uname == 'coderwhat2'" style="background-color: green">
                <!--如果满足判断,则执行当前模块-->
                {{index}}=={{item.user.uname}}=={{item.user.age}}
            </div>
            <div v-else=""><!--如果v-if判断为false,则执行v-else模块-->
                {{index}}=={{item.user.uname}}=={{item.user.age}}
            </div>
        </li>

    </ul>
</div>
</body>
<script src="vue.min.js"></script>
<script>
    var VM = new Vue({
        el: '#app',
        data: {
            list: [1, 2, 3, 4, 5],
            user: {uname: 'coderwhat', age: 10},
            userlist:[
                {user: {uname: 'coderwhat1', age: 10}},
                {user: {uname: 'coderwhat2', age: 20}}
            ]
        }
    });
</script>
</html>

4. export的两种情况

在vue中,如果我们需要在专门的文件中声明变量和方法,那么就需要使用的文件中导入(全局引用),并且在声明完后需要将变量和方法导出;导出通常有两种方式:exportexport defalut

方式 1 中,使用 export 导出函数和变量,如果我们要导入使用,就需要使用 import { } 来导入的,如果是导入所有的变量和方法,也可以使用 * 代替;
方式 2 中,使用 module.export 导出,这里如果要引用,就需要使用require来引用;
方式 3 中,使用 export default 导出,在一个文件中,export可以有多个,但是 export default 只能有一个,这里如果我们引用,就不再需要使用 { },直接使用 import 即可,但有一点就是导入 export default 中的内容只能一个一个的导入,不能使用 *。

//方式 1,a.js
export function test(a){
	return a + 1;
}
export var b = 1;

import {test as addFunc,b} from a.js;	//引用方法 test(10)
import * as fun from a.js;				//引用方法 fun.test(10)
/*-------------------------------------------------------*/

//方式 2,b.js
module.export = {
	test1:function(c){
		return c + 1;
	}
}

var test = require('./b.js'); 		   //引用方法 test.test1(11);
/*-------------------------------------------------------*/

//方式 3,c.js
export default {
	test2:function(d){
		return d + 1;
	}var e = 3;
}

import test2,e from './c.js';//引用方法 test2(9)

5. vue中的 import 和 require 的区别

两者的使用情况参考 4 中不同 export 情况,使用对应的即可,有一点需要说明的是,import 要写在文件开头,且 import 是编译时期加载,而 require 是运行时加载。

6. vue-router

参看vue-router

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mitays

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

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

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

打赏作者

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

抵扣说明:

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

余额充值