微信小程序(基本操作)

概念:

小程序:就是程序,mini program。现在市面上有微信小程序,百度智能小程序等等。

微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。也体现了“用完即走”的理念,用户不用担心是否安装太多应用的问题。应用将无处不在,随时可用,且又无需安装卸载。

全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。小程序、订阅号、服务号、企业号是并行的体系。

微信小程序的优势及适用场景。

1) 开发角度:

a. 程序框架本身所具有的快速加载和快速渲染能力,加之配套的云能力、运维能力和数据汇总能力,使得开发者不需要去处理琐碎的工作,可以把精力放置在具体的业务逻辑的开发上。

b. 小程序的模式使得微信可以开放更多的数据,开发者可以获取到用户的一些基本信息,甚至能够获取微信群的一些信息,使得小程序的开放能力变得更加强大

c. 运行速度远远高于移动端网页,几乎可与手机APP媲美

d. 项目搭建迅速,适合快速构建需求

e. 短小精悍, 每个app源代码不会超过2MB

f. 无需下载安装,直接使用,触手可及!

g. 小程序整合了所学习的知识

2) 商业角度:

微信小程序的优势可以说至今没有任何软件可以比拟的,将成为商家的一个新营销战场,谁先进入这个战场谁的流量优势就大,更何况它还能给我们提供八大功能。

a. 流量来源多样化:目前小程序入口已经到四十多个,二维码、附近小程序、分享小程序等,流量多种多样。用户可以通过多种多样的方式进入小程序,而微信用户中包括城市用户、农村用户等各种用户群体,用户渗透率特别高,小程序无需担心流量。

b. 利用社交关系传播:店铺里的群体可以将客户导入到微信,利用信任、偏见建立传播聚合等方式,通过尽可能多加好友来进行传播,可以利用个人关系的传播,还可利用网红进行传播,例如生活中常见的好友国外代购以及网红直播卖面膜等等都是社交电商。

c. 搜索广告与公众号嵌入:微信小程序功能的开放与公众号的结合更紧密,高质量的内容+小程序会为商家带来更多的订单量。

准备工作

注册小程序帐号

① 准备一个微信号(你如果还没有微信号,你out了,你是穿越来的吧)

② 申请小程序账号:小程序

获取开发密钥(appId)

在做项目时需要密钥

公众平台登录小程序->开发->开发管理->开发设置->AppID(小程序ID) wx1481c0459dc80dab

安装开发工具

开发工具,可以选择自己喜欢的,也可以选择微信工具,下载微信开发工具,微信开发工具可完成开发,调试,打包,部署的工作

目录结构

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page

默认的目录结构:

1、全局文件

app开头的文件名是全局文件(文件名不能改),包括app.js、app.json、app.wxss。

app.js:是全局的js文件,里面的变量可以在任何地方使用。

app.json:是对小程序的全局配置。

app.wxss:是全局样式。

2、页面级文件(pages文件夹下)

如:pages/index下。index.js、index.json、index.wxml、index.wxss。这四个文件名必须一样。

index.js:页面js文件,启动后需要先执行【必须有】

index.json:页面配置文件。只能配置窗口项。决定当前窗口表现

index.wxml:页面布局文件,相当于html 【必须有】

index.wxss:页面样式文件。当index.wxss里的样式和全局的app.wxss的样式冲突时,以index.wxss为准。

文件类型

.wxml, .wxss, .json, .js 文件的作用

① WXML(WeiXin Markup Language)文件

wxml模板:跟网页中的html是完成同样的功能。

wxml和HTML的不同之处

A. 标签名不同: wxml把常用的标签进行了封装,如:地图(<map></map>)等等

B. 采用mvvm的模式(如同react和vue一样),js中不直接操作DOM,只操作数据,所以,wxml中就出现了类似于vue中的指令:如:wx:if等

② WXSS文件

和网页开发中的css一样,但是进行了扩展.

wxss在css的基础上扩展了哪些?

1、新增了尺寸单位。在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差。

2、提供了全局的样式和局部样式,你可以写一个 app.wxss 作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss 仅对当前页面生效。

3、此外 WXSS 仅支持部分 CSS 选择器,详细参考:WXSS | 微信开放文档

③ JS文件

JS文件不用解释,就是我们的js文件,完成交互的。

④ JSON文件

配置文件:

App.json:是小程序配置:

小程序代码构成 | 微信开放文档

project.config.json:工具配置

page.json:页面配置

开发文档

框架 组件 API

框架(mina框架)

微信客户端给小程序所提供的环境为宿主环境,小程序的运行环境分成渲染层(webview)和逻辑层(jscore),WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层,小程序的渲染层和逻辑层分别由2个线程管理,这两个线程的通信会经由微信客户端

配置

全局配置

全局配置 | 微信开放文档

app.json,对微信小程序进行全局配置(页面管理,窗口设置,网络请求)

页面配置

页面配置 | 微信开放文档

pagename.json,对本页面的窗口表现进行配置,覆盖全局

项目环境配置

sitemap.jsonproject.config.json

1)、project.config.json是项目开发环境配置, 包括版本、依赖、程序名之类 。

2)、sitemap.json: 配置小程序内的搜索, 当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引 。 用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。 爬虫访问小程序内页面时,会携带特定的 user-agent:mpcrawler 及场景值:1129

如果想全局禁用索引,配置project.config.json,在 setting内部添加checkSiteMap:false,

wxml(官方组件)

视图容器 | 微信开放文档

1、视图容器(View Container) view 视图容器 scroll-view 可滚动视图容器 swiper 可滑动的视频容器

2、基础内容(Basic Content)

icon 图标 ​ text 文字 ​ progress 进度条

3、表单组件(Form)

form 表单

button 按钮 ​ input 输入框 ​ checkbox 多项选择器 ​ radio 单项选择器 ​ picker 列表选择器 ​ slider 滑动选择器 ​ switch 开关选择器 ​ label 标签

4、操作反馈组件(Interaction)

action-sheet 上拉菜单 ​ modal 模态弹框 ​ toast 短通知

5、导航(Navigation)

navigator 应用内跳转

6、多媒体(Media)

audio 音频 ​ image 图片 ​ video 视频

7、地图(Map)

map 地图

wxss(样式)

WXSS | 微信开放文档

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。

WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。

和CSS 相比,WXSS 扩展的特性有:

尺寸单位

样式导入

1、WXSS尺寸单位

rpx尺寸单位可以根据屏幕宽度进行自适应。

建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准

如:

<view style="width:200rpx;height:160rpx;border:2rpx solid black">ss</view>

<view style="width:100rpx;height:80rpx;border:1px solid black">bb</view>

2、WXSS样式导入

使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

3、WXSS内联样式

框架组件上支持使用 style、class 属性来控制组件的样式。

style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。

4、WXSS选择器

目前支持的选择器有:

5、WXSS全局样式与局部样式

定义在 app.wxss 中的样式为全局样式,作用于所有页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

js(逻辑)

App()和page()

App()是注册小程序的,Page() 是注册页面的,都接受一个 Object 参数,App() 必须在 app.js 中调用,Page()必须出现在页面.js中,必须调用且只能调用一次,都会给当前注册生命周期钩子,和实例成员(方法、属性)

Object 参数

  • data:{} 数据

  • 钩子函数(参数){this 指向当前页面,当前小程序}

  • 自定义函数(){ this 指向当前页面,当前小程序 }

  • 自定义属性:值

页面与主程通讯

pages里面 let app=getApp(), app.实例属性|方法

数据绑定

WXML 中的动态数据均来自对应 Page 的 data。

在WXML里使用双花括号即可。双括号里可以写变量,表达式(包括三元表达式)

1、组件内容绑定使用(双花括号)将变量包起来

2、组件属性(需要在双引号之内,并写上双花括号)

列表渲染

1)、wx:for 指令完成列表渲染。

格式:wx:for="{{数组}}"

默认数组的当前项的下标变量名默认为 index,当前项的变量名默认为 item

如:<组件 wx:for="{{数据}}">{{item}}/{{index}}</组件>

2)、自定义下标名和当前项的名字:

使用 wx:for-item 可以指定数组当前元素的变量名,

使用 wx:for-index 可以指定数组当前下标的变量名:

3)、将 wx:for 用在<block/>标签上,以渲染一个包含多节点的结构块

block 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

条件渲染

1)、wx:if 指令完成条件渲染

<组件 wx:if="{{布尔数据}}"> 惰性渲染 (相当于vue的 v-if)

wx:elif="{{}}"

wx:else

2)、hidden属性

<组件 hidden="{{布尔数据}}" 适合频繁渲染 ,true表示隐藏,false表示显示 (相当于vue的 v-show)

3)、也可以使用 <block>

数据修改和获取

1、获取:

this.data.属性

2、修改

this.setData({key:value}),响应式的显示在view层,数据的修改结果是异步的

注意:

直接修改数据,不会响应式,如:this.data.属性 = 值 修改, view层不实时响应

3、修改全局数据

app.setData({key:value}) 修改的是主程app

事件

基本格式
  • 冒泡方式的绑定事件使用bind

<组件 bindxxx="实例方法"></组件>

xxx==原生移动端事件名(touchstart/touchend/touchcancel/touchmove/tap)

  • 不冒泡方式的绑定事件使用catch

<组件 catchxxx="实例方法"></组件>

事件对象

直接在事件处理函数里声明形参既可以。

如:

 //.wxml
 
 <text bindtap="clickMe" >点我</text>
 
 //.js
 
  clickMe(event){
      console.log(event);
      console.log(event.currentTarget);//就是当前事件源(不是真实的dom,是json对象)
  }
传参

事件处理函数传参时,在组件里写上属性 data-参数名 = "值",在函数里,使用 event.currentTarget.dataset.参数名 获取数据。

<组件 bindxxx="实例方法" data-参数名称="值"></组件>

值: 字符

//实例方法
function(event){
    event.currentTarget.dataset.参数名称;
}

双向绑定

<input value="{{ipt}}" bindinput="checkIpt"></input>

 checkIpt(e){
    this.setData({ipt:e.detail.value});//双向绑定
  },

生命周期钩子函数

小程序生命周期

App(Object object) | 微信开放文档

App(Object object)

注册小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。

App() 必须在 app.js中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

onLaunch(Object object) 小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。 参数:与 wx.getLaunchOptionsSync 一致

onShow(Object object) 小程序启动,或从后台进入前台显示时触发。也可以使用 wx.onAppShow 绑定监听。 参数:与 wx.onAppShow 一致

onHide() 小程序从前台进入后台时触发。也可以使用 wx.onAppHide 绑定监听。

页面的生命周期

Page(Object object) | 微信开放文档

属性类型默认值必填说明
dataObject页面的初始数据
onLoadfunction生命周期回调—监听页面加载
onShowfunction生命周期回调—监听页面显示
onReadyfunction生命周期回调—监听页面初次渲染完成
onHidefunction生命周期回调—监听页面隐藏
onUnloadfunction生命周期回调—监听页面卸载
onPullDownRefreshfunction监听用户下拉动作
onReachBottomfunction页面上拉触底事件的处理函数
onShareAppMessagefunction用户点击右上角转发
onShareTimelinefunction用户点击右上角转发到朋友圈
onAddToFavoritesfunction用户点击右上角收藏
onPageScrollfunction页面滚动触发事件的处理函数
onResizefunction页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTapfunction当前是 tab 页时,点击 tab 时触发

路由

声明式路由

组件:navigator

属性: open-type

值:

  • navigate 只能打开非 tabBar 页面,新+页面栈

  • redirect 只能打开非 tabBar 页面,会替换当前栈

  • switchTab 只能打开 tabBar 页面,目标tabBar页面入栈 关闭其他所有非 tabBar 页面

  • reLaunch 可以打开任意页面,全部出栈,目标页面栈入栈

  • navigateBack 当前页面出栈

  • exit 全部出栈,无进栈 target="miniProgram"时生效

路由传参

url="/pages/xx/xx?a=1&b=2" switchTab 不能传参数

接参

app.js onLaunch(options) options={a:1,b:2}

pages.js onLoad(options) options={a:1,b:2}

编程式路由

1)、wx.redirectTo(object) 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面

如:

Wxml文件:
<button bindtap="toOther" >跳到other</button>

Js文件:
toOther(){
    console.log("toOther");
    wx.redirectTo({
        url: "../../pages/other/other",// 注意这个相对路径:朝回返两级,也不能出现在tabBar里
        success: function () {
            console.log("到other了");
        },
        fail: function (e) {
            console.log("失败了,other");
            console.log(e);
        }
    });
},

2)、wx.switchTab(object)

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

注意:只能跳到出现在tabBar的页面里,其它页面不行。

wx.switchTab(Object object) | 微信开放文档

如: App.json里的tabBar的配置:

"tabBar": {
    "list": [
        {
            "pagePath": "pages/index/index",
            "text": "首页"
        },
        {
            "pagePath": "pages/goodslist/goodslist",
            "text": "商品列表"
        }
    ]
}

注意:没有other,有index

goodslist.Wxml文件:

<button bindtap="toIndex" >回到index</button>
<button bindtap="toOther" >跳到other</button>

goodslist.Js文件:

toIndex: function () {
    wx.switchTab({
        url: '../../pages/index/index', //这个能够成功,因为,index在tabBar里的list属性里有。
    })
},
toOther() {
    console.log("toOther");
    wx.switchTab({
        url: "../../pages/other/other", //不能跳转,因为,other没有出现在tabBar的list属性里。
        success: function () {
            console.log("到other了");
        },
        fail: function (e) {
            console.log("失败了,other");
            console.log(e);
        }
    });
},

其它的由各位亲爱的同学们,自己仔细,细心地研究(锻炼自学能力噢……)

人机交互

1)、wx.showToast({})

显示消息提示框

如: Wxml文件:

<button bindtap="regCheck" >注册</button>

Js文件:

regCheck(){
    wx.showToast({
        title: "注册成功",
        icon: "success",
        duration: 500,
        mask: true
    })
},

2)、wx.showModal({})

显示模态对话框

如: Wxml文件:

<button bindtap="deleteInfo" >删除</button>

Js文件:

deleteInfo(){
    wx.showModal({
        title: '微信小程序',
        content: '确认要删除吗',
        success: function (res) {
            if (res.confirm) {
                console.log("你确认了");
            } else if (res.cancel) {
                console.log("你取消了");
            }
        }
    })
},

3)、显示loading提示框

wx.showLoading({})显示等待提示框,需主动调用wx.hideLoading 才能关闭

wx.hideLoading({})隐藏 loading 提示框

如:

wxml代码:

<button bindtap="getData" >获取数据</button>

js代码:

  getData(){
    //显示loading
    wx.showLoading({
      title: 'loading……………………',
    })
    // 发送请求
    setTimeout(function(){
      // 响应回来,隐藏loading
      wx.hideLoading();
    },2000);
​
  },

4)、显示操作菜单 wx.showActionSheet({})显示操作菜单

数据交互

1、请求本地模拟数据

小程序目前是一定要请求https的数据,如果想要请求本地数据需要对数据进行操作。

1).Json数据:

新建.js文件,写json数据

var local_database = [

{数据。。。。。}

]

module.exports = { //数据暴露出去

postList: local_database

}

2).使用json数据:

在需要使用数据的页面js中引用

var postsData=require('../../data/posts-data.js'); //引入

在生命周期的onLoad函数中使用this.setData({})进行数据赋值

2、request数据请求

发起 HTTPS 网络请求。request({参数:值})

1)、request数据请求真实接口数据

每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名与进行网络通信。

否则会出现如下错误:

如何设置: 选中自己的登录头像 选择登录信息 进行合法域名设置

注意:

域名不能使用 IP 地址或 localhost;

域名必须经过 ICP 备案;

2)、request请求mock数据

没有服务器怎么请求数据?那就跳过域名校验。

在微信开发者工具中,可以临时开启 *开发环境不校验请求域名*、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。

如下步骤:

在微信开发工具中 点击设置-》项目设置 就可以正常使用接口

选中:“不校验合法域名、web-view………………”

在代码中就可以使用json-server数据:

onLoad: function () {
    wx.request({
        url: 'http://localhost:3000/goods',
        header: {
            'content-type': 'application/json' // 默认值
        },
        success(res) {
            console.log(res.data)
        }
    })
}

post请求,需要设置请求头

header: { 'content-type': 'application/x-www-form-urlencoded' }

自定义组件

自定义组件 | 微信开放文档

(1) 组件模板和样式

(2) Component 构造器

(3) 组件间通信与事件

(4) 组件生命周期

(5) behaviors

(6) 组件间关系

(7) 数据监听器

(8) 纯数据字段

1、定义

不是创建page,而是创建component,一个小程序组件(wxml,wxss,js,json)

//组件名.js
Component({ //构造一个组件
   //组件的属性列表,相当于vue组件的props
  properties:{
    title:{ //属性名
      type:String,//类型
      value: '默认值'
    }
  },
  //组件数据,内部状态
  data:{ 
    msg:'..'
    num1:1,
    num2:2,
    sum:3
  }
          
  methods:{ //组件方法
    show(){
        console.log(this.data.msg/this.properties.title)
        this.setData({msg:...}) / properties 不可修改
     }
  }
                     
  //组件监听器
  observers: {
    'num1, num2': function(num1, num2) {
      // 在 num1 或者 num2 被设置时,执行这个函数
      this.setData({
        sum: num1 + num2
      })
    }
    
})

2、注册

全局注册

app.json , 到处可用(page,component)

"usingComponents":{
  "使用时的组件名":"components/comp1/comp1"
}
​

局部注册

pagename.json ,当前页面可以

"usingComponents":{....}

组件内注册

当前组件可用

"usingComponents":{....}
"component": true, // 当前组件可以套用组件

3、使用

<comp1 title="{{值}}"></comp1>

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

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

相关文章

Python进程之串行与并行

串行和并行 串行指的是任务的执行方式。串行在执行多个任务时&#xff0c;各个任务按顺序执行&#xff0c;完成一个之后才能进行下一个。&#xff08;早期单核CPU的情况下&#xff09; 并行指的是多个任务在同一时刻可以同时执行&#xff08;前提是多核CPU&#xff09;&#…

【蓝桥杯单片机记录】IO基础与LED控制

目录 一、IO基础 1.1 IAP15F2K61S2芯片原理图 1.2不同工作模式 二、新建工程的一些补充 2.1 keil中没有IAP15F2K61S2的头文件 解决&#xff1a;在isp软件中找到如下​编辑 2.2keil中的芯片选择 2.3推荐字体 三、sbit关键字 四、LED控制 4.1原理图 4.2不能直接通过IO…

电脑多出一个虚拟驱动器又无法删除怎么办

下载解压UltraISO https://wwb.lanzoum.com/i8vY71nqnp4d 右键UltraISO.exe以管理员身份运行 点击选项 点击配置 91fddbd892a0.png) 点击虚拟光驱&#xff0c;把设备数量改成无&#xff0c;点击确定即可

Spring是怎么解决循环依赖的

首先先解释一下什么叫循环依赖 循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环.比如A依赖于B,B依赖于A 循环依赖在spring中是允许存在的,spring框架依据三级缓存已经解决了大部分的循环依赖 一级缓存:单例池,缓存已经经历了完整的…

门诊单据打印用什么软件,线下处方单生成系统教程

门诊单据打印用什么软件&#xff0c;线下处方单生成系统教程 一、前言 以下软件教程以 佳易王诊所电子处方管理系统软件V17.3为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 如上图&#xff0c;电子处方或病历记录开单生成保存后&#xff0c;可…

3分钟部署完成Docker Registry及可视化管理工具Docker-UI

安装docker-registry 由于镜像文件会非常占用空间&#xff0c;因此需要选择一个磁盘充裕的位置来存放镜像数据。 这里设置为&#xff1a;-v /data/registry:/var/lib/registry&#xff0c;其中/data/registry是宿主机存放数据的位置。 docker run -d -p 5000:5000 --restart…

95.网游逆向分析与插件开发-游戏窗口化助手-窗口化助手显示与大小调整

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;地图数据获取的逆向分析与C代码还原 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;e85c0fc8b85895c8c…

深度分析一款新型Linux勒索病毒

前言 DarkRadiation勒索病毒是一款全新的Linux平台下的勒索病毒&#xff0c;2021年5月29日首次在某平台上发布了此勒索病毒的相关的信息&#xff0c;6月中旬趋势科技针对这个新型的勒索病毒进行了相关的分析和报道。 DarkRadiation勒索病毒采用Bash脚本语言编写实现&#xff0…

运维高级篇-分库分表(拆分策略详解)

分库分表 介绍 问题分析 随着互联网及移动互联网的发展&#xff0c;应用系统的数据量也是成指数式增长&#xff0c;若采用单数据库进行数据存 储&#xff0c;存在以下性能瓶颈&#xff1a; IO瓶颈&#xff1a;热点数据太多&#xff0c;数据库缓存不足&#xff0c;产生大量磁盘…

Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组

两数之和 —— 无序数组 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现…

SCI 1区论文:Segment anything in medical images(MedSAM)[文献阅读]

基本信息 标题&#xff1a;Segment anything in medical images中文标题&#xff1a;分割一切医学图像发表年份: 2024年1月期刊/会议: Nature Communications分区&#xff1a; SCI 1区IF&#xff1a;16.6作者: Jun Ma; Bo Wang(一作&#xff1b;通讯)单位&#xff1a;加拿大多…

「Mybatis实战五」:Mybatis核心文件详解 - MyBatis常用配置environments、properties

一、MyBatis核心配置文件层级关系 ​ 本文代码在 Mybatis初体验&#xff1a;一小时从入门到运行你的第一个应用 所构建的基础代码结构之上&#xff0c;进行修改。 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下&#xff1a; 二…

【C语言初阶-结构体】关于结构体的声明定义、结构体传参详解

目录 1. 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问 2.1(.)操作符 2.2&#xff08;->&#xff09;操作符 3.结构体传参 1. 结构体的声明 1.1 结构的基础知识 结构体是一些值的集合&…

K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的Pod状态PendingPodScheduledUnschedulablePodInitializingImagePullBackOffInitializedRunningErrorCrashLoopBackOffTerminatingSucceededFailedEvictedUnknown Pod的重启策略使用Always重启策略使用Never重启策略使用OnFailure重启策略(常用) …

【经验】SPICE仿真 - Bob Pease会说No吗?

每一个读过我博客的人都知道&#xff0c;我使用SPICE模型仿真电路。你可能听说过Bob Pease&#xff0c;在SPICE领域相当执有己见&#xff0c;他曾经说过&#xff1a;“SPCIE模型削弱了你对所发生事物的洞察能力。SPICE模型实际上降低了你对电路如何工作的理解能力”。今天&…

【原创 附源码】Flutter海外登录--Google登录最详细流程

最近接触了几个海外登录的平台&#xff0c;踩了很多坑&#xff0c;也总结了很多东西&#xff0c;决定记录下来给路过的兄弟坐个参考&#xff0c;也留着以后留着回顾。更新时间为2024年2月8日&#xff0c;后续集成方式可能会有变动&#xff0c;所以目前的集成流程仅供参考&#…

Linux操作系统基础(二):Linux操作系统概述

文章目录 Linux操作系统概述 一、Linux起源 二、Linux 的含义 三、Linux发行版 Linux操作系统概述 一、Linux起源 Linux创始人——林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间实现的 Linux的特点&#xff1a;开源、免费、拥有最为庞大的源码贡献者 …

用HTML5实现灯笼效果

本文介绍了两种实现效果&#xff1a;一种使用画布&#xff08;canvas&#xff09;标签/元素&#xff0c;另一种不用画布&#xff08;canvas&#xff09;标签/元素主要使用CSS实现。 使用画布&#xff08;canvas&#xff09;标签/元素实现&#xff0c;下面&#xff0c;在画布上…

SpringSecurity+OAuth2权限管理实战

Spring Security快速入门 官方文档&#xff1a; Spring Security :: Spring Security 功能&#xff1a; 身份认证&#xff08;authentication&#xff09; 授权&#xff08;authorization&#xff09; 防御常见攻击&#xff08;protection against common attacks&#xff…

CentOS 安装 redis 7.2

nginx官网 https://redis.io/download/ 把鼠标放到这里&#xff0c;复制下载地址 在服务器找个文件夹执行命令 wget https://github.com/redis/redis/archive/7.2.4.tar.gz tar -zxvf 7.2.4.tar.gz make make install 看到这几行就说明安装成功了 不放心的话再查看下b…