Vue基础入门(三):Vue3的使用

Vue3的使用

一、首页案例修改

  • 修改首页的信息:是在之前介绍的HelloWorld.vue文件中进行内容的修改。

    在这里插入图片描述

    页面展示效果:

    在这里插入图片描述

    此时就看到了我们新添加的文字了! 同样的我们开发代码的时候只需要修改了项目中的内容然后保存就会自动刷新的浏览器,不需要我们主动去刷新浏览器了。

1.1 配置自己的路由

  • 首先创建template自定义组件模板

    在 src / components 文件夹下,我们自定义创建定义模板(.vue文件)。然后将创建好的 ‘ template ’ 模板使用‘ script ’进行导出

    在这里插入图片描述

  • 将template模板信息导入到index.js文件中配置路由信息

将我们上一步构建的两个template 组件模板导入到 src / router / index.js 文件中,配置对应的路由信息。

在这里插入图片描述

​ **注:**在导入我们自定义的 组件模板(component/template)时,项目可能会产生许多错误的语法提示,这时候我们需要对配置文件中的语法严格检测关闭掉(build / webpack.base.conf.js 文件)。

在这里插入图片描述

  • 将配置好的路由router 引入到src / App.vue 界面中即可

在这里插入图片描述

  • 主页面效果展示:

    在这里插入图片描述

在这里插入图片描述

二、 Axios基本使用

​ 在 Vue 里面提供有标准的数据异步访问处理机制,这种操作主要是通过 axios 组件来完成的,这个组件是进行异步数据操作使用的(比如要从后端获取数据),如果没有异步处理的操作支持,那么 Vue 存在就没有任何的价值。

​ Axios文档:https://www.axios-http.cn

2.1 下载Axios开发包

  • 在项目中安装 : npm install axios -s

    这里需要注意一下axios的版本兼容问题。后续我更改了版本 npm install axios@0.26.0 -s

    在这里插入图片描述

通过该命令安装之后,可以通过 package.json 文件中查询出对应的安装数据:

在这里插入图片描述

npm install 命令介绍

  • npm install XXX -s

    npm install xxx -s 相当于 npm install -S 相当于 npm install --saver

    这样安装是局部安装的的(只是在当前项目中能使用),会写进 package.json 文件中的dependencie 里。

    dependencie:表示生成环境下的依赖管理。

    也就是说,需要安装一个库如果是用来构建你的项目的,比如 echarts、element-ui 等,是实际在项目中起到作用的,就可以使用 -s 来安装。

  • npm install xxx -d

    npm install xx -d 相当于 npm install -D 相当于 npm install --save-dev

    这样安装是局部安装的,会写进 package.json 文件中的 devDependencies 项中。

    devDependencies:表示开发环境下的依赖管理

    如果你安装的库是用来打包的、解析代码的,就可以用 -d 来安装,项目上线了,这些库就没用了。

  • npm install xxx -g

    npm install xxx -g 表示全局安装,安装一次之后,你就可以在其他任何地方直接进行使用了。

  • npm install xxx

    在什么参数都不添加的时候, 和 npm install --saver 一样的,都是局部安装并会把模快自动写入package.json文件中的 dependencies 中。

  • 配置Axios

在开发环境中安装好Axios后,想要使用,则必须还要在 main.js文件中进行相应的配置:

在这里插入图片描述

2.2 静态文件的读取演示

  • 静态文件封装

    为了方便进行数据的访问,本次在 static 目录下面创建一个“dept.json”文件使用该文件来模拟后端数据。

    在这里插入图片描述

  • 加载静态文件(创建对应的组件模快 .vue文件)

    ​ 本次将在 deptList.vue(创建在 src / components 文件下的组件模快) 程序里面实现异步数据的加载操作,加载完成的数据要以表格的形式显示。

    组件模快方式一:

    <template>
        <div>
            <h1 class="text-color">【路由页面】部门信息列表1</h1>
            <button @click="loadDeptDate">加载部门信息</button>
            <div class="div-float">
                <table border="1">
                    <thead>
                        <th>部门编号</th>
                        <th>部门名称</th>
                        <th>部门地址</th>
                    </thead>
                    <tbody>
                        <tr v-for="dept in depts">
                            <td>{{dept.deptno}}</td>
                            <td>{{dept.dname}}</td>
                            <td>{{dept.loc}}</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </template>
    <script>
    export default {
        name:"DeptList",
        data(){
            return{
                depts:[]  // 返回json格式数据
            }
        },
        methods:{
            loadDeptDate(){ //部门信息加载函数
                let self = this; //在回调函数中不能直接调用 this 这里需要先声明出来
                //发送异步请求
                this.$axios.get("/static/dept.json")
                .then(function(resp){ //请求成功就执行then里面的内容
                    alert("请求状态码:"+resp.status)
                    self.depts = resp.data
                })
                .catch(function(error){ //请求失败的回调函数
                    alert("请求失败:"+console.error)
                })  
                
            }
        }
    }
    </script>
    

    组件模快方式二:

    <template>
        <div>
            <h1>[部门信息列表加载]方式2</h1>
            <table border="1" align="center">
                <thead>
                    <th>部门序号</th>
                    <th>部门编号</th>
                    <th>部门名称</th>
                    <th>部门地址</th>
                </thead>
                <tbody>
                    <tr v-for="(dept,index) in depts">
                        <td>{{index+1}}</td>
                        <td>{{dept.deptno}}</td>
                        <td>{{dept.dname}}</td>
                        <td>{{dept.loc}}</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </template>
    <script>
    export default {
        name:"DeptList2",
        data(){
            return{
                depts:[]
            }
        },
        created(){
            this.loadDeptData();
        },
        methods:{
            loadDeptData(){
                let self = this;
                //发送请求加载数据
                this.$axios.get("/static/dept.json")
                .then(function(resp){
                    alert("组件模板2请求数据成功!")
                    self.depts = resp.data
                })
            }
        }
    }
    </script>
    
  • 配置组件模快的路由信息

    在src / router /index.js 文件中,将我们创建好的 组件模快.vue文件 导入,并配置相关路由信息。

    import Vue from 'vue'
    import Router from 'vue-router'
    import HelloWorld from '@/components/HelloWorld'
    import testVue from '@/components/testVue'
    import testCamunda from '@/components/testCamunda'
    //导入组件模板数据进行封装
    import deptList from '@/components/DeptList'
    import deptList2 from '@/components/DeptList2'
    Vue.use(Router)
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'HelloWorld',
          component: HelloWorld
        }
        ,
        // 配置自定义路由
        {
          path:'/testVue',
          name:'VueImages',
          component:testVue
        },
        {
          path:'/testCamunda',
          name:'CamundaImageTest',
          component:testCamunda
        }
        ,//配置部门数据组件模板路由信息
        {
          path:'/deptList1',
          name:'deptList1',
          component:deptList
        },
        {
          path:'/deptList2',
          name:'deptList2',
          component:deptList2
        }
      ]
    })
    
  • 引用封装好的路由

    在 src / App.vue 中引入刚才封装好的 部门信息路由,即可在主页看见效果。

    在这里插入图片描述

  • 首页效果展示:

    在这里插入图片描述

三、基于代理实现跨域访问

​ vue 的最大的优势之一就是实现前后端分离,之前传统的开发是前端代码和后端代码都是写在一起的,现在我们要将前端代码写在前端的项目中,后端的代码专门负责业务处理,提供接口给前端项目调用即可。

​ 在整个的Vue项目里面最为重要的特点就是方便的支持有跨域访问的操作处理,它可以通过一个 WebPack 简单配置实现数据的跨域访问操作(如果使用的是SpringBoot,在现代跨域访问上的支持很到位,不需要做任何的配置)

3.1 后端实现统一返回值

​ 特别注意:一个项目中有很多的 controller,controller 中有很多方法,这些方法要有返回值,一个项目中的 controller 的返回值有很多,此时和前端开发人员去对对接的时候就非常苦难,此时就应该一个项目中的所有返回值都统一为一种,就要定义一种专门封装返回给前端的数据的类型 R。

package cn.example.springbootproject.tempTestVue;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.xml.transform.Result;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description: 实现统一返回数据
 * @ClassName: R
 */
@Data
/** chain:支持链式编程  fluent:忽略get/set前缀 */
@Accessors(chain = true)
public class R {
    private Boolean success;
    private Boolean error;
    /**响应提示信息*/
    private String message;
    /**相应状态码*/
    private Integer code;
    /**保存返回数据的对象*/
    private Map date = new HashMap<String,Object>();

    /**请求成功*/
    private static R ok(){
        R r = new R();
        r.success(true);
        r.message(ResultCodeEnum.SUCCESS.getMessage());
        r.code(ResultCodeEnum.SUCCESS.getCode());
        return r;
    }
    /**请求失败*/
    private static R error(){
        R r = new R();
        r.error(false);
        r.code(ResultCodeEnum.FAIL.getCode());
        r.message(ResultCodeEnum.FAIL.getMessage());
        return r;
    }
    /**返回数据对象赋值接口*/
    public R data(String key,Object value){
        this.date.put(key,value);
        return this;
    }
    public R data(Map<String,Object> map){
        this.date(map);
        return this;
    }
}

3.2 后端控制层查询封装

​ 在后端写好查询数据的接口,然后通过我们的Vue项目对端口的调用,获取到后端查询到的数据之后,对获取到的数据进行渲染操作。

package cn.example.springbootproject.tempTestVue;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.HashMap;

/**
 * @Description: 雇员查询控制层
 * @ClassName: EmplyeeController
 */
@Controller
@RequestMapping("/employee")
public class EmplyeeController {

    @GetMapping("queryList")
    public R queryList(){
        //这里就简单的封装一个模拟数据了,不在调用Service层在进行数据的查询
        ArrayList<Object> employeeList = new ArrayList<>();
        for (int i = 0; i < 5 ;i++) {
            HashMap<String, Object> employee = new HashMap<>();
            employee.put("id",i);
            employee.put("name","张三"+i);
            employee.put("age",20+i);
            employee.put("sex","男");
            employee.put("address","北京市朝阳区"+i);
            employee.put("salary",10000+i);
            employeeList.add(employee);
        }
        return R.ok().data("list",employeeList);
    }
}

3.3 vue项目中追加代理

​ 在vue项目中进行代码配置: 修改 config /index.js 文件中的proxyTable中,追加代理控制。

在这里插入图片描述

​ 该文件是配置文件,修改之后需要重启项目才能生效!

3.4 修改组件模板文章中的Axios代码

​ 在对应的组件模板中,将对应数据获取后赋值给vue对象,然后在对应的 template 模板中进行赋值遍历预览即可。

<template>
    <div>
        <h1>[部门信息列表加载]方式2</h1>
        <table border="1" align="center">
            <thead>
                <th>序号</th>
                <th>编号</th>
                <th>名字</th>
                <th>年龄</th>
                <th>性别</th>
                <th>工资</th>
                <th>地址</th>
            </thead>
            <tbody>
                <tr v-for="(dept,index) in depts">
                    <td>{{index+1}}</td>
                    <td>{{}index.id}</td>
                    <td>{{dept.name}}</td>
                    <td>{{dept.age}}</td>
                    <td>{{dept.sex}}</td>
                    <td>{{dept.salary}}</td>
                    <td>{{dept.address}}</td>
                </tr>
            </tbody>
        </table>
    </div>
</template>
<script>
export default {
    name:"DeptList2",
    data(){
        return{
            depts:[]
        }
    },
    created(){
        this.loadDeptData();
    },
    methods:{
        loadDeptData(){
            console.log("访问后端查询数据!!")
            let self = this;
            //发送请求加载数据 
            //this.$axios.get("/static/dept.json")
            this.$axios.get("/api/employee/queryList")
            .then(function(resp){
                console.log("组件模板2请求数据成功!"+resp.data.data.list)
                self.depts = resp.data.data.list
            })
            .catch(function(error){ //请求失败的回调函数
                alert("请求失败:"+error)
            })
        }
    }
}
</script>
  • 效果展示:

    在这里插入图片描述

四、Axios工具类的封装

​ 项目中用到了 axios,但是不得不说在项目直接使用 axios 实在是繁琐(你现在感觉不繁琐是因为业务简单),每次都要写一堆的配置,而且将配置写在业务代码中十分地不雅,一般在项目中使用的时候都会将其再次封装,以便更好的使用,比如统一数据处理和错误信息等操作。

4.1 定义request.js文件

​ 需要在项目的 src 目录下创建一个 utils 的目录,然后在里面创建一个叫做 request.js 的文件。

//这是一个异步访问工具文件
import axios from 'axios'
import config from '../../config'
//创建一个axios实例
const service = axios.create({
    //指定需要访问的基础路径(就是要访问的后端路径)
    baseURL:'http://localhost:8888',
    timeout:3000  //请求超时时间
})
//请求拦截器的封装
service.interceptors.request.use(
    // 这里的config是浏览器发送的请求的所以信息都封装在这里面
    config => {
        //添加请求头信息
        config.headers['token']='token123'
        return config
    },
    err =>{
        // Promise 是se6中新增加的一个对象(暂时不用管)
        return Promise.reject(err)
    }
)
//响应拦截器(后端响应数据,在渲染到前端之前,会在此拦截器处理)
service.interceptors.response.use(
    //后端响应的信息都封装到该对象中
    response=>{
        if(response.data.code==20001){
            //表示没有权限
            window.location.href="/login"
            return;
        }
        if(response.data.code==20002){
            //表示账号被锁定
            alert("你的账号已别锁定,请连续客户处理!")
            return;
        }
        if(response.data.code==20003){
            //表示登录凭证过期
            alert(response.data.message);
            return;
        }
        //放行
        return response; 
    },
    error=>{
        return Promise.reject(error.response)
    }
)
export default service;

4.2 单独定义js发送请求

​ 定义一个独立的js文件,专门用于发送axios异步请求,就该js文件放在 src / api 文件夹下,命名为emp.js。

//导入封装好的 axios实例
import request from '@/utils/request'
import { methods } from 'http-parser-js'

//创建发送axios异步请求的方法
export default{
    //发送请求的方法
    empList(cp,ls){
        //使用定义的工具访问后端代码
        return request({
            url:'employee/queryList',
            methods:'post'
        })
    }
}

4.3 修改组件模块数据发送请求

​ 在之前创建的 src / components /deptList2.vue 文件中,调用api接口,发送异步请求获取数据。

在这里插入图片描述

  • 这里可能会出现一个异常信息

在这里插入图片描述

​ 解决办法:这里需要后端开启跨域访问即可:

在这里插入图片描述

查询成功:

在这里插入图片描述

五、UI框架 element-ui

​ 市面上常用的ui框架包含 Bootstrap Layui easyui(界面很丑) element-ui(兼容了vue)

  • ui框架PC端

    • bootstrap:比较强大的一款前端 ui 框架,存在的时间也比较久,但是依赖于 jQuery,不符合vue 的开发思想,不建议用
    • layui:经典的模块化前端框架,虽然使用时不需要引入 jQuery,但是底层是依赖于 jQuery 的,并且非常依赖于 dom 操作,不建议使用
    • iview:一套基于 Vue.js 的高质量 UI 组件库。对 vue 兼容性极强,功能强大,组件丰富,推荐。
    • ant-design-vue:这是蚂蚁金服的开源 ui 框架。大名鼎鼎的 jeecg 就是使用的这个,完美兼容vue
    • elementui:目前 vue 开发者使用最多的 ui 框架,饿了么团队开发(阿里),完美兼容 vu

  • ui 框架 移动端

    • mui:DCloud 出品的 ui 框架,可以实现半原生开发。曾经依赖于 jQuery
    • mintui:饿了么团队出品的移动端 ui 框架,兼容 vue,但是不太关注,功能较少
    • antui:蚂蚁金服移动端 ui 框架,完美兼容 vue,封装不太好
    • vant:有赞出品的前端 ui 框架,完美兼容 vu

5.1 Elementui的简单使用

接着我们通过 vue-cli 脚手架创建的项目进行练习

element-ui 官网地址:https://element.eleme.cn/#/zh-CN/component/installation

分析一下目录结构:

在这里插入图片描述

  • 在项目中安装 element-ui

执行命令 npm install element-ui -s

在这里插入图片描述

下载某个包,并把该包的信息记录到生产环境依赖中(dependencies)。需要注意的是-S 是大写的,等
价于小写开头的–save(这里可是 2 个 - )。

下载完毕之后,可以通过依赖配置文件中观察到我们刚下载好的依赖信息

在这里插入图片描述

  • 在main.js 主js文件中全局引入 element-ui 依赖

在这里插入图片描述

  • 然后启动项目

    npm run dev

    到现在为止 ,我们的该项目就支持 element-ui 开发了

5.2 树形结构的开发

​ 大部分的开发需求中, 都基本上是采用该步骤进行开发,首先是创建我们的 组件模板 并将组件(.vue文件) 存放在目录 src / views 下。

​ 通过element-ui官网查询需要的树形结构ui模型。

​ 然后在通过 router / index.js 文件中为组件模板配置路由信息,配置好路由信息之后,就可以对配置好的路由进行调用了。

  • 创建 views /Tree.vue 组件模板文件

    ​ 这里的views文件夹是新建的文件夹,专门用来存放我们创建的 组件模板 .vue 文件。或者我们可以直接保存在项目中原本就有的 components 文件夹中。

    ​ 这里需要注意: 将element-ui 官网的ui模型代码复制过来后,组件部分我们需要创建 template 标签将其包裹住,同时 template 标签下只能存在一个根节点标签,所这里使用了 :

    <template> <div>xxxxx</div> </template> 两重标签,将我们的ui模型 数据进行包裹!

在这里插入图片描述

  • 修改路由配置文件 router / index.js

    创建好组件模板 Tree.vue 文件之后, 我们在对该文件配置路由信息。

    在这里插入图片描述

    ​ 这里的 component 组件属性在导入组件时与之前发生了改变,这里是直接导入了我们的组件文件。(后续这种方式比较常用)

    ​ 之前导入组件模快的方式是首先在顶部通过 improt 导入组件对应名称之后,然后才在下面的路由配置信息中的component属性上直接引用上方导入的组件信息即可。

  • 树形结构的引用(App.vue中)

    在配置好树形组件的路由信息之后, 通过App.vue 来引用我们配置好的树形结构路由即可。

    在这里插入图片描述

​ 主页面展示效果图:在这里插入图片描述

5.3 消息弹框UI

​ 当用户在页面点击按钮操作数据的时候,如果成功需要给个提示,失败也需要给提示,element-ui 中有很友好的提示方式。

​ 同样是通过Element-ui官网选择一个比较合适的UI组件模快,然后复制到我们新建的组件模快 .vue文件中,这里还是需要注意,需要用 <template> 标签将 其余el标签全部包裹起来,且template标签下只能有一个根节点。

  • 创建 views / Notice.vue 组件模板文件

在这里插入图片描述

  • 修改router / index.js 文件中的路由配置信息

在这里插入图片描述

  • 修改App.vue文件调用封装好的路由

在这里插入图片描述

  • 展示效果:

在这里插入图片描述

5.4 表单UI

​ 表单是在开发中必不可少的组件,element-ui 中对表单也很好的支持,很轻松就能实现。

  • 创建 view / Form.vue

    ​ 首先同样的方式,我们去 element-ui 官方连接中去找一个比较适合的 UI 界面,然后复制 表单 UI 的代码,整合到我们的项目中来

    **注:**还是需要注意的是复制过来的所以el标签,需要保存在 template标签下,且一个根标签中

    在这里插入图片描述

  • 添加 router / index.js 中路由的配置信息

    在这里插入图片描述

  • 修改 App.vue 调用表单路由信息

    在这里插入图片描述

展示效果:

在这里插入图片描述

5.5 弹层Dialog对话框

​ 在保留当前页面状态的情况下,告知用户并承载相关操作。这里的弹层就是之前说的模态窗口(在 BootStrap

  • 创建 src / view /Dialog.vue

    这里同样是去饿了么官网查找对应的ui界面,然后复制源码。

    <template>
      <el-button type="text" @click="open">点击打开 Message Box</el-button>
    </template>
    <script>
      export default {
        methods: {
          open() {
            this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              this.$message({
                type: 'success',
                message: '删除成功!'
              });
            }).catch(() => {
              this.$message({
                type: 'info',
                message: '已取消删除'
              });          
            });
          }
        }
      }
    </script>
    
  • 在router / index.js 文件中配置Dialog的路由信息

 routes: [
    //Dialog
    {
      path:'/Dialog',
      name:'Dialog弹窗',
      component:() => import('../views/Dialog.vue')
    }
 ]
  • 在 App.vue 界面调用Dialog.vue 的路由配置信息

    <router-link to="/Dialog">element-Dialog弹窗确认</router-link>
    
  • 展示效果

    在这里插入图片描述

5.6 表格UI

  • 创建 src / vuews / Table.vue

    从element-ui官网下选择了这款UI表格,然后复制源码,复制到创建的 Table.vue中。

    在这里插入图片描述

  • 修改 src / router /index.js 文件,配置路由信息

     //tableUi
    {
        path:'/Table',
            name:'table表格UI',
                component:() => import('../views/Table.vue')
    }	
    

  • 在 App.vue 中调用配置好的路由信息

    <router-link to="/Table">element-ui表格UI</router-link>
    

这里可能会出现表格无法展示问题。解决办法是降低我们element-ui的版本。

npm install element-ui@2.8.1 -s

  • 页面展示效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口测试:Jmeter和Postman测试方法对比

前阶段做了一个小调查&#xff0c;发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人…

OpenSearch向量检索和大模型方案深度解读

大家好&#xff0c;我叫邢少敏&#xff0c;目前负责阿里云开放搜索OpenSearch的研发&#xff0c;很高兴在此跟大家分享OpenSearch在向量检索和大模型方面做的一些工作。 基于向量检索的分布式智能搜索引擎 通常&#xff0c;数据大致可以分为结构化数据和非结构化数据两种类型…

“2024上海智博会、2024北京智博会”双展联动,3月上海,6月北京

“2024上海智博会、2024北京智博会”双展联动&#xff0c;将分别于3月和6月在上海和北京举办。这两个展会旨在充分展示智慧城市、人工智能、物联网、大数据、软件等新兴行业的最新产品和技术。 作为中国最具影响力和创新力的智能科技展会&#xff0c;上海智博会和北京智博会吸引…

ArkTS-属性动画和显式动画

属性动画 组件的某些通用属性变化时&#xff0c;可以通过属性动画实现渐变过渡效果&#xff0c;提升用户体验。支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。 名称参数类型必填描述durationnumber否设置动画时长。默认值&#xff1a;1…

ArkUI 如何将$r(’app.string.xxx‘) 转成string字符串

一、正常引用字符串资源文件内容 在 ArkUI 中&#xff0c;string.json 中的字符串资源正常情况下使用如下方式引用&#xff1a; Entry Component struct LoginPage {build() {Column() {Text($r(app.string.title))}}}二、资源转string类型 上面的代码没问题是因为 Text(con…

探究Kafka原理-7.exactly once semantics 和 性能测试

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

盖茨表示GPT-5不会比GPT-4有太大改进;Intro to Large Language Models

&#x1f989; AI新闻 &#x1f680; 盖茨表示GPT-5不会比GPT-4有太大改进 摘要&#xff1a;比尔盖茨在与德国《商报》的采访中透露&#xff0c;虽然OpenAI内部有人相信GPT-5会优于GPT-4&#xff0c;但他认为目前的生成式人工智能已经达到极限。盖茨对GPT-5未来的发展并不乐观…

Vue基础入门(四):Vue3快速开发模板

快速开发Vue的解决方案 ​ Vue 的开发需要的 node 环境&#xff0c;其实上在开发的过程中会遇到一些你想不到的问题&#xff0c;比如 npm工具的版本和 node 环境不匹配&#xff08;你把其他项目导入到自己的环境&#xff09; ​ vue-element-admin&#xff08;是一个官方提供…

Ubuntu系统CLion安装

Ubuntu系统CLion安装 pycharm 同理。 参考官网安装过程&#xff1a;官网安装过程 下载linux tar.gz包 # 解压 sudo tar -xzvf CLion-*.tar.gz -C /opt/ sh /opt/clion-*/bin/clion.sh其中第二个命令是启动CLion命令 clion安装完以后&#xff0c;不会在桌面或者菜单栏建立图…

Containerd Container管理功能解析

Containerd Container管理功能解析 container是containerd的一个核心功能&#xff0c;用于创建和管理容器的基本信息。 本篇containerd版本为v1.7.9。 更多文章访问 https://www.cyisme.top 本文从ctr c create命令出发&#xff0c;分析containerd的容器及镜像管理相关功能。 …

[英语学习][3][Word Power Made Easy]的精读与翻译优化

[序言] 这次翻译校验, 难度有点大, 原版中英翻译已出现了严重地偏差. 昨晚11点开始阅读如下段落, 花费了1个小时也没有理解原作者的核心表达, 索性睡觉了. 今早学习完朗文单词之后, 9点半开始继续揣摩. 竟然弄到了中午11点30, 终于明白原作者要表达的意思了. 废话不多说&#x…

Selenium 学习(0.14)——软件测试之测试用例设计方法——因果图法2【基本步骤及案例】

1、因果图法的基本步骤 2、案例分析 1&#xff09;分析原因和结果 2&#xff09;关联原因和结果 投入1元5角或2元&#xff0c;按下“可乐”&#xff0c;送出“可乐”【暂时忽略找零】 投入2元&#xff0c;按下“可乐”或“雪碧”。找零5角&#xff0c;送出“可乐”或“雪…

大量用户弃用5G网络,四大运营商血亏? 喜闻乐见

家人们&#xff0c;老百姓讨厌5G网络&#xff0c;不是一天两天的事情了&#xff0c;有人认为5G网络是个坑&#xff0c;我们就应该永远用4G网络才对&#xff0c;国家为何要折腾这事&#xff1f;肯定是闲的。 正是这种思维的蔓延&#xff0c;导致了大量用户弃用5G网络。这事对四大…

搭建Angular并引入NG-ZORRO组件库

作者&#xff1a;baekpcyyy&#x1f41f; 1.安装node.js 注&#xff1a;安装 16.0 或更高版本的 Node.js node官网&#xff1a;https://nodejs.org/en 2.进入angular官网 https://angular.cn/guide/setup-local 新建一个文件夹 vsc打开 打开终端 1.首先安装angular手脚架…

高级/进阶”算法和数据结构书籍推荐

“高级/进阶”算法和数据结构书籍推荐《高级算法和数据结构》 高级算法和数据结构 为什么要选择本书 谈及为什么需要花时间学算法&#xff0c;我至少可以列举出三个很好的理由。 (1)性能&#xff1a;选择正确的算法可以显著提升应用程序的速度。仅就搜索来说&#xff0c;用二…

Python基础语法之学习input()函数

Python基础语法之学习input函数 前言一、代码二、效果 前言 一、代码 # 默认是字符串类型 number input("请输入一个数字&#xff1a;") print("输入的数字是",number)二、效果 没有人可以阻止你成为自己想成为的人&#xff0c;只有你自己才能放弃梦想。…

WinMerge使用教程,WinMerge下载

一、下载 官方下载 WinMerge - You will see the difference… 官方地址&#xff1a;https://winmerge.org/ 阿里云盘下载 文件内容对比工具WinMerge2.16.25.25 https://www.alipan.com/s/r7MzudB235x 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘…

机器视觉:塑造未来的智能视界

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1; 前言&#x1f324;️ 机器视觉技术的实现☁️ 图像采集☁️ 图像处理☁️ 数据建模☁️应用展示…

94.STM32外部中断

目录 1.什么是 NVIC&#xff1f; 2.NVIC寄存器 3.中断优先级 4.NVIC的配置 设置中断分组​编辑 配置某一个中断的优先级 5.什么是EXTI 6.EXTI和NVIC之间的关系 7.SYSCFG 的介绍 1.什么是 NVIC&#xff1f; NVIC是一种中断控制器&#xff0c;主要用于处理 ARM Cort…

java--子类中访问其他成员的特点

1.在子类方法中访问其他成员(成员变量、成员方法)&#xff0c;是依照就近原则的。 ①先子类局部范围找。 ②然后子类成员范围找。 ③然后父类成员范围找&#xff0c;如果父类范围还没有找到则报错。 2.如果父类中&#xff0c;出现了重名的成员&#xff0c;会优先使用子类的…