【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建等分享。

所属的专栏:前端零基础,实战进阶教学
景天的主页:景天科技苑

文章目录

  • vue-router的使用
    • vue2的处理方法
  • vue-cli脚手架
    • 安装liunx版本的nodejs
    • 安装nodejs
    • 常用的nvm命令
    • npm
    • 安装Vue-cli
    • 使用Vue-CLI初始化创建项目
      • 生成项目目录
      • 项目目录结构

vue-router的使用

vue就是我们前面学习的vue基础,vue + vue-router 主要用来做SPA(Single Page Application),单页面应用 整个网站都是通过一个html文件搞定的
我们只需要开发组件,页面中有什么组件,就开发什么组件。这些事情都是前端来做的,跟后端没有一点关系

在这里插入图片描述

vue + vue-router就是完成单页面应用的,vue-router(路由)是vue的核心插件

每个组件渲染出的效果都是vue来做的
vue-router干的事就是通过不同访问路径来找相应组件
他俩是共生的,通过vue开发的网站都要使用vue-router

加载组件时,每个组件在生命周期函数之中往后台发请求
当浏览器访问不同路径,vue-router来处理路径,找相应的组件

比如首页有个大组件home组件,由header,content,footer三个子组件组成,把home组件挂载到App组件上,App是挂载到vue对象上的组件
通过vue-router控制,当浏览器访问index页面是,把home组件放到index.html文件中展示
访问其他路径时,把其他组件放到index.html文件中展示
这样,通过路径展示不同的组件。完成页面展示效果
如此,一个html文件通过加载不同组件 来展示整个网站的页面效果
每个组件需要的数据通过axios请求拿数据

单页面应用一个不好点,就是只有一个html文件 meta=keywords content=‘景天商城’ 只有一个html的花,关键字只出现一次
百度收录的数据比较少。通过百度关键字搜索,搜索到页面的概率很低
百度竞价时,比较火的关键字很贵的

优点:
不同路径,加载不同组件,不同组件请求相关数据,把一个页面渲染所需要的所有数据,拆分成几步去请求,这样小数据传输比较快,请求都是异步的,页面渲染效率更高一些
用户体验更好

为什么要使用单页面应用呢?因为传统的路由跳转,如果后端资源过多,会导致页面出现’白屏现象’,所以我们希望让前端来做路由,
在某个生命周期的钩子函数中,发送ajax来请求数据,进行数据驱动,
之前比如我们用django的MTV模式,我们是将后端的数据全部渲染给了模板,然后模板再发送给前端进行浏览器页面的渲染,一下将所有的数据都给了页面,
而我们现在使用vue,我可以在组件的钩子函数中发送对应的ajax请求去获取对应的数据,
而不是裤衩一下子就把数据都放到页面上了,单页面应用给我们提供了很多的便利,
说起来大家可能没有什么切实的体会,来,给大家推荐一个稀土掘金网站,这个网站就是一个单页面应用,
是一个开发者技术社区网站,里面的资源会有很多,看样子:
在这里插入图片描述

这样的网站我们通过django是可以来完成页面的渲染的,模板渲染嘛,但是这个论坛的数据资源有很多,我们通过django的MTV模式是一下子就将数据全部放到页面里面了,
那么页面通过浏览器渲染的时候,浏览器可能没有那么快渲染出来,会出现几秒钟的白屏现象,也就是说几秒钟之后用户才看到页面的内容,
这样体验起来就不好,为了用户体验好,就用到了我们说的单页面应用,django模板渲染做大型应用的时候,也就是页面很复杂,数据量很大的页面的时候,是不太合适的,
当然如果你够nb,你也可以优化,但是一般它比较适合一些页面数据比较小的应用。

那么解释一下什么是单页应用,看下图:(react、angular也都是做单页面应用,很多大型的网站像网易云音乐,豆瓣等都是react写的单页面应用)
在这里插入图片描述

下面我们来下载一下vue-router,[文档地址] https://router.vuejs.org/zh/ 下载地址: https://unpkg.com/vue-router@4.2.2/dist/vue-router.global.js

vue官网: https://cn.vuejs.org/
vue官网中就有vue-router
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

拷贝下来保存到本地使用
在这里插入图片描述

使用方法,先引入vue,再引入vue-router
在这里插入图片描述

简单使用技巧

<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>

<div id="app">
  <h1>Hello App!</h1>
  <p>
    <!--使用 router-link 组件进行导航 -->
    <!--通过传递 `to` 来指定链接 -->
    <!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签-->
    <router-link to="/">Go to Home</router-link>
    <router-link to="/about">Go to About</router-link>
  </p>
  <!-- 路由出口 -->
  <!-- 路由匹配到的组件将渲染在这里 -->
  <router-view></router-view>
</div>

vue2的处理方法

1 下载并引入vue-router的js文件: https://unpkg.com/vue-router/dist/vue-router.js
2 创建路由规则(哪个路径对应哪个组件)

const routes = [
  { path: '/home', component: Home },
  { path: '/course', component: Course }
]

3 创建对应的组件(Home\Course)

let Home = {
    data(){
        return {
            msg:'我是home组件',
        }
    },
    template:
            `
                <div class="home">
                    <h1>{{msg}}</h1>

                </div>
            `
};

let Course = {
    data(){
        return {
            msg:'我是Course组件',
        }
    },
    template:
            `
                <div class="course">
                    <h1>{{msg}}</h1>

                </div>
            `

}

4 创建vueRouter对象,并将路由规则交给这个对象

let router = new VueRouter({
    routes,
})

5 在vue对象中挂载一下router对象

let vm  = new Vue({
    el:'#app',
    router,  //挂载
    components:{
        App,
    }


})

6 创建router-link标签来指定路由

    let App = {
    data(){
        return {

            num:100,

        }
    },

    template:
            `
            <div class="app">

                <router-link to="/home">首页</router-link>
                <router-link to="/course">课程页</router-link>


                <router-view></router-view>
            </div>

            `,

    methods:{

    }
}

7 写路由出口 router-view

官网js处简单操作: 下面是vue3的处理方法

// 1. 定义路由组件.

// 也可以从其他文件导入
const Home = { template: '<div>Home</div>' }
const About = { template: '<div>About</div>' }

// 2. 定义一些路由

// 每个路由都需要映射到一个组件。
// 我们后面再讨论嵌套路由。
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About },
]

// 3. 创建路由实例并传递 routes 配置

// 你可以在这里输入更多的配置,但我们在这里
// 暂时保持简单
const router = VueRouter.createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  history: VueRouter.createWebHashHistory(),
  routes, // `routes: routes` 的缩写
})

// 5. 创建并挂载根实例

const app = Vue.createApp({})
//确保 _use_ 路由实例使
//整个应用支持路由。
app.use(router)

app.mount('#app')

// 现在,应用已经启动了!

vue3代码,要使用vue3最新代码

1.定义子组件



let home = {
    data() {
        return {
            msg: '我是home组件',
        }
    },

    template:
        `<div class = 'home'>
            <h1>{{msg}}</h1>
         </div>`,
};

let course = {
    data() {
        return {
            msg: '我是course组件',
        }
    },

    template:
        `<div class = 'course'>
            <h1>{{msg}}</h1>
         </div>`,
};
  1. 定义一些路由
// 每个路由都需要映射到一个组件。
// 我们后面再讨论嵌套路由。
const routes = [
    //每个字典都是一个路由规则
    {path: '/home', component: home},
    {path: '/course', component: course},
];

3.实例化vue-router对象

    const router = VueRouter.createRouter({
        history: VueRouter.createWebHashHistory(),
        routes, //(缩写) 相当于 routes: routes
    })


    //定义总组件
    let App = {
        data() {
            return {
                num: 100,
            }
        },

        template:
            `<div class = 'App'>
                  <router-link to="/home">首页</router-link>
                  <router-link to="/course">课程</router-link>
                    <!-- 路由出口 -->
                     <!-- 路由匹配到的组件页面将渲染在路由出口这里,也可以使用单标签 -->
                    <router-view></router-view>
             </div>`,

    }

    let vm = Vue.createApp({
       
 components: {
            App
        }


    });

    vm.use(router)    //vue3 必须这样挂载路由
    vm.mount('#app')    //vue3实例对象必须调用 .mount()后才能渲染出来

在这里插入图片描述

vue-cli脚手架

上面所有组件都写在一个html文件之中,贼乱,不便于维护。以后成千上千页面,这个文件就很大。生产中不会这么写
我们需要将这些组件分出去,实现真正进行组件化开发
组件化开发和python的模块化开发是一样的,把不同的组件放到不同的文件中去

vue-cli 能创建vue项目,把目录创建好了,哪个地方放组件,哪个地方放css样式等都划分好目录了。类似于我们通过pycharm创建django项目
而且能vue-cli把整个项目通过socket跑起来,还能引入第三方库,把依赖包下载好

vue-cli安装需要借助node.js环境 node.js通过原生js来写后台代码

js很随意,node.js更随意,版本迭代非常快。之前有官方版本和开源版本。后来发现社区版本更牛逼。语法不是很严格,做后台还是很吃力的
火了一阵子,现在没什么劲了

nodejs把浏览器解释js的那一套嵌入到nodejs里面,例如控制台的使用

前面学习了普通组件以后,接下来我们继续学习单文件组件则需要提前先安装准备一些组件开发工具。否则无法使用和学习单文件组件。
一般情况下,单文件组件,我们运行在 自动化工具vue-CLI中,可以帮我们编译单文件组件。所以我们需要在系统中先搭建vue-CLI工具,
官网:https://cli.vuejs.org/zh/
Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+)。你可以使用 nvm 或 nvm-windows在同一台电脑中管理多个 Node 版本。

nodejs官网 https://nodejs.org/zh-cn
在这里插入图片描述

Windows安装nodejs ,直接点点点安装
在这里插入图片描述
在这里插入图片描述

安装liunx版本的nodejs

在这里插入图片描述

使用nvm安装: 需要开代理 用普通用户执行安装

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

或者

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash  

安装成功会有这些提示:
在这里插入图片描述

同理,它会自动的添加到环境中,
在这里插入图片描述

最后需要激活环境:*bash *source ~/.bashrc or zsh source ~/.zshrc,或者干脆重启终端。之后就可以正常使用了

nvm list-remote

在这里插入图片描述

安装nodejs

nvm install v18.16.0

在这里插入图片描述

linux安装完毕

Node.js是一个新的后端(后台)语言,它的语法和JavaScript类似,所以可以说它是属于前端的后端语言,后端语言和前端语言的区别:

  • 运行环境:后端语言一般运行在服务器端,前端语言运行在客户端的浏览器上
  • 功能:后端语言可以操作文件,可以读写数据库,前端语言不能操作文件,不能读写数据库。

我们一般安装LTS(长线支持版本):

下载地址:https://nodejs.org/en/download/【上面已经安装了nvm,那么这里不用手动安装了】

node.js的版本有两大分支:

官方发布的node.js版本:0.xx.xx 这种版本号就是官方发布的版本

社区发布的node.js版本:xx.xx.x 就是社区开发的版本

Node.js如果安装成功,可以查看Node.js的版本,在终端输入如下命令:

node -v

nvm可以管理nodejs版本

nvm工具的下载和安装: https://www.jianshu.com/p/d0e0935b150a

​ https://www.jianshu.com/p/622ad36ee020

安装记录:
打开:https://github.com/coreybutler/nvm-windows/releases
在这里插入图片描述

常用的nvm命令

nvm list-remote   #查看有哪些版本可以安装
nvm list   # 列出目前在nvm里面安装的所有node版本
nvm install node版本号      # 安装指定版本的node.js

例子:nvm install 14.15.1

nvm uninstall node版本号    # 卸载指定版本的node.js
nvm use node版本号          # 切换当前使用的node.js版本    

如果使用nvm工具,则直接可以不用自己手动下载,如果使用nvm下载安装 node的npm比较慢的时候,可以修改nvm的配置文件(在安装根目录下)

# settings.txt
root: C:\tool\nvm    [这里的目录地址是安装nvm时自己设置的地址,要根据实际修改]
path: C:\tool\nodejs
arch: 64
proxy: none
node_mirror: http://npm.taobao.org/mirrors/node/ 
npm_mirror: https://npm.taobao.org/mirrors/npm/

nodejs包管理工具,常用的有npm和yarn npm在找一些包依赖时比较差劲,容易安装失败 npm无法控制安装包的版本 yarn可以指定版本安装

现在新版本的npm安装时生成个安装记录文件,里面记录了安装的包的版本。把项目部署到线上的时,npm会根据记录文件安装指定版本

npm

在安装node.js完成后,在node.js中会同时帮我们安装一个npm包管理器npm。我们可以借助npm命令来安装node.js的包。这个工具相当于python的pip管理器。

npm install -g 包名              # 安装模块   -g表示全局安装,如果没有-g,则表示在当前项目安装
npm list                        # 查看当前目录下已安装的node包
npm view 包名 engines            # 查看包所依赖的Node的版本 
npm outdated                    # 检查包是否已经过时,命令会列出所有已过时的包
npm update 包名                  # 更新node包
npm uninstall 包名               # 卸载node包
npm 命令 -h                      # 查看指定命令的帮助文档

nodejs安装好后,自动会给我们安装一个npm
在这里插入图片描述

安装Vue-cli

npm install -g vue-cli
npm install -g vue-cli --registry https://registry.npm.taobao.org

如果安装速度过慢,一直超时,可以考虑切换npm镜像源:http://npm.taobao.org/
在这里插入图片描述

指令:

1 //临时使用
2 npm install jquery --registry https://registry.npm.taobao.org
3
4 //可以把这个选型配置到文件中,这样不用每一次都很麻烦
5 npm config set registry https://registry.npm.taobao.org
6
7 //验证是否配置成功
8 npm config list 或者 npm config get registry
9
10 //在任意目录下都可执行,–global是全局安装,不可省略
11 npm install --global cnpm 或者 npm install -g cnpm --registry=https://registry.npm.taobao.org
12
13 //安装后直接使用
14 cnpm install jquery

安装vue-cli

nvm是node.js的版本管理工具

1 安装node.js 自带npm

2 通过npm 安装vue-cli 它的运行需要依赖node.js的环境

使用Vue-CLI初始化创建项目

生成项目目录

使用vue自动化工具可以快速搭建单页应用项目目录。

该工具为现代化的前端开发工作流提供了开箱即用的构建配置。只需几分钟即可创建并启动一个带热重载、保存时静态检查以及可用于生产环境的构建配置的项目:

// 生成一个基于 webpack 模板的新项目
先创建个目录,用来存放项目

mkdir vuepro

在这里插入图片描述

vue init webpack 项目名

例如:

vue init webpack myproject

在这里插入图片描述

vue-cli默认是不安装vue-router的,选y安装

是否用严格模式运行js代码,选否
在这里插入图片描述

在这里插入图片描述

看到这个表示项目创建好了
在这里插入图片描述

看下项目,类似django创建的项目
在这里插入图片描述

启动服务:
先进入项目cd firstblood 运行

npm run dev

nodejs用自己内置的socket将项目运行起来,默认端口号是8080
在这里插入图片描述

虚拟机内部访问,这就是vue提供的首页
在这里插入图片描述

在pycharm中查看项目:
build是打包发给服务端部署,打包时用到的工具
在这里插入图片描述

config是目前的前端项目的配置文件,比如项目启动时的端口等
在这里插入图片描述

node_modules,运行当前项目所需要的依赖包环境,部署项目的时候,把它删掉
在这里插入图片描述

npm装的包,生成一个package-lock.json文件,里面记录了各个依赖包的版本等信息
在这里插入图片描述

部署时,把node_modules目录删掉, 运维人员只需要进入目录,执行npm install
就可以根据package.json package-lock.json 把相关依赖包都下载好

现在vue-router不再是以js文件形式引入了,而是以模块包的形式引入
在这里插入图片描述

开发重点关注的是src目录,vue是开发单页面应用,src里面就是把各个组件,引入的文件等都划分到不同的文件和文件夹中
在这里插入图片描述

main.js里面只创建了一个vue对象
在这里插入图片描述

导包的含义:当我们引入node_modules 第三方包时,from ‘包名’ 自动会去里面找到包名
相当于从vue-router包里面引入抛出的对象 Router是自定义的名称
name是组件别名,可以忽略
访问什么路径,找相应组件
@符号代指的是src路径,@/components/HelloWorld 指的是src目录下 compoents下面的HelloWorld组件

vue-cli中,要想使用路由,必须使用vue对象.use(路由对象) 固定用法
在这里插入图片描述

在vue-cli中,一个.vue文件就是一个组件。一个.vue文件点开就是一个template模板
在这里插入图片描述

分三个标签,template标签用来写网页标签,script标签 用来写剩余的js代码 style标签用来写css样式
在这里插入图片描述

引入某个对象,某个对象必须export default抛出来,才能引入
引入.vue文件时,.vue是不用写的
在这里插入图片描述

这个引入的是router目录下index.js中抛出的对象,目前这个文件中只抛出了vue-router对象
引入index文件时,只需引入其所在目录,自动引入该文件
在这里插入图片描述

单页面应用,单页面就是这一个index.html文件,里面只做了圈地
在这里插入图片描述

前端项目可以自己单独运行,不依赖后端,拿动态数据需要请求后台项目
后端项目和页面完全没关系,只提供数据

pycharm可以新建.vue文件,就是组件,右键
在这里插入图片描述

如果右键没发现vue Component 可以下载vue插件 install
安装完成后重启pycharm
在这里插入图片描述

npm run build 给项目打包部署用的

在这里插入图片描述

vue-cli是针对vue2使用的
在这里插入图片描述

vue3使用的是vite

// 启动开发服务器 ctrl+c 停止服务

cd myproject
npm run dev           # 运行这个命令就可以启动node提供的测试http服务器

那么访问一下命令执行完成后提示出来的网址就可以看到网站了:http://localhost:8080/

项目目录结构

src 主开发目录,要开发的单文件组件全部在这个目录下的components目录下

static 静态资源目录,所有的css,js,图片等文件放在这个文件夹

dist项目打包发布文件夹,最后要上线单文件项目文件都在这个文件夹中[后面打包项目,让项目中的vue组件经过编译变成js 代码以后,dist就出现了]

node_modules目录是node的包目录,

config是配置目录,

build是项目打包时依赖的目录

src/router 路由,后面需要我们在使用Router路由的时候,自己声明.

项目执行流程图
在这里插入图片描述

整个项目是一个主文件index.html,index.html中会引入src文件夹中的main.js,
main.js中会导入顶级单文件组件App.vue,
App.vue中会通过组件嵌套或者路由来引用components文件夹中的其他单文件组件。

基于vue-cli创建的项目,稍作修改。访问不同路径展示不同页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有人会问,为什么路由里面多个#
vue-router中有两种路由模式,
1、默认是哈希模式,哈希模式就加了个#,其他啥也没干
2、history模式
在这里插入图片描述

history模式配置方式:

export default new Router({
  mode:'history',  #去掉路由中的#,以后都用这个模式
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/course',
      name: 'Course',
      component: Course
    },
  ]
})

在这里插入图片描述

在这里插入图片描述

vue-cli默认是没有安装axios的,现在需要安装axios
在当前项目中,

npm install axios -S / --save   #表示给当前项目安装axios
npm install axios -g  #表示全局安装,每个创建的项目都安装

在这里插入图片描述

看到node_modules里面有了axios
在这里插入图片描述

从node_modules中导入包时,直接from ‘包名’,一般在main.js中引入
在这里插入图片描述

看axios官网,怎么在vue框架中使用
在这里插入图片描述
在这里插入图片描述

官网使用方法比较麻烦,我们可以使用原型链的方式把axios封装到vue对象当中
我们可能会在很多组件里用到数据/实用工具,但是不想污染全局作用域。
这种情况下,可以通过在原型上定义它们使其在每个 Vue 的实例中可用。

  1. 基本示例
    在main.js中添加一个变量到 Vue.prototype
Vue.prototype.$appName = 'My App'
这样 $appName 就在所有的 Vue 实例中可用了,甚至在实例被创建之前就可以   可用通过this.$appName调用

new Vue({
  beforeCreate: function () {
    console.log(this.$appName)
  }
})
  1. 为实例prototype设置作用域
    为什么 appName 要以 $ 开头?这很重要吗?
    这里没有什么魔法。$ 是在 Vue 所有实例中都可用的 property 的一个简单约定。这样做会避免和已被定义的数据、方法、计算属性产生冲突。
    如果我们设置:
Vue.prototype.appName = 'My App'

那么如下的代码输出什么:

new Vue({
  data: {
    // 啊哦,`appName` 也是一个我们定义的实例 property 名!
    appName: 'The name of some other app'
  },
  beforeCreate: function () {
    console.log(this.appName)
  },
  created: function () {
    console.log(this.appName)
  }
})

日志中会先出现 “My App”,然后出现 “The name of some other app”,因为 this.appName 在实例被创建之后被 data 覆写了。
我们通过 $ 为实例 property 设置作用域来避免这种事情发生。你还可以根据你的喜好使用自己的约定,诸如 $_appName 或 ΩappName,来避免和插件或未来的插件相冲突。

  1. 注册和使用全局变量
    每个组件都是一个vue实例,Vue.prototype加一个变量,只是给每个组件加了一个属性,这个属性的值并不具有全局性。
    比如以下例子:
    在这里插入图片描述
    在这里插入图片描述

点击 home 中的 change name 再跳转about,about里面还是显示 main in test2

如果要实现全局变量的功能,需要把属性变为引用类型

Vue.prototype.$appName = { name: 'main' }

后面使用 this.$appName.name 改变和引用相应的值
这进入 about 后显示 test1 in test2

应用示例:

// 相应组件
<script>
  export default{
    data(){
      return{
        userId:666,         
        token:'',
      }
    },
    created(){
      this.$axios({
        method:'post',
        url:'api',
        data:this.qs.stringify({    //这里是发送给后台的数据
          userId:this.userId,
          token:this.token,
        })
      }).then((response) =>{          //这里使用了ES6的语法
        console.log(response)       //请求成功返回的数据
      }).catch((error) =>{
        console.log(error)       //请求失败返回的数据
      })
    }
  }
</script>

Vue.prototype. a x i o s = a x i o s / / 起个名字叫 axios = axios //起个名字叫 axios=axios//起个名字叫axios
可以通过this.$axios.get进行get请求,或post
在这里插入图片描述
在这里插入图片描述

总结:
综上就是vue中的路由vue-router和vue-cli的全部使用教程,感兴趣的朋友可以试试幺,掌握vue你也可以。

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

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

相关文章

PCD8000D开关调光/调色线性恒流LED控制芯片 无需变压器及电阻电容 只需极少元器件

概述 PCD8000D 是一款开关调节亮度/色温的LED恒流驱动IC。适用于AC 180V-240V 或AC 90V- 130V 输入电压&#xff0c;恒流精度小于 5% 。PCD8000D在3 段调节亮度应用中&#xff0c;可根据开启/关闭电源&#xff0c;依次改变输出电流的大小&#xff0c;从而改变LED 灯的亮度, …

RK3568驱动指南|第二篇 字符设备基础-第13章 杂项设备驱动实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

SpringMVC | SpringMVC中的 “JSON数据交互“ 和 “RESTful设计风格“

目录: 一、JSON 数据交互1.1 JSON概述1.2 JSON的“数据结构”对象结构数组结构 1.3 JSON的“数据转换”用 \<mvc:annotation-driven/>的方式 来“自动配置” MappingJackson2HttpMessageConverter转换器 (来完成JSON数据转换)用\<bean>标签方式的来“自行配置” JS…

Midjourney发布新特性风格参考

1. 引言 最近&#xff0c;Midjourney 推出了Style Reference V2.0 即功能更加强大的风格参考工具&#xff0c;该工具可以让大家参考其他图像的风格&#xff0c;生成与参考图像风格保持一致&#xff0c;与文本提示词语义内容保持一致的图像。它与图像提示类似&#xff0c;但是只…

关于Count,FPKM,TPM,RPKM等表达量的计算

原文链接&#xff1a;关于Count&#xff0c;FPKM&#xff0c;TPM&#xff0c;RPKM等表达量的计算及转换 | 干货 写在前面 今天使用count值转化TPM&#xff0c;或是使用FPKM转换成TPM。这样的教程&#xff0c;我们在前面已经出国一起相对比较详细的教程了&#xff0c;一文了解…

(一)基于IDEA的JAVA基础1

Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论&#xff0…

上位机图像处理和嵌入式模块部署(qmacvisual模板匹配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 模板匹配是图像中经常使用到的功能。我看过很多现场配置部署的同学&#xff0c;虽然他们使用的是类似于vision master、visio pro这样的专业机器视…

STM32实验DMA数据搬运小助手

本次实验做的是将一个数组的内容利用DMA数据搬运小助手搬运到另外一个数组中去。 最后的实验结果&#xff1a; 可以看到第四行的数据就都不是0了&#xff0c;成功搬运了过来。 DMA实现搬运的步骤其实不是很复杂&#xff0c;复杂的是结构体参数&#xff1a; 整个步骤为&#xf…

Day17|二叉树part04:110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和、543: 二叉树的直径、124: 二叉树的最大路径和

之前的blog链接&#xff1a;https://blog.csdn.net/weixin_43303286/article/details/131982632?spm1001.2014.3001.5501 110.平衡二叉树 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。思路&#xff…

【氮化镓】利用Ga2O3缓冲层改善SiC衬底AlN/GaN/AlGaN HEMT器件性能

Micro and Nanostructures 189 (2024) 207815文献于阅读总结。 本文是关于使用SiC衬底AlN/GaN/AlGaN高电子迁移率晶体管&#xff08;HEMT&#xff09;的研究&#xff0c;特别是探讨了不同缓冲层对器件性能的影响&#xff0c;以应用于高速射频&#xff08;RF&#xff09;应用。…

网络抓包原理及常用抓包工具

本文以App作为例子&#xff0c;实际应用不限于App范围。 定位网络接口问题分析其他App数据接口学习网络协议&#xff0c;使用抓包工具分析网络数据更直观 大部分场合都可以通过程序调试来定位问题&#xff0c;但有些场景使用抓包来定位接口问题更准确、更方便&#xff0c;如以…

手机网页关键词视频爬虫采集软件可导出视频分享链接|视频无水印批量下载工具

全新音视频批量下载工具&#xff0c;为您解放视频管理烦恼&#xff01; 现如今&#xff0c;音上涌现出大量精彩的视频内容&#xff0c;但是要想高效地获取、管理和分享这些视频却是一件颇具挑战的事情。针对这一难题&#xff0c;我们自主研发了全新的音视频批量下载工具&#x…

云计算系统等保测评对象和指标选取

1、云计算服务模式与控制范围关系 参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图&#xff0c;主要是云计算系统安全保护责任分担原则和云服务模式适用性原则&#xff0c;指导后续的测评对象和指标选取。 2、测评对象选择 测评对象 IaaS模式 PaaS模式…

微信投票小程序源码系统:礼物道具投票盈利能力超强 带完整的安装代码包以及安装部署教程

近年来&#xff0c;微信小程序以其便捷性、轻量化等特点&#xff0c;迅速占据了移动应用市场的一席之地。投票小程序作为其中的一种应用类型&#xff0c;因其独特的互动性和社交性&#xff0c;成为了商家进行品牌宣传、活动推广的有力工具。然而&#xff0c;市场上的投票小程序…

离谱!奇安信人事总监透露:Web安全不会岗位这些就别投简历了

有人的地方就有江湖&#xff0c;有互联网安全的地方&#xff0c;就必然有Web安全工程师的身影。但其实Web安全是近几年才备受关注的&#xff0c;从事这方面的专业人员并不多&#xff0c;这就导致整个市场Web安全研究员的供求严重不平衡。 这种供求不平衡直接反映在Web安全研究…

常纪文-污水处理的绿色低碳政策与市场机遇

报告人&#xff1a;常纪文 报告题目&#xff1a;污水处理的绿色低碳政策与市场机遇 大会专家 常纪文&#xff0c;国务院发展研究中心资源与环境政策研究所副所长、研究员&#xff0c;国家碳达峰碳中和标准化总体组成员、中国环境科学学会常务理事、生态环境部环境影响评价委员…

复旦大学MBA:iLab项目探寻科技创新 助力企业出海

2024年2月底&#xff0c;新一轮复旦MBA iLab商业咨询项目&#xff08;以下简称iLab项目&#xff09;正式拉开序幕。      科创大时代&#xff0c;如何于变局中创新突破、绘就商业“蓝图”&#xff1f;怎样把握ESG投资机遇&#xff0c;创造可持续发展的未来&#xff1f;如何…

Java反射机制的讲解及其示例说明

Java 反射机制是指在运行时动态地获取类的信息以及操作对象的方式。它允许程序在运行时检查和操作类、方法、属性等&#xff0c;而不需要在编译时就确定这些属性。通过反射机制&#xff0c;我们可以在运行时动态地创建对象、调用方法、获取属性等。 Java 反射机制提供了以下主…

企业数据指标体系构建的四大原则

在信息化和数字化的时代浪潮下&#xff0c;数据已成为企业决策的重要依据。数据指标体系作为企业管理数据的基石&#xff0c;对于提升企业运营效率、优化资源配置、实现战略目标具有重要意义。因此&#xff0c;构建一套科学、合理的企业数据指标体系成为企业的迫切需求。本文将…

代码签名证书被吊销的原因及其后果是什么?

代码签名证书是确保软件代码完整性和可信度的关键工具&#xff0c;然而&#xff0c;在某些情况下&#xff0c;此类证书可能会被撤销。这意味着证书颁发机构&#xff08;CA&#xff09;不再认可该证书的有效性&#xff0c;并宣布其失效。本文将解析导致代码签名证书撤销的原因、…