JavaWeb开发 —— JavaScript(JS)

news2025/3/13 15:09:32

目录

一、什么是JavaScript ?

 二、引入方式

三、基础语法

1.  书写语法

2.  输出语句

3.  变量

4.  数据类型

5.  运算符

6.  类型转换

四、函数

五、对象

1.  Array数组

2.  String 字符串

3.  JSON

4. BOM

5.  DOM

六、时间监听


一、什么是JavaScript ?

  • JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互。
  • JavaScript和Java是完全不同的语言,不论是概念还是设计。但是基础语法类似。
  • JavaScript在1995年由Brendan Eich发明。并于1997年成为ECMA标准。
  • ECMAScript 6(ES6)是最新的JavaScript版本(发布于2015年)。

ECMA:ECMA国际(前身为欧洲计算机制造商协会),制定了标准化的脚本程序设计语言ECMAScript,这种语言得到广泛应用。而JavaScript是遵守ECMAScript的标准的。

 二、引入方式

① 内部脚本:将JS代码定义在HTML页面中。

  • Javascript代码必须位于<script></script>标签之间
  • 在HTML文档中,可以在任意地方,放置任意数量的<script>
  • 一般会把脚本置于<body>元素的底部,可改善显示速度
<script>
  alter("Hello JS")
</script>

② 外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中。

  • 外部JS文件中,只包含JS代码,不包含<script>标签
  • <script>标签不能自闭合
<script src = "js/demo.js"></script>

<!-- demo.js -->
alter("Hello JS")

三、基础语法

1.  书写语法

① 区分大小写:与Java一样,变量名、函数名以及其他一切东西都是区分大小写的。

② 每行结尾的分号可有可无。
③ 注释:

  • 单行注释:// 注释内容
  • 多行注释:/* 注释内容 */

④ 大括号表示代码块

// 判断
if(count == 3){
   alter(count);
}

2.  输出语句

  • 使用 window.alert() 写入警告框
  • 使用 document.write() 写入HTML输出
  • 使用 console.log() 写入浏览器控制台
<script>
        window.alert("");   //浏览器弹出警告框

        document.write("");    //写入HTML,在浏览器显示

        console.log("");    //写入浏览器控制台
    </script>

3.  变量

JavaScript中用 var 关键字(variable的缩写)来声明变量。

JavaScript是一门弱类型语言,变量可以存放不同类型的值

变量名需要遵循如下规则:

  • 组成字符可以是任何字母、数字、下划线(_)或美元符号($)
  • 数字不能开头
  • 建议使用驼峰命名
 <script>
        // var定义变量
        var a = 10;
        a = "张三";

        alert(a);  //张三

        特点1:作用域比较大,全局变量
        特点2:可以重读定义的
        {
            var x = 1;
            var x = "A";
            alert(x);  //1 -> A
        }
        alert(x);  //1 -> A
    </script>

注意事项:

  • ECMAScript 6新增了 let 关键字来定义变量。它的用法类似于var,但悉所声明的变量,只在let关键字所在的代码块内有效,且不允许重复声明。
  • ECMAScript 6新增了const 关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变。

4.  数据类型

Javascript中分为:原始类型和引用类型。
原始类型:

  • number:数字(整数、小数、NaN(Not a Number))。
  • string:字符串,单双引皆可。
  • boolean:布尔,比如true,false。
  • null:对象为空。
  • undefined:当声明的变量未初始化时,该变量的默认值是undefined。

使用 typeof运算符 可以获取数据类型。

<script>
        // 原始数据类型
        alert(typeof 3); //number
        alert(typeof 3.14);  //number

        alert(typeof "A");  //String
        alert(typeof "Hello");  //String

        alert(typeof true);  //boolean
        alert(typeof false);  //boolean

        alert(typeof null); // null ? -> object

        var a;
        alert(typeof a);  // ? -> undefined
    </script>

5.  运算符

  • 算术运算符:+,-,*,/,%,++,--
  • 赋值运算符:=,+=,-=,*=,l=,%=
  • 比较运算符:>,<, >= ,<= ,!=,==,===(全等运算符)
  • 逻辑运算符:&&,ll,!
  • 三元运算符:条件表达式?  true_value:false_value

注意: == 会进行类型转换, === 不会进行类型转换

<script>
        var age = 20; 
        var _age = "20";
        var $age = 20;

        alert(age == _age);  //true
        alert(age === _age);  //false 
        alert(age === $age);  //true
</script>

6.  类型转换

① 字符串类型转为数字:

  • 将字符串字面值转为数字。如果字面值不是数字,则转为NaN。

② 其他类型转为boolean:

  • Number:0 和 NaN为false,其他均转为true。
  • String:空字符串为false,其他均转为true。
  • Null 和 undefined:均转为false。
<script>
        // 类型转换 - 其他类型转为数字
        alert(parseInt("12"));  //12
        alert(parseInt("12A45"));  //12
        alert(parseInt("A45"));  //NAN

        // 类型转换 - 其他类型转为boolean
        if(0){
            alert("0 转换为false");
        }
        if(NAN){
            alert("NAN 转换为false");
        }
        if(1){
            alert("除0和NAN其他数字都转换为true");
        }

        if(""){
            alert("空字符串为 false ,其他都是true ");
        }

        if(null){
            alert("null 转换为false");
        }
        if(undefined){
            alert("undefined 转换为false");
        }
    </script>

四、函数

① 介绍:函数(方法)是被设计为执行特定任务的代码块。
② 定义:Javascript函数通过 function关键字 进行定义,语法为:

function functionName(参数1,参数2,...){
       //要执行的代码
}

③ 注意:

  • 形式参数不需要类型。因为Javascript是弱类型语言
  • 返回值也不需要定义类型,可以在函数内部直接使用 return返回 即可

④ 调用:函数名称(实际参数列表)

<script>
        //定义函数 方式1
        function add(a,b){
            return a+b;
        }
        //定义函数 方式2
        var add = function(a,b){
            return a+b;
        }
        //函数调用
        var result1 = add(10,20);
        alert(result1);  //30
        var result2 = add(10,20,30,40);
        alert(result2);  //30
    </script>

注意:JS中,函数调用可以传递任意个数的参数。

五、对象

1.  Array数组

① 介绍:Javascript 中Array对象用于定义数组。

② 定义:

  • 方式一:var 变量名 = new Array( 元素列表 ) ;
  • 方式二:var 变量名 = [ 元素列表 ] ;

③ 访问: arr[ 索引 ] = 值 ; 

注意事项:JavaScript 中的数组相当于Java中集合,数组的长度是可变的,而JavaScript 是弱类型,所以可以存储任意的类型的数据。

④ 属性:

属性描述
length设置或返回数组中元素的数量。

⑤ 方法:

方法描述
forEach()遍历数组中的每个有值的元素,并调用一次传入的函数
push()将新元素添加到数组的末尾,并返回新的长度。
splice()从数组中删除元素。
<script>
        var arr = [1,2,3,4];
        arr[10] = 50 ; 
        for (let i = 0; i < array.length; i++) {
            const element = array[i];
        }

        //forEach:遍历数组中有值的元素
          array.forEach(function(e)  {
            console.log(e);
          });  

          //E36 箭头函数: (...) => {...} --简化函数定义
          array.forEach((e) => {
            console.log(e);
          });

        //push:添加元素到数组末尾
        arr.push(7,8,9);
        console.log(arr);

        //splice:删除元素
        arr.splice(2,2);
        console.log(arr);
    </script>

2.  String 字符串

① String字符串对象创建方式有两种:

  • 方式一:var 变量名 = new String(" ... ") ;
  • 方式二:var 变量名 = " .… " ;

② 属性:

属性描述
length字符串的长度

③ 方法:

方法描述
charAt()返回在指定位置的字符。
indexof()检索字符串。
trim()去除字符串两边的空格
substring()提取字符串中两个指定的索引号之间的字符。
<script>
       //创建字符串对象
       var str = new String("Hello JS");
       var str = "Hello js";

       console.log(str);

       //length
       console.log(str.length);

       //charAt
       console.log(str.charAt(4));

       //indexof
       console.log(str.indexOf("lo"));

       //trim
       var s = str.trim();
       console.log(s);

       //substring
       console.log(s.substring(1,5));
    </script>

3.  JSON

① 介绍:

  • 概念:JavaScript Object Notation,JavaScript对象标记法。
  • JSON是通过JavaScript对象标记法书写的文本
  • 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输。

② 定义:var 变量名 = ' { "key1" : value1,"key2" : value2 } ' ;

③ 示例:var userStr = ' { "name" : "Jerry" , "age" : 18 , "addr" : ["北京" , "上海" , "山东"] } ' ;

注意:value的数据类型为:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

④ 调用格式: 对象名 . 属性名 ;

⑤ JSON字符串转为JS对象:var jsObject = JSON . parse(userStr);

⑥ JS对象转为JSON字符串:var jsonStr = JSON.stringify(jsObject);

4. BOM

① 概念:Browser Object Model 浏览器对象模型,允许 JavaScript 与浏览器对话,JavaScript 将浏览器的各个组成部分封装为对象。

② 组成:

  • Window:浏览器窗口对象
  • Navigato:浏览器对象
  • Screen:屏幕对象
  • History:历史记录对象
  • Location:地址栏对象

③ Window 详细内容:

介绍浏览器窗口对象
获取直接使用 window,其中 window. 可以省略。
属性
  • history:对 History对象的只读引用。
  • location:用于窗口或框架的Location对象。
  • navigator:对Navigator对象的只读引用。
方法
  • alert():显示带有一段消息和一个确认按钮的警告框。
  • confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。
  • setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。
  • setTimeout():在指定的毫秒数后调用函数或计算表达式。
<script>
       //获取
       window.alert("Hello JS");
       alert("Hello JS");

       //方法
       //confirm 对话框 : //确认:true  取消:false
       confirm("您确认删除该记录吗?");
       var flag = confirm("您确认删除该记录吗?");
       alert(flag);

       //setInterval 定时器 : 周期性的执行某一个函数
       var i = 0;
       setInterval(function(){
        i++;
        console.log("定时器执行了"+i+"次");
       },2000);

       //setTimeout 定时器 : 延迟指定时间执行一次
       setTimeout(function(){
        alert("JS");
       },3000);
    </script>

④ Location 详细内容:

介绍地址栏对象
获取使用 window.location 获取,其中 window. 可以省略。
属性href:设置或返回完整的URL。
<script> 
     //location
     alert(location.href);
     location.href = "http://www.baidu.com";
</script>

5.  DOM

① 概念:Document Object Model,文档对象模型。

② 将标记语言的各个组成部分封装为对应的对象:

  • Document:整个文档对象
  • Element:元素对象
  • Attribute:属性对象
  • Text:文本对象
  • Comment:注释对象

③ JavaScript 通过 DOM,就能够将HTML进行操作:

  • 改变HTML元素的内容
  • 改变HTML元素的样式(CSS)
  • 对HTML DOM事件作出反应
  • 添加和删除HTML元素

④ 获取元素对象:

  • HTML中的Element对象可以通过 Document对象获取,而Document对象是通过window对象获取的。
  • Document对象中提供了以下获取Element元素对象的函数:
根据id属性值获取,返回单个Element对象
var h1 = document.getElementById('h1');
根据标签名称获取,返回Element对象数组
var divs = document.getElementByTagName('div');
根据name属性值获取,返回Element对象数组
var hobbys = document.getElementByName('hobby');
根据class属性值获取,返回Element对象数组
var class = document.getElementByClassName('cls');

案例:通过DOM操作,完成如下效果实现。

  1. 点亮灯泡
  2. 将所有的div标签的标签体内容后面加上:very good
  3. 使所有的复选框呈现被选中的状态
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
  <img src="img/off.gif" id = "h1"> <br><br>

  <div class=" cls"> JAVA </div> <br>
  <div class="cls"> JavaScript </div> <br>

  <input type="checkbox" name="hobby" > 电影
  <input type="checkbox" name="hobby" > 旅游
  <input type="checkbox" name="hobby" > 游戏
    <script>
       //1.点亮灯泡 : src 属性值
       var img = document.getElementById('h1');
       img.src = "img/on.fig";

       //2.将所有的div标签的标签体内容后面加上: very good
       var divs = document.getElementsByTagName('div');
       for (let i = 0; i < divs.length; i++) {
        const div = divs[i];
          // 红色字体: <font color = ''>
        div.innerHTML += "<font color = 'red'>very good</font>" ;
      
        //3.使所有的复选框呈现被选中的状态
        var hobbys = document.getElementByName('hobby');
        for (let i = 0; i < hobbys.length; i++) {
          const check = hobbys[i];
          check.checked = true;  //选中
        }
       }
    </script>
</body>
</html>

六、时间监听

① 事件:HTML 事件是发生在HTML元素中的 “事情” 。比如:

  • 按钮被点击
  • 鼠标移动到元素上
  • 按下键盘按键

② 事件监听:JavaScript 可以在事件被侦测到时 执行代码

③ 方式:

  • 方式一:通过HTML标签中的事情属性进行绑定。
    <input type="button" onclick="on() " value="按钮1">
    
    <script>
    function on(){
           alert('我被点击了!');
       }
    </script>
    
  • 方式二:通过DOM元素属性绑定。
    <input type="button" id="btn" value="按钮2">
    <script>
         document.getElementById( 'btn ' ).onclick = function(){
                 alert(我被点击了!');
       }
    </script>
    

④  常见事件:

事件名说明
onclick鼠标单击事件
onblur元素失去焦点
onfocus元素获得焦点
onload某个页面或图像被完成加载
onsubmit当表单提交时触发该事件
onkeydown某个键盘的键被按下
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开

案例:通过事件监听及DOM操作,完成如下效果实现。

  1. 点击 “点亮” 按钮点亮灯泡,点击 “熄灭” 按钮熄灭灯泡。
  2. 输入框鼠标聚焦后,展示小写;鼠标离焦后,展示大写。
  3. 点击 “全选” 按钮使所有的复选框呈现被选中的状态,点击 “反选” 按钮使所有的复选框呈现取消勾选的状态。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
  <img src="img/off.gif" id = "light"> <br>

  <input type="button" value="点亮" onclick="on()">
  <input type="button" value="熄灭" onclick="off()">

  <br> <br>

  <input type="text" id="name" 
             value="ITCAST" onfocus="lower()" onblur="upper()">
  <br> <br>

  <input type="checkbox" name="hobby" > 电影
  <input type="checkbox" name="hobby" > 旅游
  <input type="checkbox" name="hobby" > 游戏

  <input type="button" value="全选" onclick="checkAll()">
  <input type="button" value="反选" onclick="reverse()">

    <script>
      //  1.点击 “点亮” 按钮点亮灯泡,点击 “熄灭” 按钮熄灭灯泡。 - onclick
      function on() {
        //  a.获取img元素对象
        var img = document.getElementById("light");
        //  b.设置src属性
        img.src = "img/on.gif";
      }
      function off() {
        //  a.获取img元素对象
        var img = document.getElementById("light");
        //  b.设置src属性
        img.src = "img/off.gif";
      }

      //  2.输入框鼠标聚焦后,展示小写;鼠标离焦后,展示大写。  -- onfocus onblur
      function lower() {
        //  a.获取输入框元素对象
        var input = document.getElementsByName("name");
        //  b.将值转为小写
        input.value = input.value.toLowerCase();
      }
      function upper() {
        //  a.获取输入框元素对象
        var input = document.getElementsByName("name");
        //  b.将值转为大写
        input.value = input.value.toUpperCase();
      }

      //  3.点击 “全选” 按钮使所有的复选框呈现被选中的状态, - onclick
      //    点击 “反选” 按钮使所有的复选框呈现取消勾选的状态。  -onclick
      function checkAll() {
        //  a.获取复选框元素对象
       var hobbys =  document.getElementsByName("hobby");
        //  b.设置选中状态
        for (let i = 0; i < hobbys.length; i++) {
          const element = hobbys[i];
          element.checked = true ;
        }
      }
      function reverse() {
        //  a.获取复选框元素对象
       var hobbys =  document.getElementsByName("hobby");
        //  b.设置未选中状态
        for (let i = 0; i < hobbys.length; i++) {
          const element = hobbys[i];
          element.checked = false ;
      }
    }
    </script>
</body>
</html>

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

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

相关文章

MAE论文笔记+Pytroch实现

Masked Autoencoders Are Scalable Vision Learners&#xff0c; 2021 近期在梳理Transformer在CV领域的相关论文&#xff0c;落脚点在于如何去使用Pytroch实现如ViT和MAE等。通过阅读源码&#xff0c;发现不少论文的源码都直接调用timm来实现ViT。故在此需要简单介绍一下timm…

Vulnhub_Pylington

目录 一、信息收集 &#xff08;一&#xff09;端口服务探测 &#xff08;二&#xff09;目录扫描 二、漏洞挖掘 &#xff08;一&#xff09;robots敏感信息泄露 &#xff08;二&#xff09;python IDE沙箱绕过RCE 1. python敏感函数沙盒绕过 2. exec(__import_…

2.3 连续性随机变量

思维导图&#xff1a; 学习目标&#xff1a; 我会按照以下步骤学习连续型随机变量&#xff1a; 复习概率论的基础知识&#xff0c;包括概率、期望、方差等概念和公式&#xff0c;以及离散型随机变量的概率分布函数和概率质量函数的概念和性质。 学习连续型随机变量的概念和性…

在线文章生成-自动文章生成

文章生成软件 文章生成软件是一种能够自动生成文章的创作工具&#xff0c;可以大幅提高创作效率并节省创作成本。使用文章生成软件可以有效缩短文章的创作时间&#xff0c;尤其是在大批量的文章生产和时间紧迫的情况下&#xff0c;有着重要的作用。以下是文章生成软件可以为我…

初识C++之位图与布隆过滤器

一、位图 1.位图的概念 在了解位图前&#xff0c;先来看这么一道题&#xff1a; 假设给你40亿个没有排序的不重复的无符号整数。再给你一个无符号整数&#xff0c;让你判断这个整数是否在这40亿个数之中。 对于这道题&#xff0c;一般情况下的解法有很多&#xff0c;例如二…

如何利用空号检测 API 降低企业的业务成本

引言 电话营销和短信营销是现代营销活动的重要手段&#xff0c;但是无效号码的存在导致了很多资源浪费。利用空号检测 API 就可以避免企业向无效号码发送营销信息&#xff0c;降低营销成本。 本文将介绍空号检测 API 的工作原理以及如何利用空号检测 API 降低业务成本的多种方…

十分钟教你部署一个属于自己的chatgpt网站

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

( “树” 之 DFS) 543. 二叉树的直径 ——【Leetcode每日一题】

543. 二叉树的直径 给定一棵二叉树&#xff0c;你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意 &#xff1a;两结点之间…

屏幕色彩(一)-已知混色光色点求配色比

文章目录计算公式html源码运行结果计算公式 [WxWyWz][M][RGB]\begin{gather} \begin{bmatrix} W_x\\ W_y\\W_z \end{bmatrix} \begin{bmatrix} M \end{bmatrix} \begin{bmatrix} R\\G\\B \end{bmatrix} \end{gather} ​Wx​Wy​Wz​​​[M​]​RGB​​​​ 其中&#xff0c;Wxw…

STM-32:串口收发数据包—串口收发HEX数据包/串口收发文本数据包

目录一、发送HEX数据包1.1固定包长&#xff0c;含包头包尾&#xff08;包尾不是必须的&#xff09;1.2可变包长&#xff0c;含包头包尾二、接收HEX数据包三、发送文本数据包3.1固定包长&#xff0c;含包头包尾3.2可变包长&#xff0c;含包头包尾四、接收文本数据包五、HEX数据包…

73-Linux_线程安全

线程安全一.什么是线程安全二.strtok和strtok_r1.strtok2.strtok_r三.多线程中执行fork1.多线程中某个线程调用 fork()&#xff0c;子进程会有和父进程相同数量的线程吗&#xff1f;2.父进程被加锁的互斥锁 fork 后在子进程中是否已经加锁 ?一.什么是线程安全 线程安全即就是…

【数据结构】时间复杂度详解

首先我们要知道学习数据结构时都会讨论到算法&#xff0c;数据结构中的问题多数都有算法解决&#xff0c;两者是你中有我&#xff0c;我中有你的关系&#xff0c;所以在数据结构中的学习中算法也是必不可少的。 为方便阅读&#xff0c;以下为本片目录 目录 1.算法效率 1.1 …

JavaScript的学习理解

文章目录一、JavaScript 对象二、JavaScript 函数三、JavaScript 作用域总结一、JavaScript 对象 JavaScript 对象是拥有属性和方法的数据。 真实生活中的对象&#xff0c;属性和方法 在 JavaScript中&#xff0c;几乎所有的事物都是对象。 在 JavaScript 中&#xff0c;对象…

Spring5学习笔记01

一、课程介绍 Spring是什么呢&#xff1f; 它是一个轻量级的、开源的JavaEE框架&#xff0c;它的出现是为了解决企业繁琐的开发包括复杂代码&#xff0c;它可以用很优雅、很简洁的方式进行实现&#xff0c;也就是说它为了简化企业开发而生&#xff0c;而它在目前的企业中应用…

大规模MySQL运维陷阱之基于MyCat的伪分布式架构

引子 分布式数据库&#xff0c;已经进入了全面快速发展阶段&#xff0c;这种发展&#xff0c;是与时俱进的&#xff0c;与人的需求是分不开的&#xff0c;因为现在信息时代的高速发展&#xff0c;导致数据量和交易量越来越大。这种现象首先导致的就是存储瓶颈&#xff0c;因为…

(排序10)归并排序的外排序应用(文件排序)

TIPS 在一些文件操作函数当中&#xff0c;fputc与fgetc这两个函数都是针对字符的&#xff0c;如果说你需要往文件里面去放入整形啊等等&#xff0c;不是字符的类型&#xff0c;这时候就用fprintf&#xff0c;fscanf在参数里面数据类型控制一下就可以。但是话说回来&#xff0c…

自动化测试怎么学?这绝对是全网最系统的教程

目录 1、什么是自动化测试 2、自动化测试的发展前景怎么样 3、自动化测试难不难&#xff1f; 4、目前市场上自动化测试岗位的薪资是多少&#xff1f; 5、自动化测试学习方法好渠道 6、自动化测试怎么学&#xff1f; 学习基础知识 选择自动化测试框架 开始编写测试脚本 …

用HTTP proxy module配置一个反向代理服务器

反向代理与正向代理 摘抄&#xff1a;https://cloud.tencent.com/developer/article/1418457 正向代理 正向代理&#xff08;forward proxy&#xff09;&#xff1a;是一个位于客户端和目标服务器之间的服务器(代理服务器)&#xff0c;为了从目标服务器取得内容&#xff0c;…

“数实融合 元力觉醒”,苏州市元宇宙生态大会圆满召开!

为贯彻落实《苏州市培育元宇宙产业创新发展指导意见》&#xff0c;抢抓数字经济发展新机遇&#xff0c;加速培育与元宇宙发展相关的技术底座&#xff0c;“数实融合 元力觉醒——苏州市软件行业协会元宇宙专委会成立大会暨元宇宙生态大会”于4月14日成功举办。 苏州和数智能软件…

五金件装备不良、视觉检测零件是否缺失硬件方案

【检测目的】 检测不良品 【检测要求】 检测速度&#xff1a;13S一个 【拍摄效果图一】&#xff08;正面&#xff09; 【拍摄效果图二】正面 【拍摄效果图三】正面 【拍摄效果图四】&#xff08;正面&#xff09; 【拍摄效果图五】&#xff08;正面&#xff09; 【拍摄效果图…