前端基础--Vue2

news2024/12/22 18:35:27

前端技术发展史(了解)

1.前端历史

1.1.静态网页

1990 html

1.2.异步刷新-操作dom

1995 javascript

1.3.动态网站

Asp/jsp(java),php等,后台臃肿

1.4.Ajax成为主流

异步请求

1.5.Html5

被认为是互联网的核心技术之一。HTML产生于1990年,1997年HTML4成为互联网标准,并广泛应用于互联网应用的开发。HTML5是Web中核心语言HTML的规范。

2.Nodejs介绍

2.1.介绍

官方解释:

Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, [1] 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的[脚本语言]

Node.js 的出现吸引了很多前端开发人员开始用 JavaScript 开发服务器代码,其异步编程风格也深受开发人员的喜爱。Node.js 的伟大不仅在于拓展了 JavaScript 在服务器端的无限可能,更重要的是它构建了一个庞大的生态系统。

简单理解:Nodejs是一个JavaScript运行环境,让JavaScript开发服务端代码成为可能

2010年,NPM作为node.js的包管理系统首次发布,开发人员可以遵循Common.js规范来编写Node.js模块,然后发布到NPM上供其他开发人员使用。(类似打造java的开源生态)目前已经是世界最大的包模块管理系统。 NPM相当于java 中的 maven,NPM(管理js插件的)

简单理解:Npm是在Nodejs平台上的js包管理系统,如安装jquery:npm install jquery , 为了方便理解下面有一个对比:

JDK、JRE(java开发、运行平台)Nodejs(JS运行平台)
后端应用开发前端应用开发
Maven:管理jar包NPM:管理JS库
springboot+SSM架构开发项目VUE技术栈,React技术

随后,在node的基础上,涌现出了一大批的前端框架:Angular(MVC->MVVM),Vue(MVVM)等等

2.2.主流前端框架

前端框架三巨头:

  • Vue.js:vue.js以轻量易用著称

  • React.js:vue.js和React.js发展速度最快, 集web前端与app于一身技术

  • AngularJS:AngularJS是曾经的老大。

Nodejs和VUE的安装

vue的安装方式有两种,

  • 手动下载VUE的js库,然后在html中导入JS库进行开发

  • 通过Npm安装VUE的JS库,然后在html中导入使用

第一种方式我们玩其他JS库的时候一直都在用,我们主要使用Npm来安装VUE

1.Nodejs的安装

NPM是Node提供的模块管理工具,可以非常方便的下载安装很多前端框架,包括Jquery、AngularJS、VueJs都有。为了后面学习方便,我们先安装node及NPM工具.

1.1.安装Nodejs

Nodejs自带npm,安装好Nodejs就安装好了npm

  • NodeJs下载:Node.js — Download Node.js®

  • 安装:双击安装,如果是绿色版,直接解压缩,配置环境变量

  • 升级:npm install npm@latest -g [不升级]

  • 测试Node:cmd -> node -v

  • 测试Npm: cmd -> npm -v

  • 淘宝镜像:npm config set registry https://registry.npmmirror.com

1.2.cnpm的使用(可用可不用)

淘宝团队做的国内镜像,因为npm的服务器位于国外可能会影响安装。淘宝镜像与官方同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

  • 安装:命令提示符执行 npm install cnpm -g --registry=https://registry.npm.taobao.org

  • 测试cnpm :cnpm -v

2.VUE的安装

我们在IDEA中创建一个静态项目,通过Terminal来安装VUE

安装vue

使用CDN方式

Vue有两种使用方式,1是使用cdn方式直接引入JS库 ,2.使用Npn安装VUE库,第一种方式如下:

<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

当然也可以手动下载该JS库到本地项目,然后引入JS库

使用NPM安装VUE

  • 使用Terminal初始化 :npm init -y

    改名了是初始化NPM,会在项目中产生一个package.json文件。

  • 安装vue:

    全局安装(不推荐):npm install -g vue

    局部安装(推荐) :npm install vue

    安装成功后VUE的JS库:node_modules/vue/dist/vue.js

[注意] 项目的名称不能使用“vue”,不然会报错

NPM相关命令

全局安装: npm install -g vue(安装工具vue-cli,webpack)
​
局部安装: npm install vue@2.6.10(vue,jquery,仅仅是我们这个项目要用到js库)
​
查看模块: npm list vue
​
卸载模块: npm uninstall vue
​
更新模块: npm update vue
​
运行工程: npm run dev/test/online
​
编译工程: npm run build

注意:

一般来说,js库我们都局部安装就可以了

Vue组件

1. 什么是组件

组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素标签<mycomponent>,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用 vue.js 特性进行了扩展的原生 HTML 元素。

总结:Vue组件是用来完成特定功能的一个自定义的HTML标签 例如:

<body>
    <mytag></mytag>
</body>

注意: mytag就是一个组件, 该组件必须通过Vue为mytag赋予一定的功能

2. 组件的作用

组件是对特定功能代码(html,css,js)的封装, 通过组件的名字可以重复利用该组件中的代码。封装重复利用

3. 组件的分类

组件分为全局组件和局部组件

全局组件:在所有vue实例中(.在它所挂载元素下面有效)有效

局部组件:在自己vue实例中(.在它所挂载元素下面有效)有效

3.1. 全局组件

语法:

Vue.component("自定义标签的名字",{配置对象})

特点:

全局组件可以在任何被挂载的标签中使用.

全局组件的配置对象中必须包含template属性

注意事项:

template中的html必须在一个标签中. 仅且只能有一个根节点

应用场景:

如果该组件的特定功能需要在任何被挂载的标签中使用. 推荐使用全局组件

<div id="app">
    <mycomponent1></mycomponent1>
    <mycomponent2></mycomponent2>
</div>
​
<div id="app1">
    <mycomponent1></mycomponent1>
    <mycomponent2></mycomponent2>
</div>
-------------------------------------------------------------------------------
//定义第一个全局组件
Vue.component("mycomponent1",{
    template : "<h1>这是第一个全局组件</h1>"
})
​
//定义第二个全局组件
var component2Config = {
    template : "<h1>这是第二个全局组件</h1>"
};
Vue.component("mycomponent2",component2Config);
​
var app = new Vue({
    el: "#app",
    data: {
    }
});
​
var app1 = new Vue({
    el: "#app1",
    data: {
    }
});

3.2. 局部组件

语法:

var app = new Vue({
    el: "#app",
    data: {},
    components : {
        "局部组件的名字1" : {组件的配置对象},
        "局部组件的名字2" : {组件的配置对象}
    }
  });

特点:

局部组件只能够在所挂载的标签中使用

<div id="app1">
    <mycomponent></mycomponent>
</div>
<div id="app2">
    <mycomponent></mycomponent>
</div>
​
​
//>>1. 在id=app1挂载的实例的components中定义局部组件
var app1 = new Vue({
    el: "#app1",
    data: {},
    components : {
        "mycomponent" : {
            template : "<h1>这是一个局部组件</h1>"
        }
    }
});
​
//>>2. 在id=app2的标签中是不能够使用上面app2对象的局部组件.
var app2 = new Vue({    
    el: "#app2",
    data: {}
});

4. 组件使用两种HTML模板

两种方式:

  1. 直接在template属性写上html代码字符串或者变量指定

<!--
<template id="mytemplate">
    <h1>template标签中的html</h1>
</template>
​
<script type="text/template" id="mytemplate">
    <h1>template标签中的html</h1>
</script>
-->

  1. 将当前网页中的html标签作为模板代码 (大量的HTML不用拼装HTML字符串) a. 在网页中定义template标签或者script标签包含模板中需要的html模板代码

<!--
"mycomponent2":{
      template: "#mytemplate" ,  #代表找到对应的html代码作为当前组件的模板代码
}
-->

代码:

<div id="app4">
    <mycomponent4></mycomponent4>
</div>
​
<!--   <template id="mytemplate">
       <h1>template标签中的html</h1>
   </template-->>
<script type="text/template" id="mytemplate">
    <h1>template标签中的htmlssssssssssssssss</h1>
</script>
​
<script type="text/javascript">
    var app4 =  new Vue({
        el:"#app4",
        components:{
            "mycomponent4":{
                template:"#mytemplate"
            }
        }
    });
</script>

5. 组件中的数据必须是函数

组件中数据的定义 语法:

"组件的名字":{
    template: "",
    data : function(){
        return {
          键1:值1,
          键2:值2
        }
    }
}

注意事项:

  • data数据只能够以函数的形式返回,因为函数中可以写其他的业务代码

  • 只能够在各自的组件模板中使用各自的组件中的data数据

  • Vue对象中的数据不能够在组件中使用. 组件的数据也不能够在挂载的html标签上使用.

components:{
    "mycomponent1":{
        // "template":"#templateStr1"
        "template":"#templateStr2",
            //模板是定义数据以下是可行的
            //1 必须是函数
            //2 通过return返回数据对象
            //3 如果有多个数据就是对象对象多个属性及值
            data(){
                return {
                    messaage:"jjjj",
                    yhptest:"xxxxxxxxxxxxxx"
                }
        }
    }
}

测试代码:

<body>
​
    <div id="app">
        <mycomponent></mycomponent>
    </div>
    <template id="mytemplate">
        <form method="post">
            {{name1}}:<input type="text" /> <br>
            密码:<input type="password" /><br>
            <input type="button" @click="login" value="登录" />
        </form>
    </template>
​
<script type="text/javascript">
​
   var mytabConfig = {
       template:"#mytemplate",
       data(){
           return {"name1":"xxxx"}
       }
   }
   Vue.component("mycomponent",mytabConfig);
   var app = new Vue({
       el: "#app",
       data: {
       }
​
   });
​
</script>
</body>

路由Vue-router(必须搞定)

1. 什么是路由

路由是负责将进入的浏览器请求映射到特定的组件代码中。即决定了由谁(组件)去响应客户端请求。简单说路由就是url地址和对应的资源的映射,通过一个路径的url地址,可以唯一找到一个资源。路由不包含在vue中,是一个插件,需要单独下载。

官方地址:Vue Router | Vue.js 的官方路由

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌

地址:https://unpkg.com/vue-router@3.0.1/dist/vue-router.js

我们访问不同地址要有不同组件响应,需要对url和对应的组件做路由映射。 Vue Router 是 Vue.js 官方的路由管理器

npm install vue-router@3.0.1

2. 路由入门

在js中定义路由;

<script src="node_modules/vue-router/dist/vue-router.js"></script>

挂载到一个dom元素上,使用路由。定义路由出口

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>10_vue路由.html</title>
    <script src="node_modules/vue/dist/vue.js" type="text/javascript"></script>
    <script src="node_modules/vue-router/dist/vue-router.js" type="text/javascript"></script>
</head>
<body>
​
    <!--
    步骤分析:
       1 下载vue-router npm i vue-router@3.0.1
       2 导入进入  <script src="node_modules/vue-router/dist/vue-router.js">
       3 定义路由
          3.1 定义路由所需要组件
          3.2 定义路由规则-哪个地址跳转到哪个组件
          3.3 通过路由规则创建路由对象
       4 把路由对象挂载到vue实例
       5 显示
         5.1 定义显示区域
         5.2 超链接跳转-通过超链接地址和路由规则可以找到组件,把组件渲染到显示区域
     -->
    <div id="myDiv">
        <!--5.2 超链接跳转-->
        <router-link to="/index">首页</router-link>
        <router-link to="/product">产品</router-link>
        <router-link to="/about">关于我们</router-link>
        <!--5.1 定义显示区域-->
        <router-view></router-view>
    </div>
    <script  type="text/javascript">
        // 3.1 定义路由所需要组件
        let index = Vue.component("index",{
            template:"<h3 style='color: red' onclick='alert(1)'>index</h3>"
        })
        let product = Vue.component("product",{
            template:"<h3 style='color: pink' onclick='alert(3)'>product</h3>"
        })
        let about = Vue.component("about",{
            template:"<h3 style='color: yellow' onclick='alert(2)'>about</h3>"
        })
        //3.2 定义路由规则-哪个地址跳转到哪个组件
        const routes = [
            {path:"/index",component:index},
            {path:"/product",component:product},
            {path:"/about",component:about}
        ]
​
        //3.3 通过路由规则定义路由
        const  router = new VueRouter({
            //routes:routes
            routes //等价于上面那一句,根据同名原则匹配
        })
​
​
        new Vue({
            el:"#myDiv",
            data:{
            },
            methods:{
            },
            //4 把路由挂载到vue实例
            //router:router
            router //等价于上面那一句,根据同名原则匹配
        });
    </script>
​
</body>
</html>

写在最后:Vue是当前主流的前端开发框架,这篇文章对vue进行了简单介绍,希望能够给大家带来帮助。

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

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

相关文章

2021年12月电子学会青少年软件编程 中小学生Python编程等级考试三级真题解析(选择题)

2021年12月Python编程等级考试三级真题解析 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、小明在学习计算机时&#xff0c;学习到了一个十六进制数101,这个十六进制数对应的十进制数的数值是 A、65 B、66 C、256 D、257 答案&#xff…

算法08 广/宽度优先搜索及相关问题详解

这是《C算法宝典》算法篇的第08节文章啦~ 如果你之前没有太多C基础&#xff0c;请点击&#x1f449;专栏&#xff1a;C语法入门&#xff0c;如果你C语法基础已经炉火纯青&#xff0c;则可以进阶算法&#x1f449;专栏&#xff1a;算法知识和数据结构&#x1f449;专栏&#xff…

【LeetCode】八、堆的使用:第K个最大元素 + 前K和高频单词

文章目录 1、Java中的堆结构2、leetcode215&#xff1a;数组中的第K个最大元素3、leetcode692&#xff1a;前K个高频单词 1、Java中的堆结构 PriorityQueue类取堆顶元素删除堆顶元素堆的元素个数遍历堆 2、leetcode215&#xff1a;数组中的第K个最大元素 这题应该快排来解&…

2024年6月27日 (周四) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 喜马拉雅下载工具: 字面意思 Steam国产“类8番”游戏《永恒逃脱&#xff1a;暗影城堡》…

Elasticsearch8.x聚合查询全面指南:从理论到实战

聚合查询的概念 聚合查询&#xff08;Aggregation Queries&#xff09;是Elasticsearch中用于数据汇总和分析的查询类型。它不同于普通的查询&#xff0c;而是用于执行各种聚合操作&#xff0c;如计数、求和、平均值、最小值、最大值、分组等。 聚合查询的分类 分桶聚合&…

web端使用HTML5开发《贪吃蛇》小游戏教程【附源码】

自制游戏列表 1植物大战僵尸自制HTML5游戏《植物大战僵尸》2开心消消乐自制HTML5游戏《开心消消乐》3贪吃蛇自制HTML5游戏《贪吃蛇》4捕鱼达人自制HTML5游戏《捕鱼达人》 一、游戏简介 贪吃蛇是一款经典的电子游戏&#xff0c;最早在1976年由Gremlin公司推出&#xff0c;…

牛筋面,一口难忘的劲道滋味

在众多的平凉美食中&#xff0c;牛筋面以其独特的口感和丰富的口味&#xff0c;赢得了无数食客的喜爱。牛筋面&#xff0c;这一名字就给人一种坚韧、有嚼劲的印象。它并非由牛筋制成&#xff0c;而是因其面条的口感如牛筋般劲道而得名。牛筋面的制作过程颇具巧思。选用优质的面…

Unity免费领高级可视化编程自定义节点工具AI行为UI流程对话树状态机逻辑等FlowReactor价值50刀high level20240627

刚发现一款类似虚幻蓝图的可视化编程工具&#xff0c;原价50刀&#xff0c;现在免费领取了。赶紧去领取入库&#xff0c;防止作者涨价。 高级可视化编程自定义节点工具&#xff1a;https://prf.hn/l/BJbdvnD 作者其他资产&#xff1a;https://prf.hn/l/YLAYznV Unity免费领高级…

电脑提示msvcr120.dll丢失怎样修复

文件功能与重要性&#xff1a;msvcr120.dll 文件的功能和重要性体现在多个方面&#xff0c;以下是对其核心功能的详细分析&#xff1a; 运行时支持 msvcr120.dll 提供了运行时环境&#xff0c;使得使用 Microsoft Visual C 2013 编译的程序能够调用必要的运行时函数。这些函数…

MySQL高级-索引-使用规则-覆盖索引回表查询

文章目录 1、覆盖索引1.1、查看索引1.2、删除单列索引 idx_user_pro1.3、查询 profession软件工程 and age31 and status01.4、执行计划 profession软件工程 and age31 and status01.5、执行计划 select id,profession,age,status1.6、执行计划 select id,profession,age,statu…

step7:“模拟量界面”逻辑

文章目录 文章介绍效果图AnalogPage.qml结构图调用 SerialPortHandler.sendData(message); serialporthandler.cpp 文章介绍 之前的6步实现了案例MF的界面设计和串口界面的逻辑设计&#xff0c;本文将实现模拟量界面的逻辑设计 新增功能&#xff1a; 1&#xff09;弹出提示框 …

Mac14.1.2 M1芯片免费读写ntfs硬盘-亲测有效,免费!!!

1. 安装homebrew 打开终端&#xff0c;使用以下命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 根据提示逐步完成即可&#xff0c;镜像选择我这里都是保持1的选项。 2. 重启终端 安装完成homebrew后&#xff0c;需…

Java线程池及面试题

1.线程池介绍 顾名思义&#xff0c;线程池就是管理一系列线程的资源池&#xff0c;其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 总结一下使用线程池的好处&#xff1a; 降低资源消耗。通过重复利用已创建的…

第 1 章SwiftUI 简介

在 2019 年的 WWDC 上,Apple 宣布推出一款名为 SwiftUI 的全新框架,令开发者们大吃一惊。该框架不仅改变了开发 iOS 应用的方式,还代表了自 Swift 首次亮相以来 Apple 开发者生态系统最重大的转变。SwiftUI 适用于所有 Apple 平台,包括 iPadOS、macOS、tvOS 和 watchOS,这…

ZSWatch 开源项目介绍

前言 因为时不时逛 GitHub 会发现一些比较不错的开源项目&#xff0c;突发奇想想做一个专题&#xff0c;专门记录开源项目&#xff0c;内容不限于组件、框架以及 DIY 作品&#xff0c;希望能坚持下去&#xff0c;与此同时&#xff0c;也会选取其中的开源项目做专题分析。希望这…

【GD32】08 - IIC(以SHT20为例)

GD32中的IIC 今天来了解一下GD32中的硬件IIC&#xff0c;其实我个人是觉得软件IIC比较方便的&#xff0c;不过之前文章里用的都是软件IIC&#xff0c;今天就算是走出自己的舒适圈&#xff0c;我们来了解了解GD32中的硬件IIC。 我这里用的型号是GD32F407&#xff0c;不同型号的…

多路h265监控录放开发-(14)通过PaintCell自定义日历控件继承QCalendarWidget的XCalendar类

首先创建一个新类XCalendar继承QCalendarWidget类&#xff0c;然后在UI视图设计器中把日历提升为XCalendar&#xff0c;通过这个函数自己设置日历的样式 xcalendar.h #pragma once #include <QCalendarWidget> class XCalendar :public QCalendarWidget { public:XCal…

Java基础(四)——字符串、StringBuffer、StringBuilder、StringJoiner

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

C++编程(四)this指针 常函数 常对象 静态成员

文章目录 一、this指针&#xff08;一&#xff09;概念&#xff08;二&#xff09;显式使用this指针的场景1. 当形参和成员变量名一致时2. 返回对象自身的时候必须要使用this指针3. 在类中销毁一个对象 二、常函数和常对象&#xff08;一&#xff09;常函数1. 概念2. 语法格式 …

Linux Static calls机制

文章目录 前言一、简介二、Background: indirect calls, Spectre, and retpolines2.1 Indirect calls2.2 Spectre (v2)2.3 RetpolinesConsequences 2.4 Static callsHow it works 三、其他参考资料 前言 Linux内核5.10内核版本引入新特性&#xff1a;Static calls。 Static c…