JavaScript

JavaScript

  • 作用: 给页面添加动态效果

  • 语言特点:

    • 属于脚本语言,不需要编译,直接由浏览器解析执行
    • 属于弱类型语言
    • 基于面向对象的语言
    • 安全性强: JS语言只允许访问浏览器内部的数据,浏览器以外的数据禁止访问.
    • 交互性强: 因为JS语言是嵌入到HTML页面中 直接和用户面对面进行交互.
  • 编程语言包括: 变量,数据类型,运算符,各种语句,方法,面向对象

变量

  • JS语言属于弱类型语言, 声明变量的时候不需要指定类型

  • 通过let或var关键字声明变量

    • let声明的变量作用域和java语言类型

    • var声明的变量 作用域相当于java中的全局变量,可以在页面中任何地方调用

    • 举例:

      • java:
        
        for(int i=0;i<10;i++){
        	int j=i+1;
        }
        int x = i+j;   //i和j都超出了作用域 编译报错 
        JavaScript:
        
        for(let i=0;i<10;i++){
        	let j=i+1;	    
        }
        let x = i+j;  //不报错 但是访问不到i和j 因为超出了作用域
        
        for(var i=0;i<10;i++){
        	var j=i+1;	    
        }
        var x = i+j;   //不报错 并且可以访问i和j的值 
        

数据类型

  • JS语言中只有对象类型
  • 常见的对象类型:
    • string字符串: 可以用单引号或双引号修饰 “abc” ‘abc’
    • number数值: 相当于Java中所有数值类型的总和
    • boolean布尔值: true和false
    • undefined未定义: 当变量只声明不赋值的时候,变量为未定义类型
  • 获取变量类型的方式: typeof 变量;

运算符

  • 算术运算符: + - * / %
    • JS 除法运算会自动根据结果转成整数或小数
      • java: int x =5 ; int y =2; int z = x/y; z=2
      • JS ; let x = 5; let y = 2; let z = x/y; z=2.5 x=6 z=3
  • 关系运算符: > < >= <= != 和==, “===”
    • ==: 先统一等号两边变量的类型 再比较值, “666”==666 true
    • ===: 先比较类型, 类型相同之后再比较值, “666”===666 false
  • 逻辑运算符: && || ! 只支持短路与和短路或
  • 赋值运算符: = += -= *= /= %=
  • 三目运算符: 条件?值1:值2

各种语句

  • if else
  • for
  • while
  • switch case

如何在html页面中添加JS代码

  • 和CSS一样有三种引入方式:
    • 内联: 在标签的事件属性中添加js代码, 当事件触发时执行
      • 事件: 系统给提供的一系列时间点
      • 点击事件: 当用户点击某个元素时触发的时间点
    • 内部: 在html页面中的任意位置添加script标签,在标签体内写js代码
    • 外部: 在单独的JS文件中写JS代码, 在html页面中通过script标签引入并执行

方法

  • Java: public 返回值类型 方法名(参数列表){方法体}

  • JS: function 方法名(参数列表){方法体}

  • 常见的四种方法:

    • 无参无返回值
    • 有参无返回值
    • 无参有返回值
    • 有参有返回值
  • JS中三种定义方法的方式:

    • function 方法名(参数列表){方法体}
    • let 方法名 = function(参数列表){方法体}
    • let 方法名 = new Function(“参数1”,“参数2”…,“方法体”);

NaN

  • Not a Number: 不是一个数 , NaN和任何数值进行任何运算得到的结果都是NaN
  • JavaScript中进行减乘除运算时会自动将变量转成数值类型,如果不是数值则会转成NaN
  • isNaN(变量) 判断变量是否是NaN 返回值为布尔值 true代表是NaN false不是NaN

和页面相关的方法

  • 通过选择器查找页面中的元素对象

    let 元素对象 = document.querySelector(“选择器”);

  • 获取或修改元素的文本内容

    元素对象.innerText = “xxx”; 修改元素的文本内容

    元素对象.innerText 获取元素的文本内容

  • 获取或修改控件的值 (控件:文本框,密码框,单选,多选,下拉选等)

    控件对象.value=“xxxx”; 修改控件的值

    控件对象.value 获取控件的值

JavaScript中对象分类

  • 内置对象: number,string,boolean等
  • BOM: Browser Object Model 浏览器对象模型, 包含和浏览器相关的内容
  • DOM: Document Object Model 文档对象模型, 包含和页面相关的内容

BOM浏览器对象模型

  • window对象: 该对象中的属性和方法称为全局属性和全局方法, 访问的时候可以省略掉window.

  • window对象中常见方法:

    • isNaN() 判断变量是否是NaN
    • parseInt() 将字符串或小数转成整数 “28.5”->28 28.5->28
    • parseFloat() 将字符串转成整数或小数 “25”->25 “25.8”->25.8
    • alert(“xxx”) 弹出提示框
    • confirm(“xxx”) 弹出确认框
    • prompt(“xxx”) 弹出文本框
    • let timer = setInterval(方法,时间间隔) 开启定时器
    • clearInterval(timer); 停止定时器
    • setTimeout(方法,时间间隔); 开启只执行一次的定时器
  • window对象中常用的属性

    • location 位置
      • location.href 获取或修改浏览器的请求地址
      • location.reload(); 浏览器重新加载(刷新)
    • history 历史
      • history.length 得到历史页面数量
      • history.back(); 返回上一页面
      • history.forward(); 前往下一页面

DOM文档对象模型

  • 包含页面相关的内容
  1. 通过选择器查找页面中的元素对象

    let 元素对象 = document.querySelector(“选择器”);

  2. 获取或修改元素的文本内容

    元素对象.innerText = “xxx”; 修改元素的文本内容

    元素对象.innerText 获取元素的文本内容

  3. 获取或修改控件的值 (控件:文本框,密码框,单选,多选,下拉选等)

    控件对象.value=“xxxx”; 修改控件的值

    控件对象.value 获取控件的值

  4. 创建元素对象的方法

    let 变量 = document.createElement(“标签名”);

  5. 添加到某一个元素里面

    元素对象.append(新元素)

  6. 获取页面中body的方式

    document.body

前端M,V,C设计模式

  • MVC设计模式是将实现一个前端业务功能的所有代码划分为三部分

  • Model: 模型, 指数据模型, 对应的代码是和数据相关的代码

  • View: 视图, 指页面相关代码, 对应的是页面中标签相关的代码

  • Controller:控制器, 把Model显示到View中的过程代码称为控制器

  • 前端MVC设计模式中, 在Controller部分将数据显示到页面中,需要频繁的进行DOM相关操作(查找元素/创建元素等), 浪费资源, 前端的MVVM设计模式可以解决此问题

前端M,V,VM设计模式

  • MVVM设计模式是将实现一个前端业务功能的所有代码划分为三部分
  • Model: 模型, 指数据模型, 对应的代码是和数据相关的代码
  • View: 视图, 指页面相关代码, 对应的是页面中标签相关的代码
  • VM:ViewModel视图模型, 赋值将页面中可能发生改变的元素和某一个变量在内存中进行绑定,并且会不断地监听变量值的改变, 当变量的值发生改变时,可以直接从内存中的对应关系里面找到对应的页面元素, 这样就不用每次遍历查找元素了

VUE

  • VUE是目前最流行的前端框架, 基于MVVM设计模式

  • VUE框架两种用法:

    • 多页面应用, 在html页面中引入vue.js框架文件
    • 单页面应用,通过脚手架的方式使用VUE框架
  • 如何引入vue.js框架文件?

    • 两种方式:

      • 从CDN服务器引入框架文件

        准备框架的网址:

        • Staticfile CDN(国内) : https://cdn.staticfile.org/vue/2.2.2/vue.min.js

        • unpkg:https://unpkg.com/vue@2.6.14/dist/vue.min.js

        • cdnjs : https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.8/vue.min.js

        在这里插入图片描述

      • 把框架文件下载到本地后再引入

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ici6JXvE-1669984157231)(image-20221202142445239.png)]

测试Vue是否成功

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
  <h1>{{info}}</h1>
</div>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
  /*Vue对象相当于是MVVM设计模式中的VM视图模型
  * 该对象负责将页面中的元素和某个变量进行绑定,并且Vue会在内存中不断监听着
  * 变量值的改变,当变量值发生改变时Vue框架会自动找到页面中的元素
  * 让其跟着发生改变*/
let v = new Vue({
  el:"body>div",  //element元素, 写一个选择器用来设置Vue框架的管理范围
  data:{ //data里面定义和页面相关的变量,定义完之后Vue会对变量进行监听
    info:"Hello Vue!"
  }
})
</script>
</body>
</html>

安装Vue插件-提示代码

File->Settings->Plugins

在这里插入图片描述

Vue相关指令

{{变量}}: 插值,

让当前位置的文本内容和变量进行绑定

v-text=“变量”;

让元素的文本内容和变量进行绑定

v-html=“变量”;

让元素的标签内容和变量进行绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <!--{{变量}}插值,让当前位置的文本内容和变量进行绑定-->
    {{info}}
    <p>{{info}}</p>
    <!--v-text="变量" 让元素的文本内容和变量进行绑定-->
    <p v-text="info"></p>
    <!--v-html="变量" 让元素的标签内容和变量进行绑定-->
    <p v-html="info"></p>
</div>
<!--从本地引入vue.js框架文件-->
<script src="js/vue.min.js"></script>
<script>
    let v = new Vue({
        el: "body>div",
        data: {
            info: "文本相关指令测试<b>加粗标签</b>"
        }
    })
</script>
</body>
</html>

v-bind:属性和变量绑定

v-bind: 属性名=“变量”; :属性名=“变量”; 让元素的某个属性的值和变量进行绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    {{msg}}
    <!--:属性名="变量" 让某个属性的值和变量进行绑定-->
    <input type="text" :value="msg">
    <!--属性绑定的复杂写法,如果没有安装vue插件会报错,
    在错误上面alt+回车进行修复-->
    <input type="text" v-bind:value="msg">
    <a :href="url">超链接</a>
    <img :src="imgUrl" alt="">
</div>
<script src="js/vue.min.js"></script>
<script>
    let v = new Vue({
        el: "body>div",
        data: {
            msg: "属性绑定测试",
            url:"http://www.baidu.com",
            imgUrl:"a.jpg"
        }
    })
</script>
</body>
</html>

v-model:双向绑定

v-model=“变量”; 让控件的值和变量进行双向绑定,
双向绑定: 控件的值和变量进行绑定, 变量发生改变时控件的值跟着变, 同时控件的值发生改变时变量也会跟这变

v-on: 添加点击事件

v-on:事件名=“方法”; 简写: @事件名=“方法”; 让元素的某个事件和Vue中的方法进行绑定

猜数字练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <input type="text" v-model="num" placeholder="请输入1-100之间的整数">
    <input type="button" value="猜一猜" @click="f()">
    <h1>{{result}}</h1>
</div>
<script src="js/vue.min.js"></script>
<script>
    //得到1-100之间的随机整数
    let x = parseInt(Math.random()*100)+1;

    let v = new Vue({
        el: "body>div",
        data: {
            result: "",
            num: ""
        },
        methods: {
            f() {
                if (v.num>x){
                    v.result="猜大了!";
                }else if(v.num<x){
                    v.result="猜小了!";
                }else{
                    v.result="恭喜你猜对了!";
                }
            }
        }
    })
</script>
</body>
</html>

v-for=“变量 in 数组”; 循环遍历指令,

遍历的同时生成当前元素, 用法类似于Java的新循环

v-if=“变量” ; 让元素是否显示和变量进行绑定, true显示, false不显示(删除元素)

v-else 让元素的显示状态和上面v-if的状态取反

v-show=“变量”;让元素是否显示和变量进行绑定, true显示, false不显示(隐藏元素)

ElementUI框架

官网地址: element.eleme.cn或者输入https://element.eleme.cn/#/zh-CN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值