锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

4-Vue-了解

时间:2022-12-25 08:30:00 c2对边槽型传感器

文章目录

  • VUE笔记
    • Vue概述:
    • 前端知识系统
    • 前端三要素
    • 结构层(HTML)
    • 表现层(CSS)
      • 行为层(JavaScript)
    • TypeScript
    • JavaScript框架
      • UI框架
    • 三端合一
      • 混合开发(Hybid App)
    • 第一个Vue程序
      • Vue
      • MVVM模型的实现者
    • 为什么要用?Vue.js
    • 什么是MVVM?
      • 双向数据绑定是什么?
      • 为什么要实现数据的双向绑定?
      • 用双向数据绑定表单
    • 第一个Vue组件
      • 什么是组件
      • 为什么要用?Axios
    • Vue的生命周期
      • 计算属性是什么?(VUE相比Angular和React的特性)
      • 内容分发
    • vue-cli
    • 安装 vue-cli
    • 第一个 vue-cli 应用程序
    • Webpack
    • 什么是Webpack
    • 什么是Webpack
      • webpack demo
      • vue-router
      • vue-router demo实例
      • vue elementUI实战
      • 路由嵌套
      • 参数传递
      • 组件重定向
      • 路由模式与 404
      • 路由钩和异步要求
      • 在钩子函数中使用异步请求

VUE笔记

Vue概述:

Vue (读音/vju/, 类似于view)构建用户界面用户界面的一套渐进式框架,2014年2月发布。与其它大型框架不同,Vue可自底向上逐层设计。Vue核心库只关注视图层,不仅容易上手,还容易与第三方库(如: vue-router: 跳转,vue-resource: 通信,vuex:管理)或整合现有项目。

前端知识系统

想成为真正的互联网Java全栈工程师还有很长的路要走,其中我的大前端是必修课。这门课的主要目的是带领我Java为了实现互联网Java全栈工程师再向前迈进一步。

前端三要素

●HTML (结构) :超文本标记语言(Hyper Text Markup Language) ,决定网页的结构和内容
●CSS (表现) :层叠样式表(Cascading Style sheets) ,设置网页的表现风格
●JavaScript (行为) :它是一种弱型脚本语言,其源代码不需要编译,而是由浏览器解释来控制网页的行为

结构层(HTML)

表现层(CSS)

CSS层叠样式表是标记语言,不是编程语言,所以不能定制变量,不能引用,换句话说,没有语法支持,其主要缺陷如下:
●语法不够强大,比如不能嵌套写作,导致模块化开发中需要写很多重复的选择器;
●没有变量和合理的风格重用机制,逻辑相关属性值必须以字面量的形式重复输出,难以维护;
这导致我们在工作中无缘无故地增加了很多工作量。为了解决这个问题,前端开发人员将使用一个名称[CSS提供预处理器的工具CSS缺失的风格层重用机制,减少冗余代码,提高风格代码的可维护性。大大提高了前端风格的开发效率。(例如,当页面有不同的需求时,淘宝的双11和618风格就会有所不同)

CSS预处理器
?CSS预处理器定义了一种新的语言,其基本思想是,使用特殊的编程语言CSS增加一些编程特性,将CSS开发生成文件的目标,然后开发者使用这种语言CSS的编码工作。转化成通俗易懂的话来说就是“用一种专门的编程语言,进行Web页面样式设计,然后通过编译器转换为正常CSS项目使用文件
常用的CSS什么是预处理器?
●**SASS:基于Ruby,通过服务端处理,功能强大。分析效率高。需要学习Ruby语言比起步难LESS。
LESS:**基于NodeJS,通过客户端处理,使用简单。SASS简单,分析效率低于SASS,但在实际开发中就足够了,所以如果需要我们的后台人员,建议使用LESS。

行为层(JavaScript)

JavaScript一种弱型脚本语言,其源代码在发送到客户端之前不需要编译,而是将文本格式的字符代码发送给浏览器,由浏览器解释。
?Native原生JS开发
?原生JS开发就是让我们遵循[ECMAScript] 标准开发模式,简称ES,特点是支持所有浏览器。截至目前的博客发布时间,ES 标准已发布以下版本:
●ES3
●ES4 (内部,未征式发布)
ES5 (全浏览器支持)
ES6 (常用,当前主流版本: webpack打包成为ES5支持! )
●ES7
●ES8
●ES9 (草案阶段)
区别在于逐渐增加新特性。

TypeScript

TypeScript是微软开发的自由开源编程语言。JavaScript本质上,这种语言增加了可选的静态类型和基于类的面向对象编程。安德斯海尔斯伯格(C#、Delphi、TypeScript 之父; .NET 创始人)主导。
?这种语言的特点是除了具备ES除了许多不在标准范围内的新特性外,许多浏览器无法直接支持它们TypeScript语法需要编译(编译成)JS)浏览器可以正确执行。

JavaScript框架

jQuery: 大家熟知的JavaScript框架,优点是简化DOM缺点是操作DOM操作太频繁,影响前端性能;在前端眼中使用它只是为了兼容;IE6、7、8;
Angular: Google由一群人收购的前端框架Java程序员开发的特点是后台MVC模式搬到了前端并增加了模块化开发的概念,与微软合作,采用TypeScript语法开发;对后台程序员友好,对前端程序员不友好;最大的缺点是版本迭代不合理(如: 1代-> 2代,除了名字,基本就是两个东西;截止发表博客时已推出了Angular6)
React: Facebook高性能产品JS前端框架的特点是提出了新概念**[虚拟DOM]用于减少真实DOM操作**,模拟内存DOM操作有效提高了前端渲染效率;缺点是使用复杂,因为需要额外学习**[JSX]** 语言;
Vue:一款渐进式JavaScript框架,所谓渐进式,就是逐步实现模块化开发、路由、状态管理等新特性。特点是全面的Angular (模块化)和React (虚拟DOM)的优点;
Axios :因为Vue 边界非常清晰,只是为了处理DOM,所以没有通信能
此时,需要使用额外的通信框架与服务器交互;当然也可以直接使用jQuery提供的AJAX通信功能;
前三个框架:Angular、React、Vue

UI框架

●Ant-Design:阿里巴巴出品,基于React的UI框架
ElementUI、 iview、 ice: 饿了么出品,基于Vue的UI框架
●Bootstrap: Twitter推出的一个用于前端开发的开源工具包
●AmazeUI:又叫"妹子UI",一款HTML5跨屏前端框架.
JavaScript 构建工具
●Babel: JS编译工具,主要用于浏览器不支持的ES新特性,比如用于编译TypeScript
●WebPack: 模块打包器,主要作用是打包、压缩、合并及按序加载
注:以上知识点将WebApp开发所需技能全部梳理完毕

三端合一

混合开发(Hybid App)

主要目的是实现一套代码三端统一(PC、Android:.apk、iOS:.ipa )并能备够调用到底层件(如:传感器、GPS、 摄像头等),打包方式主要有以下两种:
●云打包: HBuild -> HBuildX, DCloud出品; API Cloud
●本地打包: Cordova (前身是PhoneGap)
后端技术
 前端人员为了方便开发也需要掌握一定的后端技术, 但我们Java后台人员知道后台知识体系极其庞大复杂,所以为了方便前端人员开发后台应用,就出现了NodeJS这样的技术。
 NodeJS的作者已经声称放弃NodeJS (说是架构做的不好再加上笨重的node_ modules,可能让作者不爽了吧),开始开发全新架构的Deno
 既然是后台技术,那肯定也需要框架和项目管理工具,NodeJS 框架及项目管理工具如下:
●Express: NodeJS框架
●Koa: Express简化版
●NPM:项目综合管理工具,类似于Maven
●YARN: NPM的替代方案,类似于Maven和Gradle的关系

第一个Vue程序

Vue

Vue (读音/vju/, 类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库(如: vue-router, vue-resource, vuex)或既有项目整合。

MVVM模式的实现者

●Model:模型层,在这里表示JavaScript对象
●View:视图层,在这里表示DOM (HTML操作的元素)
●ViewModel:连接视图和数据的中间件,Vue.js就是MVVM中的ViewModel层的实现者
在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而
ViewModel就是定义了一个Observer观察者
●ViewModel能够观察到数据的变化,并对视图对应的内容进行更新
●ViewModel能够监听到视图的变化,并能够通知数据发生改变
至此,我们就明白了,Vue.js 就是一个MVVM的实现者,他的核心就是实现了DOM监听与数据绑定

为什么要使用Vue.js

●轻量级,体积小是一个重要指标。Vue.js 压缩后有只有20多kb (Angular 压缩后56kb+ ,
React压缩后44kb+ )
●移动优先。更适合移动端,比如移动端的Touch事件
●易上手,学习曲线平稳,文档齐全
吸取了Angular (模块化)和React (虚拟DOM)的长处,并拥有自己独特的功能,如:计算属性
●开源,社区活跃度高

代码 demo1.html 初入门之绑定数据

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
head>
<body>
<div id="app">
    {
    
        {message}}
div>
<script> let vm = new Vue({ 
            el: "#app", data: { 
            message: "hello,vue" } }); script>
body>
html>

什么是MVVM?

MVVM (Model-View-ViewModel) 是一种软件架构设计模式,由微软WPF (用于替代
WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight (类似于Java Applet,简单点说就是在浏览器上运行的WPF)的架构师Ken Cooper和Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。由John Gossman (同样也是WPF和Silverlight的架构师)于2005年在他的博客上发表。
MVVM源自于经典的MVC (ModI-View-Controller) 模式。MVVM的核心是ViewModel
层,负责转换Model中的数据对象来让数据变得更容易管理和使用,其作用如下:
●该层向上与视图层进行双向数据绑定
●向下与Model层通过接口请求进行数据交互

MVVM图解
为什么要使用MVVM
MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处
●低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的
View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
●可复用:你可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
●独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
●可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

VUE基础语法学习

代码 demo2.html if else 语法

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
head>
<body>
<div id="app">
    <h1 v-if="ok">Yesh1>
    <h1 v-else>Noh1>
div>
<script> let vm = new Vue({ 
            el: "#app", data: { 
            ok: true } }); script>
body>
html>

代码 demo03.html for循环获取数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--1.导入vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>

<div id="app">
    <li v-for="text in allTexts">
        { 
         { 
         text.message}}
    </li>
</div>
<script>
    let vm = new Vue({ 
         
        el: "#app",
        data: { 
         
            allTexts: [
                { 
         message: "1"},
                { 
         message: "2"},
                { 
         message: "3"},
            ]
        }
    });
</script>
</body>
</html>

代码demo04 事件绑定

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
head>
<body>
<div id="app">
    <button v-on:click="sayHi()">点我button>
div>
<script> let vm = new Vue({ 
            el: "#app", data: { 
            message: "cqh" }, methods: { 
            sayHi: function () { 
            alert(this.message); } } }); script>
body>
html>

什么是双向数据绑定

Vue.js是一个MVVM框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。这也算是Vue.js的精髓之处了。
 值得注意的是,我们所说的数据双向绑定,一定是对于UI控件来说的,非UI控件不会涉及到数据双向绑定。单向数据绑定是使用状态管理工具的前提。如果我们使用vuex,那么数据流也是单项的,这时就会和双向数据绑定有冲突。

为什么要实现数据的双向绑定

在Vue.js 中,如果使用vuex ,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI控件来说,对于我们处理表单,Vue.js的双向数据绑定用起来就特别舒服了。即两者并不互斥,在全局性数据流使用单项,方便跟踪;局部性数据流使用双向,简单易操作。

在表单中使用双向数据绑定

你可以用v-model 指令在表单 、 及 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model本质上不过是语法糖。它负责监听户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
代码 demo05 数据双向绑定示例 实现之后当输入框输入相应文字 在后面提示框会输入相同文字

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
head>
<body>
<div id="app">
    数据双向绑定示例:<input type="text" v-model="message">{
    
        {message}}
div>
<script> let vm = new Vue({ 
            el: "#app", data: { 
            message: "" }, }); script>
body>
html>

第一个Vue组件

什么是组件

组件是可复用的Vue实例,说白了就是一组可以重复使用的模板,跟JSTL的自定义标签、Thymeleaf的th:fragment 等框架有着异曲同工之妙。通常一个应用会以一棵嵌套的组件树的形式来组织:
 注意:在实际开发中,我们并不会用以下方式开发组件,而是采用vue-cli创建.vue模板文件的方式开发,以下方法只是为了让大家理解什么是组件。
Vue.component()方法注册组件

代码 组件练习 demo06

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
head>
<body>
<div id="app">
    <cqh v-for="item in items" v-bind:testComponent="item">cqh>
div>
<script> /*定义一个vue组件*/ Vue.component("cqh", { 
            props: ['testComponent'], template: '
  • { {testComponent}}
  • '
    }); let vm = new Vue({ el: "#app", data: { items: ["Java", "Linux", "前端"] } });
    script> body> html>

    Axios异步通信(通信框架)
     Axios是一个开源的可以用在浏览器端和NodeJS 的异步通信框架,她的主要作用就是实现AJAX异步通信,其功能特点如下:
    ●从浏览器中创建XMLHttpRequests
    ●从node.js创建http请求
    ●支持Promise API [JS中链式编程]
    ●拦截请求和响应
    ●转换请求数据和响应数据
    ●取消请求
    ●自动转换JSON数据
    ●客户端支持防御XSRF (跨站请求伪造)
    GitHub: https://github.com/ axios/axios
    中文文档: http://www.axios-js.com/

    为什么要使用Axios

    由于Vue.js是一个视图层框架且作者(尤雨溪) 严格准守SoC (关注度分离原则),所以Vue.js并不包含AJAX的通信功能,为了解决通信问题,作者单独开发了一个名为vue-resource的插件,不过在进入2.0 版本以后停止了对该插件的维护并推荐了Axios 框架。少用jQuery,因为它操作Dom太频繁!

    Vue的生命周期

    官方文档: https://cn.vuejs.org/v2/guide/instance.html#生 命周期图示
    Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载DOM、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。
    在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册JS方法,可以让我们用自己注册的JS方法控制整个大局,在这些事件响应方法中的this直接指向的是Vue的实例。

    代码 初探axios
    先建立一个data.json

    { 
             
      "name": "cqh",
      "age": "18",
      "sex": "男",
      "url":"https://www.baidu.com",
      "address": { 
             
        "street": "缇香郡",
        "city": "宁波",
        "country": "中国"
      },
      "links": [
        { 
             
          "name": "bilibili",
          "url": "https://www.bilibili.com"
        },
        { 
             
          "name": "baidu",
          "url": "https://www.baidu.com"
        },
        { 
             
          "name": "cqh video",
          "url": "https://www.4399.com"
        }
      ]
    }
    
    

    demo07.html

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
        
        
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
        
        <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js">script>
    
    head>
    <body>
    <div id="app">
        <div>{
        
            {info.name}}div>
        <a v-bind:href="info.url">点我到百度链接a>
    div>
    <script> let vm = new Vue({ 
                el: "#app", //和data: 不同 属性:vm data() { 
                return { 
                info: { 
                name:null, url:null, }, } }, mounted() { 
                //钩子函数 链式编程 ES6新特性 axios.get("../data.json").then(response => (this.info=response.data)); } }); script>
    body>
    html>
    
    

    什么是计算属性?(VUE相比Angular和React的特性)

    计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数;简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化成了静态的属性),仅此而已;可以想象为缓存!
    代码 demo08.html 计算属性了解

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
        
        
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js">script>
    head>
    <body>
    <div id="app">
        <p>c1:{
        
            {getTime()}}p>
        <p>c2:{
        
            {getTime2()}}p>
    div>
    <script> let vm = new Vue({ 
                el: 元器件数据手册IC替代型号,打造电子元器件IC百科大全!
              

    相关文章