超全小程序开发的学习 知识点

news2024/11/14 21:24:44

第一章:邂逅小程序开发

image-20230117103305997

01_小程序开发和各个平台小程序的介绍

小程序加载的时候是双线程模型.wxml文件和wxss文件是一个线程,js和json文件是一个线程。

image-20230117103427181

image-20230117103452282

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEP3PUoo-1675132790458)(https://qny.xjc1016jzy.love/blog/applet/image-20230117103506537.png)]

image-20230117103604468

02_(了解)小程序由谁开发和技术选型

image-20230117103617864

image-20230117103632386

03_(理解)小程序开发的预备知识

image-20230117103650184

04_(掌握)申请AppID和下载-使用开发者工具

 接入流程:https://mp.weixin.qq.com/cgi-bin/wx

image-20230117103659564

05_(掌握)微信开发工具的界面介绍

image-20230117103740560

06_(了解)使用VSCode来开发小程序

image-20230117103749192

image-20230117103810261

image-20230117103819485

07_(掌握)项目的整体结构和目录的分析

image-20230117103825288

08_(掌握)阅读官方文档-每个模块的作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3KXvyGTy-1675132790460)(https://qny.xjc1016jzy.love/blog/applet/image-20230117103832271.png)]

09_(掌握)小程序开发初体验-绑定数据和列表展示

image-20230117103915110

小程序中的block标签类似于vue中的template标签

10_(掌握)小程序开发初体验-计数器案例实现

在修改data中的数据,但是修改并不会引起页面的刷新(自动检测你的新数据重新渲染页面,在小程序中不会,react中也不会),vue中可以直接实现的原因是因为对数据进行响应劫持,所以修改小程序的data数据,并希望重新渲染页面,这里必须使用this.setData

this.setData({
    这里的this指的是本页面中的Page实例
    counter:this.data.counter + 1
})

11_(理解)小程序的MVVM架构思想

image-20230117085804493

命令式编程和声明式编程

声明式编程就像是你告诉你朋友画一幅画,但是你不用去关心他怎么画。

命令式编程就像是你的朋友完全按照你的命令,将画一步步地画出来。

一、命令式编程
命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。(注重过程)。用详细的命令机器怎么去处理一件事情以达到你想要的结果。
例如你想通过点击改变页面中某一个元素,首先要获取按钮,再给按钮添加点击事件,获取要改变的元素,执行点击函数,改变元素达到自己的目的,这是一步一步的步骤操作,就如同给计算机发布命令,一步一步执行,这就是命令式编程。

二、声明式编程
告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。(注重结果)

简单的说,你只需要告诉计算机,你要得到什么样的结果,计算机则会完成你想要的结果,以Vue为例,在页面中通过 {{ }} 显示一个data里面的变量,你只需要改变这个变量,页面就会跟着刷新,这就是你只需要结果,vue 内部去处理过程,这就是声明式编程。

假设我们想让一个数组里的数值翻倍,我们用命令式编程风格实现,像下面这样:

var numbers = [1,2,3,4,5]
var doubled = []
for(var i = 0; i < numbers.length; i++) {
  var newNumber = numbers[i] * 2
  doubled.push(newNumber)
}
console.log(doubled)

//=> [2,4,6,8,10]

我们直接遍历整个数组,取出每个元素,乘以二,然后把翻倍后的值放入新数组,每次都要操作这个双倍数组,直到计算完所有元素。

而使用声明式编程方法,我们可以用 Array.map 函数,像下面这样:

var numbers = [1,2,3,4,5]
var doubled = numbers.map(function(n) {
  return n * 2
})
console.log(doubled)

//=> [2,4,6,8,10]

map 利用当前的数组创建了一个新数组,新数组里的每个元素都是经过了传入map的函数(这里是function(n) { return n*2 })的处理。

map函数所作的事情是将直接遍历整个数组的过程归纳抽离出来,让我们专注于描述我们想要的是什么(what)。注意,我们传入map的是一个纯函数;它不具有任何副作用(不会改变外部状态),它只是接收一个数字,返回乘以二后的值。

在一些具有函数式编程特征的语言里,对于list数据类型的操作,还有一些其他常用的声明式的函数方法。例如,求一个list里所有值的和,命令式编程会这样做:

var numbers = [1,2,3,4,5]
var total = 0
for(var i = 0; i < numbers.length; i++) {
  total += numbers[i]
}
console.log(total) 

//=> 15

而在声明式编程方式里,我们使用 reduce 函数:

var numbers = [1,2,3,4,5]
var total = numbers.reduce(function(sum, n) {
  return sum + n
},0);
console.log(total) 

//=> 15

reduce 函数利用传入的函数把一个 list 运算成一个值。它以这个函数为参数,数组里的每个元素都要经过它的处理。每一次调用,第一个参数(这里是sum)都是这个函数处理前一个值时返回的结果,而第二个参数(n)就是当前元素。这样下来,每此处理的新元素都会合计到sum中,最终我们得到的是整个数组的和。

三、两者优缺点
命令式编程更加的精细化,更严谨,程序也会一丝不苟的执行你的命令。但是操作步骤比较多,代码量大,影响开发效率.

声明式让你可以更关注在状态表现,而不用去考虑底层如何实现, 声明式编程能在特定的更高层面代码领域我们带来效率的提升,程序员只需要对想要的结果进行深思熟虑,程序会自动的解决过程。当然代码看起来更简洁也是大大的满足了众多强迫症程序猿,但同时 他的可读性相较于命令式有点差。

12_(理解)小程序的底层双线程模型-skyline

image-20230117092511845

Skyline 渲染引擎

https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/introduction.html

13_(理解)配置文件-项目配置和sitemap配置

image-20230117095548475

https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html

project.private.config.json 私有配置–项目私有配置文件。此文件中的内容将覆盖,防止git提交代码的时候配置冲突,可以在自己编写代码的时候测试使用,在提交代码的时候并不会产生冲突,但当项目配置基础库中确定版本的时候才可以在project.config.json 中进行修改

14_(掌握)配置文件-应用程序App的配置选项

image-20230117101026338

image-20230117101038295

15_(掌握)配置文件-页面page的配置和上拉下拉的监听

image-20230117101045711

每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置,每个页面中只有开启对应的配置。才可以在对应的js方法中使用

{
   //使用的自定义组件或者其他组件库中的组件
  "usingComponents": {},
   //导航标题
  "navigationBarTitleText": "哈哈哈",
   //背景颜色   
  "backgroundTextStyle": "dark",
   //下拉刷新  
  "enablePullDownRefresh": true,
   //下拉加载  距离底部还有多长距离调用方法,默认值为0,
  "onReachBottomDistance": 0
}
// pages/home/home.js


Page({
  data: {
    message: "Hello World",
    listCount: 30,
    movies: [
      "少年派",
      "星际穿越",
      "太空漫游",
      "盗梦空间"
    ],
    counter: 0
  },
  onPullDownRefresh() {
    console.log("监听到下拉刷新");
    setTimeout(() => {
      console.log('----');
      wx.stopPullDownRefresh({
        success: (res) => {
          console.log(res);
        },
        fail: (err) => {
          console.log(err);
        }
      })
    }, 1000);
  },
  onReachBottom() {
    console.log("onReachBottom");
    this.setData({
      listCount: this.data.listCount + 30
    })
  },
  onLoad() {
    const app = getApp()
    console.log(app.globalData.token);
    console.log(app.globalData.user);
    
    console.log(this.router);
    console.log(this.pageRouter);
  },
  increment() {
    this.setData({
      counter: this.data.counter + 1
    })
  },
  decrement() {
    this.setData({
      counter: this.data.counter - 1
    })
  }
})

第一章:内容回顾

一. 邂逅小程序开发

1.1. 认识小程序开发

  • 小程序的介绍
  • 各个平台小程序介绍
  • 为什么各个平台都有推出自己的小程序?

1.2. 小程序开发技术选择

  • 小程序由谁开发:

    • 前端
  • 原生小程序开发

  • 小程序开发框架:

    • mpvue
    • wepy
  • 跨平台框架:

    • uniapp
    • taro

1.3. 小程序学习的前提

  • WXML: HTML
  • WXSS: CSS
  • JavaScript+WXS: JavaScript

1.4. 小程序的准备工作

  • AppID
  • 小程序开发工具

1.5. 创建项目-界面-目录结构

1.6. VSCode开发小程序

1.7. 小程序开发体验

  • 数据绑定({{message}})
  • 列表展示()
  • 计数器案例(响应渲染更新this.setData( {counter : this.data.conter + 30}))

1.8. 小程序的MVVM架构思想

二. 小程序的架构和配置

2.1. 小程序的双线程模型

  • webview
  • jscore

skyline(了解, beta)

  • coderwhy -> 邂逅flutter开发(底层渲染原理)

2.2. 常见的配置文件

  • project.config.json

    • project.private.config.json -> .gitignore
  • sitemap

2.3. app.json配置文件

  • 应用程序配置
    • pages
    • window
    • tabBar

2.4. page.json配置文件

  • 覆盖全局的配置
  • 下拉刷新/上拉加载更多
    • Page({ onPullDownRefresh, onReachBottom })
  • 功能的实现

Day01 作业布置

一. 完成课堂所有的代码

二. 小程序包括哪些?以及都有哪些开发模式?(面试)

三. 学习阅读小程序官方文档,学习通过官方文档查找API?

四. 说说你对小程序双线程模型架构的理解?(面试)

五. 小程序有哪些配置文件,分别用来进行什么配置?

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

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

相关文章

七步让您的MySQL服务器更安全

本文将以最常见的数据库管理系统——MySQL为例&#xff0c;向您介绍如何通过7步骤来安全加固数据库服务器。 不知您是否发现一种现象&#xff0c;那些初学渗透测试的人员往往过于关注应用的安全性&#xff0c;而对数据库的安全性不太重视。他们殊不知&#xff0c;没有数据库的…

上海亚商投顾:兔年首日开门红 北向资金净流入超186亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪两市早盘受外围影响大幅高开&#xff0c;随后指数高开低走&#xff0c;板块及个股相对活跃&#xff0c;汽车产业链&a…

视频图像分析处理流程(完整版)

来源&#xff1a;投稿 作者&#xff1a;LSC 编辑&#xff1a;学姐 一、视频分析处理的完整流程 (1)视频编解码的入门知识 尽管压缩工具五花八门&#xff0c;但是他们的目的都只有一个&#xff1a;都是为了减小文件的占用空间。 除去我们常见的.zip&#xff0c;.7z&#xff0…

MyBatis框架如何实现数据查询?有几种方法?

在实际开发中&#xff0c;查询操作通常都会涉及到单条数据的精确查询&#xff0c;以及多条数据的模糊查询。那么使用MyBatis框架是如何进行这两种查询的呢&#xff1f;接下来&#xff0c;本小节将讲解下如何使用MyBatis框架根据客户编号查询客户信息&#xff0c;以及根据客户名…

【前沿技术】在安全且可靠的区块链基础设施中运行业务条线应用

发表时间&#xff1a;2022年4月27日 信息来源&#xff1a;coingeek.com 了解特定企业的业务需求将使你能够构建出一个可扩容的业务条线应用&#xff0c;它将按照你想要的方式进行运作&#xff0c;并在不可篡改的BSV区块链中保存相关记录。 大多数企业都有一个业务条线&#xf…

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问&#xff0c;不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解&#xff0c;你就能越掌握Fiddler的使用方法&#xff0c;反过来你越使用Fiddler&#xff0c;就越能帮助你了解HTTP协议。 Fid…

HashMap原理分析

HashMap原理分析JDK7 HashMap1、模型介绍2、底层实现原理3、描述一下put的过程4、HashMap扩容机制&#xff1a;5、HashMap中的循环链表是如何产生的6、HashMap和HashTable的区别7、HashMap为什么用红黑树而不用B树&#xff1f;JDK8 HashMapJDK7 HashMap 1、模型介绍 HashMap在…

18. time和calendar模块

当代码中需要使用到时间时&#xff0c;我们通常会使用time模块来获取当前时间或者时间戳。 时间戳&#xff1a;从1970年1月1日&#xff08;UTC/GMT的午夜&#xff09;开始所经过的秒数&#xff0c;不考虑闰秒。 1. 时间戳 获取当前时间戳&#xff1a; import timeprint(time…

Springboot+vue预约上门维修服务系统

前端技术&#xff1a;nodejsvueelementui一般是采用前后端分离模式&#xff0c; 后端支持python/php/java/nodejs MTV模式 M:model&#xff0c;模型&#xff0c;负责与数据库交互 V:view&#xff0c;视图是核心&#xff0c;负责接收请求、获取数据、返回结果 T:template&…

并发编程学习(八):ReentrantLock特性、哲学家吃饭问题

ReentrantLock 是java.util.concurrent.locks包下的类。相对于synchronized,它具备如下特性&#xff1a;可中断。可以设置超时时间。可以设置公平锁。支持多个条件变量。即可以有个多个waitset等待队列。与synchronized都支持可重入。ReentrantLock的基本语法&#xff1a;// 获…

c++11 标准模板(STL)(std::multiset)(二)

定义于头文件 <set>template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class multiset;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using…

Day12【元宇宙的实践构想01】—— 元宇宙概念和发展历程

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 ✍每日一句&#xff1a;【道固远&#xff0c;笃行可至&#xff1b;事虽巨&#xff0c;坚为必成】 &#x1f6a9; 今日留言&#xff1a;亮亮被迫去练科目二啦&#xff0c;定时…

K8S架构熟悉及日常操作

目录 一、架构介绍 二、组件介绍 三、调度介绍 四、CLI指令介绍 五、常见CLI指令 六、常见问题排查思路 一、架构介绍 Kubernetes系统架构为客户端/服务端&#xff08;C/S&#xff09;架构&#xff0c;Master作为服务端&#xff0c;Node作为客户端。 Master服务端也被称…

学习逆向安全的必备基础: 汇编的初步了解

什么是汇编 汇编语言是一种低级编程语言&#xff0c;它使用简单的助记符来表示计算机底层的机器指令。 汇编语言是直接与计算机硬件交互的&#xff0c;它能够控制计算机中的每一个细节。 由于汇编语言非常低级&#xff0c;所以编写汇编程序通常比较困难。不过&#xff0c;汇…

微信怎样开发小程序【公司企业小程序开发】

现在很多公司企业都有自己的小程序&#xff0c;没有小程序的公司企业也会寻找开发小程序的途径。那么今天就给大家简单介绍微信怎样开发小程序&#xff0c;希望对需要开发小程序的公司企业有帮助。 一、注册小程序账号 有一个小程序账号是必须的&#xff0c;小程序账号可以在…

那些外贸老鸟们都在认真使用的8个实用小工具

在我们日常的外贸工作中&#xff0c;有很多地方都可以用到一些实用外贸小工具去提高工作效率&#xff0c;突破局部限制。是否能够灵活的应用这些实用外贸小工具&#xff0c;是一位成熟优秀外贸业务员的衡量标准之一。第一个&#xff1a;知识信息整理和CRMhttps://www.notion.so…

Linux(六)基础I/O

引言 C语言进阶 文件管理 上一篇文章详细回顾了C语言方面关于文件操作的一些库函数&#xff0c;比如输入输出重定向fscanf、fprintf&#xff0c;对于文件内容以字符形式读取的fgetc、fputc&#xff0c;对于文件内容以字符串形式读取的fgets、fputs&#xff0c;对于二进制文件的…

ieee会议论文从手稿到发表

0. 前言 在创新点得到认可之后就可以准备发论文了&#xff0c;这个一定要早点&#xff0c;可以给自己设置一个明确的deadline&#xff0c;毕竟ddl是第一生产力。 1. 确定发什么期刊、会议 一定要符合学校的毕业要求&#xff0c;有一些水的学校并不认。时间看能不能赶上学校毕…

物联网智慧消防对比传统消防具有哪些优势?

随着科技的进步和城市化进程的加快&#xff0c;传统消防已经满足不了社会发展的需求&#xff0c;智慧消防应运而生&#xff0c;目前智慧消防已经成为消防安全管理的核心&#xff0c;物联网时代的到来&#xff0c;让智慧消防迎来了更大的发展机遇&#xff0c;变得更加智慧化、系…

手机网站建设怎么做?【手机网站制作】

对于很多公司企业来说&#xff0c;做网站建设都是优先考虑PC端的网站建设&#xff0c;但是某些公司企业可能对于PC端网站的需求不高&#xff0c;倒是更有需要做移动端网站&#xff0c;也就是我们常说的手机网站。那么关于手机网站建设又是怎么做的呢&#xff1f;本文给大家做一…