微信小程序学习之路(一)

微信小程序总结(学习阶段一) 微信小程序总结 1.页面介绍: WXML模板:wxss书写样式,样式和css基本一样; wxml类似于之前的html书写页面结构 wxss类似于之前的css书写页面样式 sitemap和project.config.json属于配置文件 app.wxss全局样式 app.js配置文件 utils书写插件 app.json书写全局配置信息 https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html pa 阅读详情

小程序开发简易教程:

  1. 获取AppID
  2. https://mp.weixin.qq.com – 设置 – 开发者设置中
  3. 下载开发者工具
  4. 创建项目
    • app.js 小程序的脚本代码,监听处理小程序的生命周期函数、申明全局变量、调用框架提供的API等等
      1. App();函数注册一个小程序
      2. onLaunch();程序初始化完成时触发,全局指触发一次
      3. onShow(options);启动或从后台进入前台显示时触发
      4. onHide();从前台进入后台会触发
      5. onError(msg);脚本错误或API调用失败会触发,并带上错误信息
      6. getUserInfo(){};获取用户信息,需要先调用wx.login();
        • wx.login({});调用微信登录接口,获取登录凭证(code),进而获取用户登录信息,包括用户的唯一标识(openid),及本次登录的会话密钥(session_key)。用户数据的加解密通讯需要密钥来完成。
    • app.json 搜对整个小程序的全局配置:配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题。
      1. ”pages”: [],配置页面路由
      2. “window”:{}设置默认页面的窗口表现
    • app.wxss 是整个小程序的公共样式表我们可以在页面组件的class上直接使用app.wxss中申明的样式规则
    • 创建页面
      1. *.js 文件 :脚本文件 — 在这个文件中我们可以监听并处理页面的生命周期函数、获取小程序实例,声明并处理数据,响应页面交互事件等。
      2. *.json 文件 :配置文件 — 页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。
      3. *.wxss 文件 :页面样式文件
      4. *.wxml 文件 :页面结构文件

框架

  1. 框架的页面管理
    框架 管理了整个小程序的页面路由,可以做到页面间的无缝切换,并给以页面完整的生命周期。开发者需要做的只是将页面的数据,方法,生命周期函数注册进 框架 中,其他的一切复杂的操作都交由 框架 处理。
  2. 框架的基础组件
    框架 提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序 。
  3. 丰富的 API
    框架 提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。

文件结构

  1. 配置:
    • app.json
      1. ”pages”: [] 设置页面路径
      2. “window”: { //设置默认窗口的表现(颜色都是十六进制的)
        “navigationBarBackgroundColor”: #000, //导航栏背景颜色
        “navigationBarTextStyle”: white/black, //导航栏标题颜色,仅支持black/white
        “navigationBarTitleText”: string, //导航栏标题
        “backgroundColor”: #fff, //窗口的背景颜色
        “backgroundTextStyle”: dark, //下拉背景字体、loading 图的样式,仅支持 dark/light
        “enablePullDownRefresh”: boolean //是否开启下拉刷新,详见页面相关事件处理函数。
        }
      3. “tabBar”: { //设置底部的tab
        “color”: #ddd, //tab上文字的默认颜色
        “selectedColor”: #333, //选中tab时的颜色
        “backgroundColor” #ccc, //tab背景颜色
        “borderStyle”: black/white, //tabBar上边框的颜色,仅支持black/white
        “list”: [ //tab 的列表
        {
        “pagePath”: ‘../..’, //pages中定义的页面路径
        “text”: string, //tab上的按钮文字
        “iconPath”: ‘../..’, //图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效
        “selectedIconPath”: ‘../..’ //选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效
        }
        ],
        “position”: top/bottom //
        }
      4. “networkTime”: { //网络超时时间
        “request”: 10 000, //wx.request 的请求超时时间,默认60 000(下面都是)
        “connectSocket”: 10 000, //wx.connectSocket的超时时间
        “uploadFile”: 10 000, //wx.uploadFile的超时时间
        “downloadFile”: 10 000, //wx.downloadFile的超时时间
        }
      5. “debug”: boolean 是否开启debug模式
    • page.json :页面的.json只能设置 window 相关的配置项,以决定本页面的窗口表现,所以无需写 window 这个键
    • 属性如下:
      {
      “navigationBarBackgroundColor”: #000,
      “navigationBarTextStyle”: black/white,
      “navigationBarTitleText”: string,
      “backgroundColor”: #ddd,
      “backgroundTextStyle”: dark/light,
      “enablePullDownRefresh”: boolean,
      “disableScroll”: boolean //设置为 true 则页面整体不能上下滚动;只在 page.json 中有效,无法在 app.json 中设置该项(默认 false )
      }

逻辑层

注册程序:App(options);

App() 函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。

```
    options = {
        onLaunch: function(){},     //生命周期函数--监听小程序初始化(只会触发一次)  
        onShow: function(){},       //生命周期函数--监听小程序显示(每次显示小程序都会触发)  
        onHide: function(){},       //生命周期函数--监听小程序隐藏(每次小程序从前台进入后台都会触发)  
        onError: function(msg){},      //当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息    
        userFun:function(){}        //用户自定义函数   
    }
```

问题:
1. onLaunch 和 onShow 的参数
+ path: string 打开小程序的路径
+ query: {} 打开小程序的query
+ scene: number 打开小程序的场景值
+ shareTicket: string ???
1. getApp()函数:获取小程序实例
+ console.log(getApp().globalData);
+ App()必须在app.js中注册,并且不能注册多个
+ 不要再App()内部使用getApp(),用this即可
+ 不要再onLaunch时调用getCurrentPage(),此时page还没有生成
+ 通过getApp()获取实例后,不要随意调用生命周期函数 ??????

注册页面

Page(options) 函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。

```
    options = {
        data: {},   // 页面的初始数据  
        onLoad: function(){},
        onReady: function(){},      //生命周期函数--监听页面初次渲染完成    
        onShow: function(){},
        onHide: function(){},
        onUnload: function(){},     //生命周期函数--监听页面卸载  当redirectTo或navigateBack的时候调用。  
        onPullDownRefresh: function(){},        //页面相关事件处理函数--监听用户下拉动作  
        onReachButton: function(){},        //页面上拉触底事件的处理函数 
        onShareAppMessage: function(){},    //用户点击右上角转发 
        route: string,      //当前页面的路径   
        userFun:function(){}
    } 
```

更改data中的数据需要用到this.setData(key: value);方法,否则不会生效

页面路由

  • 页面栈:
    1. 页面栈以栈(先进后出)的形式维护页面与页面之间的关系;
    2. 小程序提供了getCurrentPages()函数获取页面栈,第一个元素为首页,最后一个元素为当前页面。
    3. 使用wx.navigateTo每新开一个页面,页面栈大小加1,直到页面栈大小为5为止;
    4. 使用wx.navigateTo重复打开界面,页面栈大小加1,直到页面栈大小为5为止;
    5. 使用wx.redirectTo重定向,当前页面被替换,页面栈不变,如果新页面之前打开过,则得到的是两个状态独立的同一页面
    6. 使用wx.navigateBack返回,当delta为1,等同于左上返回按钮,页面栈减一;当delta为2,关闭依次五级页面和四级页面,当前页面为三级页面,页面栈大小减2;以此类推,直到栈底为止,也就是首页。
  • 哪些情况会触发页面跳转

    1. 小程序启动,初始化第一个页面
    2. 打开新页面,调用 API wx.navigateTo 或使用组件

          wx.navigateTo({
              //目的页面地址,原页面保留
              url: 'pages/logs/index',
              success: function(res){},
              ...
          })
    3. 页面重定向,调用 API wx.redirectTo 或使用组件

          wx.redirectTo({
              //目的页面地址,原页面被关闭,不可返回
              url: 'pages/logs/index',
              success: function(res){},
              ...
          })
          <navigator url="pages/logs/index" hover-class="navigator-hover">跳转</navigator>
          // 当该组件添加redirect属性时,等同于wx.redirectTo接口;默认redirect属性为false,等同于wx.navigateTo接口。
    4. 页面返回,调用 API wx.navigateBack或用户按左上角返回按钮

          wx.navigateBack({
              delta: 1
          })
          // delta为1时表示返回上一页,为2时表示上上一页,以此类推;如果dalta大于已打开的页面总数,则返回到首页。返回后,元界面会销毁。
    5. tarbar切换 页面全部出栈,只留下新的 Tab 页面

    6. 重加载 页面全部出栈,只留下新的 Tab 页面
  • 如何正确使用页面跳转: 官方规定小程序最多只能有五个页面同时存在,意思是在不关闭页面的情况,最多新开五个页面,页面深度为5。

    1. 对于可逆操作,使用wx.navigateTo,比如从首页跳转到二级页面,从二级页面返回是不需要重新渲染首页
    2. 对于不可逆操作,使用wx.redirectTo,比如用户登录成功后,关闭登录页面,不能返回到登录界面。
    3. 对于一些介绍性等不常用页面wx.redirectTo或wx.navigatrBack
    4. 对于类似九宫格、列表项,使用
    5. 不要在首页使用wx.redirectTo,这样会导致应用无法返回首页
    6. 简化需求、简化流程;核心功能在两三个页面完成便是张小龙追求『小而美』的体现
  • getCurrentPages(): 用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
  • 注意:
    1. navigateTo, redirectTo 只能打开非 tabBar 页面。
    2. switchTab 只能打开 tabBar 页面。
    3. reLaunch 可以打开任意页面。
    4. 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
    5. 调用页面路由带的参数可以在目标页面的onLoad中获取。

模块化

  • 文件作用域

    1. 在js文件中申明的函数只在该文件中有效,
    2. 通过全局的getApp()函数可以获得全局的应用实例:
        //app.js
        App({
            globalData: 1
        })
    
        // index.js
        var app = getApp();
        app.globalData ++;
    
        // logs.js
        console.log(getApp().globalData);   // 2
  • 模块化

    1. 我们可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports(不推荐使用) 才能对外暴露接口。
    2. 小程序目前不支持直接引入 node_modules , 开发者需要使用到 node_modules 时候建议拷贝出相关的代码到小程序的目录中。
    3. ​在需要使用这些模块的文件中,使用 require(path) 将公共代码引入
        // common.js
        function sayHello(name){
            console.log(\`hello ${name} !\`)
        }
        function sayBye(name){
            console.log(\`Goodbye ${name} !\`)
        }
    
        module.exports.sayHello = sayHello;
        exports.sayBye = sayBye;
    
        // index.js中调用  
        var comm = require(../common.js);
    
        Page({
            helloJack:function(){
                comm.sayHello("Jack");
            },
            goodByeRose: function(){
                comm.sayBye("Rose");
            }
        })

视图层

视图层有wxml何wxss组成
将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。

wxml :WXML(WeiXin Markup Language)是框架设计的一套标签语言

  1. 数据绑定

    • 动态数据来源: Page({})的data:{}
    • 绑定目标: Mustache 语法 {{ }}
    • 作用对象: 标签内容<view> {{ logs }} </view>; 组件属性: <block wx:for-item="{{ logs }}"></view>
    • Mustache 语法在微信小程序中的另一个用途: 用在关键字上: <checkbox checked="{{ false }}" ></checkbox>,注意此处去掉大括号会编译为字符串,达不到目的
    • 运算: 可以在{{}}中进行简易的运算,参考vue的数据绑定
          // 三目运算
          <view hidden="{{flag ? true : false}}"> Hidden </view>
      
          // 算术运算
          <view> {{a + b}} + {{c}} + d </view>
          Page({
          data: {
              a: 1,
              b: 2,
              c: 3
          }
          })
      
          // 逻辑判断
          <view wx:if="{{length > 5}}"> </view>
          // 字符串运算
          <view>{{"hello" + name}}</view>
          Page({
          data:{
              name: 'MINA'
          }
          })
      
          // 组合运算
          <template is="objectCombine" data="{{for: a, bar: b}}"></template>
          Page({
          data: {
              a: 1,
              b: 2
          }
          })
          // 最终组合成的对象是 {for: 1, bar: 2}
      
          ......
  2. 列表渲染

    • wx.for=”{{ arr }}”, 默认送了两个参数: {{ index }} 和 {{ item }} , 分别为数组元素下标和对应的数组元素
        <view wx:for="{{array}}">
            {{index}}: {{item.message}}
        </view>
    
        Page({
        data: {
            array: [{
            message: 'foo',
            }, {
            message: 'bar'
            }]
        }
        })
    • 使用 wx:for-item 可以指定数组当前元素的变量名,使用 wx:for-index 可以指定数组当前下标的变量名:
        <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i">
            <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j">
                <view wx:if="{{i <= j}}">
                    {{i}} * {{j}} = {{i * j}}
                </view>
            </view>
        </view>
    • block: wx:for, 渲染一个包含多节点的块:
        <block wx:for="{{[1, 2, 3]}}">
            <view> {{index}}: </view  >
            <view> {{item}} </view>
        </block>
    • wx:key ??? 取值为 this(指向for循环的item本身,并且item不会变化的),或者string,为循环中对象的键
  3. 条件渲染

    • wx:if=”{{ condition }}”

          <view wx:if="{{condition}}"> True </view>
      
          也可以用 wx:elif 和 wx:else 来添加一个 else 块:
          <view wx:if="{{length > 5}}"> 1 </view>
          <view wx:elif="{{length > 2}}"> 2 </view>
          <view wx:else> 3 </view>
      
    • block: wx: if 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

        <block wx:if="{{true}}">
            <view> view1 </view>
            <view> view2 </view>
        </block>
    • wx:if 和 hidden
      1. wx: if是惰性的,只有在if条件改变时才会改变渲染,初始加载耗费性能较小,后续条件改变有更高的消耗,适合运行时条件不大可能会改变的渲染
      2. hidden始终都会保持渲染,只是切换显示和隐藏,初始加载耗费性能较多,后续影响较小,适合频繁切换显示和隐藏
  4. 模板:

    • 定义模板:使用name属性,作为模板的名字。然后在内定义代码片段
        <!--
            index: int
            msg: string
            time: string
        -->
        <template name="msgItem">
            <view>
                <text> {{index}}: {{msg}} </text>
                <text> Time: {{time}} </text>
            </view>
        </template>
    • 使用模板:使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入(is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板:)
        <template name="odd">
            <view> odd </view>
        </template>
        <template name="even">
            <view> even </view>
        </template>
    
        <block wx:for="{{[1, 2, 3, 4, 5]}}">
            <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
        </block>
    • 模板作用域:模板有自己的作用域,只能使用data传入的数据
  5. 事件

    • 小程序的事件:
      1. 事件是视图层到逻辑层的通讯方式。
      2. 事件可以将用户的行为反馈到逻辑层进行处理。
      3. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
      4. 事件对象可以携带额外信息,如 id, dataset, touches。
    • 事件的具体用法
      1. 在组件中绑定一个事件处理函数<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
      2. 在Page的定义中写上相应的处理函数,参数是event
        Page({
            tapName: function(event) {
                console.log(event)
            }
        })
    • 事件分类:冒泡事件(事件向父组件传递)和非冒泡事件
      1. wx的冒泡事件:
        • touchstart — 手指触摸动作开始
        • touchmove — 手指触摸后移动
        • touchcancel — 手指触摸动作被打断,如来电提醒,弹窗
        • touchend — 手指触摸动作结束
        • tap — 手指触摸后马上离开
        • longtap — 手指触摸后,超过350ms再离开
      2. 未作特殊说明的都是非冒泡事件
    • 事件绑定:事件绑定的写法同组件的属性,以 key、value 的形式。
    • key 以bind或catch开头,然后跟上事件的类型,如bindtap, catchtouchstart
    • value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。
    • bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。
    • 事件对象: 当组件触发事件时,逻辑层绑定该事件的处理函数会收到一个事件对象。当组件触发事件时,逻辑层绑定该事件的处理函数会收到一个事件对象。打印事件event即可查看事件对象
      1. type: 事件类型
      2. timeStamp: 从打开页面到触发事件所经过的毫秒数
      3. target: 触发事件的源组件,包含组件ID,触发事件的tagName,dataset(事件源组件上由data-开头的自定义属性组成的对象集合)
      4. currentTarget: 事件绑定的当前组件,属性同上
      5. touches: touches 是一个数组,每个元素为一个 Touch 对象(canvas 触摸事件中携带的 touches 是 CanvasTouch 数组)。 表示当前停留在屏幕上的触摸点。
        touch对象属性:
        • identifier — 触摸点的标识符
        • pageX, pageY — 距离文档左上角的距离,文档的左上角为原点
        • clientX, clientY — 距离页面可显示区域(屏幕除去导航条)左上角距离
          CanvasTouch 对象:
        • identifier — 触摸点的标识符
        • x,y — 距离 Canvas 左上角的距离
      6. changedTouches:changedTouches 数据格式同 touches。 表示有变化的触摸点,如从无变有(touchstart),位置变化(touchmove),从有变无(touchend、touchcancel)
      7. detail: 自定义事件所携带的数据,如表单组件的提交事件会携带用户的输入,媒体的错误事件会携带错误信息,详见组件定义中各个事件的定义。点击事件的detail 带有的 x, y 同 pageX, pageY 代表距离文档左上角的距离。
  6. 引用:WXML 提供两种文件引用方式import和include。

    • import:import可以在该文件中使用目标文件定义的template
        // item.wxml    
        <template name="item">
            <text>{{text}}</text>
        </template>
    
        // index.wxml  
        <import src="item.wxml"/>
        <template is="item" data="{{text: 'forbar'}}"/>
    
        // import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件 import 的 template。
    • include: include可以将目标文件除了的整个代码引入,相当于是拷贝到include位置
        <!-- index.wxml -->
        <include src="header.wxml"/>
        <view> body </view>
        <include src="footer.wxml"/>
    
        <!-- header.wxml -->
        <view> header </view>
    
        <!-- footer.wxml -->
        <view> footer </view>

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

WXSS 具有 CSS 大部分特性,同时为了更适合开发微信小程序,我们对 CSS 进行了扩充以及修改。与 CSS 相比我们扩展的特性有:
+ 尺寸单位
rpx: 规定屏幕宽度为750rpx,即宽度为375px的屏幕(iphone6)共有750个物理像素,则750rpx = 375px = 750物理像素
+ 样式导入
使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。
内联样式:框架组件上支持使用 style(<view style="color:{{color}};" />)、class(同css3) 属性来控制组件的样式。
+ 全局样式和局部样式: app.wxss 和 page.wxss (后者样式会覆盖前者)

兼容性解决:

  • 问题来源: 低版本的微信程序不兼容新的小程序API,
  • 解决方法: 判断是否支持用户的手机。

        if (wx.openBluetoothAdapter) {
            wx.openBluetoothAdapter()
        } else {
            // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
            wx.showModal({
                title: '提示',
                content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
            })
        }

组件

下期继续。。。

微信小程序学习(一) 为了测试效果,修改index.scss.box{.flex-1{width: 5%;效果默认flex-direction: row;align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。该属性可能取6个值。flex-start:与交叉轴的起点对齐。 阅读详情

相关推荐

微信小程序学习日志(一)

微信小程序学习日志之工具配置及创建简单页面1.任务与分工在这次点餐系统项目中,我和我所在的小程序组的共三个成员主要负责小程序前端的实现。我们针对菜单,点菜清单(结算页面)以及评论三个主要页面进行了初步的实现。其中我负责的是评论页,需要实现的是展示出全部的客户的评价。这是我第一次参与小程序的项目,因此简单学习了一些关于微信小程序的前端实现的知识,在此简要记录下自己的经历与收获。2.开发者工具使用的学习

pomelo_W的博客 3088

小程序支持打开APP

根据微信的官方文档,小程序支持打开APP,专门研究了下这个API有什么,官方文档地址如下 https://mp.weixin.qq.com/debug/wxadoc/dev/component/button.html     launchApp 打开APP,可以通过app-parameter属性设定向APP传的参数   我们再看来看launchAPP的参数说明  https://m...

weixin_33979745的博客 2295

微信小程序学习(一)

本文讲解了微信小程序项目的基本架构,以及如何学习微信小程序,以及学习微信小程序所需要的基础,还有前台渲染的基本代码

W19525552686的博客 724

微信小程序开发指南:精通一切的秘籍(保姆级别+超详细)

小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。

老高的博客 3万+

微信小程序初步学习及遇到的问题(一)

微信小程序初步学习及遇到的问题(一) 最近新来的几个实习生在学微信开发,问题比较多,闲来结合网上以及他们纠结的几个点总结了一点内容,时间仓促,后面继续加更。 一:项目结构 微信小程序项目结构主要有四个文件类型,如下** WXML (WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。内部主要是微信自己定义的一套组件。 WXSS (W...

weixin_44663886的博客 1124

【微信小程序】常用API-获取场景值

通过上述方法,你可以在微信小程序中轻松获取场景值,并根据不同的场景值提供个性化的用户体验。合理利用场景值不仅可以提升用户体验,还能帮助开发者更好地理解和优化小程序的使用情况。

墨夶的博客 1092

微信小程序开发【从0到1~入门篇】

1.1 什么是小程序?1.2 小程序可以干什么?同App进行互补,提供同app类似的功能,比app操作更加简洁的轻应用通过扫一扫或者在微信搜索即可下载用户使用频率不高,但又不得不用的功能软件,目前看来小程序是首选连接线上线下。

m0_63300795的博客 4万+

5分钟搞定阿里云千问大模型API申请:手把手教你获取API Key

本文提供了一份高效的阿里云通义千问大模型API Key获取实战指南。通过清晰的步骤,帮助开发者在五分钟内完成从账号准备、精准导航控制台到创建并验证API Key的全过程,并强调了密钥安全管理和基础调用测试的重要性,助力快速集成AI能力。

ol789012345的博客 1359

微信小程序开发(超详细保姆式教程)

微信小程序开发(超详细保姆式教程)

m0_64875238的博客 64万+

eMMC数据擦除的方式

接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。

DPJimmy的博客 1774

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

AI人人懂 1315

微信小程序学习总结(一)

微信小程序学习总结(一) 微信小程序: 简称: 小程序,是一种不需要安装即可使用的应用 特点: 免安装 操作更接近原生APP 必须在微信中使用 不占内存 易传播 官方文档地址: https://developers.weixin.qq.com/miniprogram/dev/ 一.小程序目录结构: app.js 注册一个小程序 app.json 全局配置(窗口的表现, 网络超时...

山中何事的博客 2002

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,Pod 的状态为 **`CrashLoopBackOff`** 表示某个容器在启动后崩溃,Kubernetes > 尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增加。下面将详细介绍 `CrashLoopBackOff > `状态的原因、解决方案及相关命令的输出解释。

颜淡慕潇 8381

微信小程序学习笔记(阶段一)

一阶段学习过程:   (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/   (二)看小码哥视频:https://chuanke.baidu.com/v2040981-197486-1133724.html   (三)模仿并写出一个计算器小程序demo 项目结构:   pages:存储这各个页面的文件夹   pages...

weixin_30615767的博客 125

FlexSim:FlexSim软件介绍与安装

在开始安装FlexSim之前,首先需要从FlexSim官方网站下载安装包。FlexSim提供不同版本的软件,包括教育版、专业版等,确保选择适合您需求的版本。下载页面通常会列出系统要求,包括操作系统、处理器、内存和硬盘空间,确保您的计算机满足这些要求。访问FlexSim官方网站。导航至下载页面。选择适合您需求的FlexSim版本。点击下载按钮,开始下载安装包。在开始构建模型之前,首先需要明确模型的目标。模型目标是指导模型设计和分析的核心,它定义了你希望通过模型解决的问题或探索的系统行为。

kkchenjj的博客 5808

vue3 - 详细实现内网使用离线高德地图功能,在vue3中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制)

vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,内网部署高德地图,无需联网离线使用,vue3+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue3项目中下载离线地图,地图加载不出来,不显示怎么办,内网使用离线高德地图加载失败问题,vue3实现离线地图+高德瓦片,vue3高德离线地图,如何使用离线高德地图和自定义地图样式,高德离线地图的下载,怎么下载高德地图瓦片,一键把所有瓦片都下载下来,离线加载,内网部署,离线

✅ 精选推荐文章 1万+

微信小程序基础学习一

微信小程序基础学习一 1.小程序自学前的准备(技术就不多说啦)看下官网地址小程序官方文档里面有起步带你快速入门 。 2 个人感觉小程序和VUE是非常相似的。如果你会VUE基本很快可以上手 3 按照官网下载小程序开发工具可以很快生成一个小程序模板。 小程序页面结构 ├── pages ······································ 【目录】存放所有的小程序页面 │ │── index ···································· 【目录】ind

qq_38152997的博客 241

ISO21434 组织网络安全管理(二)

为了实现网络安全工程,该组织建立并维护网络安全治理和网络安全文化,包括网络安全意识管理、能力管理和持续改进。这涉及到指定针对本文档的目标进行独立审计的特定于组织的规则和过程。 为了支持网络安全工程,该组织实施了网络安全的管理系统,包括管理工具和应用质量管理系统。

qq_42357877的博客 1322

七天学习微信小程序开发(一)—— 学习笔记

文章目录前言目标第一天 —— 前端配置和编写微信开发微信小程序的代码结构常用标签(wxml)常用样式(wxss)界面布局的技术任务第二天 —— 深度学习微信前端编写(一)程序底部图标页面数据for循环if语句任务第三天 —— 深度学习微信前端编写 (二)文本框和按钮的事件获取用户信息点击按钮发送消息关于微信前端样式的补充任务第四天 —— 后端环境配置和编写node.js的安装方法egg框架的安装...

JCManZZ的博客 2854

深入RKNN Toolkit2:自定义算子与内存优化秘籍

本文系统探讨了RKNNToolkit2在模型转换中的关键技术与优化策略。首先介绍了该工具包的基础功能及模型转换流程,重点阐述了自定义算子的实现方法,包括算子分析、代码编写和注册集成等步骤,并以ReduceLogSumExp算子为例进行案例分析。在内存优化方面,详细论述了模型量化、内存复用和参数配置等策略,通过具体案例展示优化效果。最后结合智能安防项目实践,分享了YOLOv5模型部署经验及问题解决方案。文章指出,随着AI技术发展,RKNNToolkit2将在算子支持、量化技术和硬件适配等方面持续优化,为边缘计

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1390

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

微信小程序开发学习笔记①

微信小程序开发学习笔记

tutgxu的博客 1389

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

微信小程序学习 (一)

微信小程序学习 (一) 微信小程序学习 (一) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言开发者工具的下载与安装二、认识一下文件1.文件后缀 前言 提示:这里可以添加本文要记录的大概内容: 例如:这是自己第一次发布博客,自己最近也正想要学习微信小程序的制作,就发布一个这样的系列文章,激励自己一下。 提示:以下是本篇文章正文内容,下面案例可供参考 开发者工具的下载与安装 可以在微信公众平台.下载开发者...

qq_44667233的博客 416

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微信小程序学习之路《一》 目录结构

微信小程序开发 - 目录结构   学习一个框架,首先应该了解一下它的目录结构,小程序的目录结构如下图:    从demo中可以看到主要分为两部分:程序主体部分、业务逻辑部分。   1、程序主体部分:由三个文件组成,必须放在项目的根目录。   文件 必填 作用 app.js 是 小程序逻辑,app启动首先会执行该文件内的部分方...

博客颜色 216

微信小程序——学习心得一

一、模板: ①定义模板 1.在 内定义代码片段,使用name作为唯一标识属性,作为模板的名称; 在实践操作中自己的问题在于容易忽视掉必要的{{}}括号和个别语句的架构问题,经过对语言的校对和修改慢慢可以改正错误,逐渐熟练。 示例如: <template name = " chengxu" /> <view> <text>{{ index...

ZhouDong0110的博客 1096

微信小程序学习笔记(一)了解微信小程序

一、什么是小程序(了解) 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。 需要更多教程,微信扫码即可 ???????????? 别忘了扫码领资料哦【高清Java学习路线图】 和【全套学习视频及配套资料】 二、小程序的种类(了解) 微信小程序、支付宝小程序、头条小程序、百度小程序、QQ小程序 三、小程序的发展史(了解)

关注我!带你一路 "狂飙" 到底! 750
上一篇: ES6学习之路~~作用域和闭包(Scope and closure)
下一篇: vuex怎么学(一)
EricLua
博客等级 码龄9年 34粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值