【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别

这篇具有很好参考价值的文章主要介绍了【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

概览

下面是关于笔者我小程序八股文笔记,终于也来博客做同步的更新啦。下面给个图来概览一下吧。
【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别,# 微信小程序,小程序,八股文,微信小程序,知识笔记
这里是具体的目录情况,但在我的博客share中,我并不会完全按照下面篇章来。
【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别,# 微信小程序,小程序,八股文,微信小程序,知识笔记
那么在这里的第一篇章,笔者我主要想介绍两个部分的内容:一个是小程序的基础/背景,另外一个是小程序与其他平台的区别。

一、 微信小程序基础/背景

这一部分主要介绍小程序的基本架构,优缺点,开发的流程等。

小程序的理解

  • 从开发的角度来看,小程序是一种开发能力,可以看成一种基于HTML、CSS 和 JavaScript 的移动应用程序,提供了大量的内置组件和API,具有开发成本低,开发效率高的优点。同时,开发人员可以将小程序集成到微信或其他社交媒体平台上,以提供快速访问和获取所需信息和服务的功能。
  • 对于使用者来说,小程序是一种轻量级的应用程序,无需下载安装,通常可以在微信或其他社交媒体平台上创建和发布,可以提供快速、便捷、高效的服务或体验。
  • 微信小程序的理解:微信小程序是一种轻量级应用程序,用户可以直接在微信内使用,无需下载或安装。

微信小程序的优点及缺点

  • 优势:无需下载安装,随搜随用,用完即走,入口众多,使用便捷快速,服务请求快,流量大,也容易被接受,开发成本低,降低兼容性限制,可靠安全,具有良好的用户体验。
  • 劣势: 开发及发布的限制多(体积限制,资源限制),样式单一,依托微信或其他平台,推广面相对较窄,用户留存率相对较低。

💡 体积限制的个人感受:在打包小程序上面时,发现图标资源体积占用高,无法上传(微信小程序只有2M的大小,这样导致无法开发大型一些的小程序),所以后面一些大的图像资源使用的时网络资源请求的形式。

  • 详情

    • 优势:无需下载安装,随搜随用,用完即走,入口众多,使用便捷快速,服务请求快,流量大,也容易被接受,开发成本低,降低兼容性限制,可靠安全,具有良好的用户体验。

      1. 无需下载,通过搜索和扫一扫就可以打开。
      2. 良好的用户体验:打开速度快。
      3. 开发成本要比App要低。
      4. 安卓上可以添加到桌面,与原生App差不多。
      5. 为用户提供良好的安全保障。小程序的发布,微信拥有一套严格的审查流程,不能通过审查的小程序是无法发布到线上的。
    • 劣势: 开发及发布的限制多(体积限制,资源限制),样式单一,依托微信或其他平台,推广面相对较窄,用户留存率相对较低。

      1. 限制较多。页面大小不能超过2M。不能打开超过5个层级的页面。
      2. 样式单一。小程序的部分组件已经是成型的了,样式不可以修改。例如:幻灯片、导航。
      3. 推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广。其中附近小程序也受到微信的限制。
      4. 依托于微信,无法开发后台管理功能。

简述一下微信小程序的相关文件类型

简单来说就是标记语言wxml,样式语言wxss,逻辑代码语言js,配置语言json.

全局主题文件:

  • app.js 可以在里边监听生命周期函数、声明全局变量

    小程序逻辑文件,主要用来注册小程序全局实例,编译时会和其他页面的逻辑文件打包成一个JavaScript文件,项目中不可缺少。

  • app.json 小程序的全局配置(页面路径、网络超时时间、底部tabBar 、导航背景颜色等)

    程序公共设置文件,配置小程序全局设置,项目中不可缺少。

  • app.wxss
    小程序主样式表文件,类似于HTML的css文件,主样式表文件中设置的样式,在其他页面文件中同样有效,该文件不是必需的。

页面文件:

  • WXML:是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。

    页面的结构文件,用来设计页面的布局、数据绑定等,相当于HTML页面中扩展名为html文件,其在页面中不可缺少。

  • WXSS:是一套样式语言,用于描述WXML组件样式。

    页面样式表文件,用来定义页面中用到的各类样式表。若.wxml文件内联样式及app.wxss文件内的样式表定义同本页面的样式表定义相同时,内联样式优先于.wxss文件样式,.wxss文件样式优先于app.wxss文件样式,该文件不是必需的。

  • js:处理逻辑,网络请求。

    页面逻辑文件,在该文件中编写javascript代码以控制页面逻辑,其在页面中不可缺少。

  • json 配置当前页面标题和引入组件等

    页面配置文件,其在页面中不可缺少。

简述一下小程序的开发流程?

  • 注册微信小程序账号
  • 获取微信小程序的 AppID
  • 下载微信小程序开发者工具
  • 创建demo项目
  • 去微信公众平台配置域名
  • 手机预览
  • 代码上传
  • 提交审核
  • 小程序发布

简述一下微信小程序的框架?

微信小程序使用的是WXML+WXSS+JS来进行应用程序的搭建,本质上是一个单页应用,所有的页面渲染和事件处理都在一个页面内进行,但可以通过微信客户端调用原生的各种接口。与网站不同,小程序是一个双线程框架,也就是说渲染线程和 JS 线程是互相别独立的。与采用Vue开发的网站相似,小程序也是基于数据驱动的框架,也就是说UI和数据是分离的。

二、微信小程序与其他的区别,联系

这一部分主要介绍小程序的以及它与网站,uniapp等其他前端的区别与联系

微信小程序中的js和浏览器中的js以及node中的js的区别

直观的说小程序中没有DOM和BOM对象,也无法对npm包进行管理
【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别,# 微信小程序,小程序,八股文,微信小程序,知识笔记

浏览器中JS

  • ES
  • DOM
  • BOM

Node中的JS

  • ES
  • NPM
  • Native

小程序中的JS

  • ES
  • 小程序框架
  • 小程序API

NPM: 是包管理系统、NPM是目前最大的开原库生态系统,通过各种NPM扩展包快速的实践一些功能。

Native: 就是原生的模块,通过这个模块来使用JavaScript语言本身不具有的一些能力(native方法简单的讲,即Java调用非Java代码的接口)。

请谈谈wxml与标准的html的异同?

  • 相同:都是用来描述页面的结构;都由标签、属性等构成;
  • 不同:
    • 标签名字不一样,且小程序标签更少,单一标签更多
    • 多了一些wx:if 这样的属性以及 {{ }}这样的表达式
    • WXML仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览;
    • 组件封装不同, WXML对组件进行了重新封装
    • 小程序运行在JS Core内,没有DOM树和window对象,小程序中无法使用window对象和document对象

请谈谈WXSS和CSS的异同?

WXSS和CSS类似,不过在CSS的基础上做了一些补充和修改。

  • 在WXSS中,引入了rpx尺寸单位。引用新尺寸单位的目的是,适配不同宽度的屏幕,开发起来更简单。
    在小程序中,规定所有手机的屏幕宽度都是750rpx,所以在不同尺寸的屏幕下1rpx的宽度都不同。
    在iphone6手机下,屏幕宽度是375px,所以1rpx=0.5px。
    wxss尺寸单位rpx的引入,来提升不同屏幕的适配体验,750rpx = 375px;
    单位 1rpx(Rpx) = (屏幕宽度/750)px

  • 提供了全局的样式和局部样式,仅支持部分css选择器
    项目根目录中的 app.wxss 会作用于所有小程序页面
    局部页面的 .wxss 样式仅对当前页面生效

    • wxss仅支持部分css选择器:
      • .class和#id
      • element
      • 并集选择器 后代选择器
      • ::after ::before等伪类选择器
  • 外联样式导入不同,wxss 使用@import标识符来导入外联样式。没有 Body;样式可直接使用 import 导入

  • wxss的图片引入需使用外链地址

微信小程序与H5的区别?

其中相比H5,小程序与其的区别有如下:

  • 运⾏环境:⼩程序基于浏览器内核重构的内置解析器
  • 系统权限:⼩程序能获得更多的系统权限,如⽹络通信状态、数据缓存能⼒等
  • 渲染机制:⼩程序的逻辑层和渲染层是分开的

小程序可以视为只能用微信打开和浏览的H5,小程序和网页的技术模型是一样的,用到的 JavaScript 语言和 CSS 样式也是一样的,只是网页的 HTML 标签被稍微修改成了 WXML 标签

  1. 运行环境的不同
    传统的HTML5的运行环境是浏览器,包括webview,而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化,配合自己定义的开发语言标准,提升了小程序的性能。

  2. 开发成本的不同
    只在微信中运行,所以不用再去顾虑浏览器兼容性,不用担心生产环境中出现不可预料的奇妙BUG

  3. 渲染方式与 H5 不同
    小程序一般是通过 Native 原生渲染的,但是小程序同时也支持 web 渲染,如果使用 web 渲染的方式,我们需要初始化一个WebView 组件,然后在 WebView 中加载 H5 页面;所以当我们开发一个小程序时,通常会使用 hybrid 的方式,即会根据具体情况选择部分功能用小程序原生的代码来开发,部分功能通过 WebView 加载 H5 页面来实现。Native 与 Web 渲染混合使用,以实现项目的最优解;这里值得注意的是,小程序下,native 方式通常情况下性能要优于 web 方式。

  4. 小程序特有的双线程设计
    H5 下我们所有资源通常都会打到一个 bundle.js 文件里(不考虑分包加载),而小程序编译后的结果会有两个bundle,index.js封装的是小程序项目的 view 层,以及 index.worker.js 封装的是项目的业务逻辑,在运行时,会有两条线程来分别处理这两个bundle,一个是主渲染线程,它负责加载并渲染 index.js 里的内容,另外一个是 Service Worker线 程,它负责执行 index.worker.js 里封装的业务逻辑,这里面会有很多对底层api调用。

微信小程序与Vue区别

  • 生命周期不一样,微信小程序生命周期比较简单
  • 数据绑定也不同,微信小程序数据绑定需要使用{{}},vue 直接:就可以 显示与隐藏元素,vue中,使用 v-if和 v-show
  • 控制元素的显示和隐藏,小程序中,使用wx-if和hidden 控制元素的显示和隐藏
  • 事件处理不同,小程序中,全用 bindtap(bind+event),或者 catchtap(catch+event)绑定事件,vue:使用v-on:event 绑定事件,或者使用@event绑定事件
  • 数据双向绑定也不也不一样在 vue中,只需要再表单元素上加上 v-model,然后再绑定 data中对应的一个值,当表单元素内容发生变化时,data中对应的值也会相应改变,这是 vue非常 nice 的一点。微信小程序必须获取到表单元素,改变的值,然后再把值赋给一个 data中声明的变量。
  • 父传子的不同点是:微信小程序在子组件中接受父组件传 用 propertites 进行接收,而不是 props
  • 子传父的不同点是:微信小程序在子组件中使用 triggerEvent 抛出自定义事件名,而不是 this.$emit()
  • 在微信小程序中,slot是作为组件属性传递给父组件的,父组件可以通过访问slot属性来获取子组件中的填充内容。而在 Vue 中,slot则是作为一个自定义属性存在于组件中,可以通过访问该属性来获取子组件中的填充内容。
  • 小程序直接 this.data属性是不可以同步到视图的,必须调用this.setData

小程序的父子传参和vue中的有什么区别

  • 父传子的不同点是:微信小程序在子组件中接受父组件传 用 propertites 进行接收,而不是 props
  • 子传父的不同点是:微信小程序在子组件中使用 triggerEvent 抛出自定义事件名,而不是 this.$emit()
  • 在微信小程序中,slot是作为组件属性传递给父组件的,父组件可以通过访问slot属性来获取子组件中的填充内容。而在 Vue 中,slot则是作为一个自定义属性存在于组件中,可以通过访问该属性来获取子组件中的填充内容。

小程序的双向绑定和 vue 哪里不一样

小程序直接 this.data属性是不可以同步到视图的,必须调用this.setData

请谈谈原生开发小程序,wepy,mpvue的对比?

个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。 而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。 而如果如果团队前端强大,自己做一套框架也没问题。

小程序与原生App哪个好

各有各自的优点,都又有缺点

小程序的优点:

  • 基于微信平台开发,享受微信自带的流量,这个优点最大
  • 无需安装,只要打开微信就能用,不占手机内存,体验好
  • 开发周期段,一般最多一个月就可以上线完成
  • 开发所需的资金少,所需资金是开发原生APP的一半不到
  • 小程序名称是唯一的,在微信的搜索里权重很高
  • 容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本没有大问题
  • 基本不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序
  • 发布,审核高效,基本上午发布审核,下午就审核通过,升级简单,支持灰度发布
  • 开发文档完善,社区活跃
  • 支持插件式开发,一些基本功能可以开发成插件,供多个小程序使用

小程序的缺点:

  • 局限性很强(比如页面大小不能超过1M,不能打开超过5个层级的页面,样式单一,小程序的部分组件已经是成型的了,样式不能修改,比如幻灯片,导航)只能依赖于微信依托与微信,无法开发后台管理功能
  • 不利于推广,推广面窄,不能分享朋友圈,只能分享给朋友,附近小程序推广,其中附加小程序也收到微信限制
  • 后台调试麻烦,因为API接口必须https请求,且公网地址,也就是说后台代码必须发布到远程服务器上;当然我们可以修改host进行dns映射把远程服务器转到本地,或者开启tomcat远程调试;不管怎么说终归调试比较麻烦
  • 前台测试有诸多坑,最头疼莫过于模拟器与真机显示不一致
  • js引用只能使用绝对路径,不能操作DOM

原生App优点:

  • 原生的相应速度快
  • 对于有无网络操作时,譬如离线操作基本选用原生开发
  • 需要调用系统硬件的功能(摄像头,拨号,短信蓝牙…)
  • 在无网络或者弱网情况下体验好

原生App缺点:

  • 开发周期长,开发成本高,需要下载

微信小程序与公众号,微信之间的关系与区别

小程序和微信公众号都是微信生态系统内的重要组成部分,具有各自的优势和劣势。

微信小程序是一种应用程序,类似于普通的手机应用,可以在微信中直接运行,而不需要安装到手机系统中。而微信公众号则是一种公众号服务平台,类似于官方网站,需要通过微信搜索或扫码关注后才能使用。其实,从更加现实的角度简单来说,公众号是引流平台,小程序是成交平台。

下篇笔记链接

【小程序八股文】系列之篇章二 | 小程序的核心机制
下篇笔记链接:【待更新】
下篇笔记内容:【待更新】

原创笔记,未经同意请勿转载

码字不易文章来源地址https://www.toymoban.com/news/detail-792140.html

到了这里,关于【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端基础面试题八股文

    代码结构: 使页面在没有css的情况下,也能够呈现出好的内容结构 有利于SEO: 爬虫根据标签来分配的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息 方便其他设备解析: 如屏幕阅读器、盲人阅读器、移动设备等,以有意义的方式来渲染页面 便于

    2024年02月07日
    浏览(30)
  • 【java八股文】之计算机网络系列篇

    TCP/IP分层(4层): 应用层,传输层,网络层,数据链路层 网络的七层架构 (7层) :应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 五层协议 (5层): 物理层、数据链路层、网络层、运输层、 应用层 TCP/IP是面向连接的协议,发送数据前要先建立好连接

    2024年01月16日
    浏览(29)
  • 八股文 -- Java基础和集合框架

    JVM是虚拟机, 负责运行Java程序 JRE是Java运行环境, 包括Java虚拟机, Java类库 JDK是Java Development Kit 包括JRE和编译器和其他工具, 比如Java Doc 可以是 byte, short, char, int, string, enum 访问修饰符可以修饰方法, 成员变量. 默认是default public 是对所有类可见 protected是只对一个包内的本类和子

    2024年02月01日
    浏览(30)
  • Java 八股文面试过程系列之synchronized关键字

    本文通过一场虚拟的面试对话,详细解析了Java中的synchronized关键字。从基本用法到底层实现原理,再到性能优化策略,全面提升您对同步机制的理解。

    2024年02月07日
    浏览(36)
  • 【java八股文】之JVM基础篇

    【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博客 【java八股文】之计算

    2024年01月17日
    浏览(28)
  • 【java八股文】之Java基础篇

    【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博客 【java八股文】之计算

    2024年01月17日
    浏览(33)
  • java 八股文 基础 每天笔记随机刷

    被@Component注解标识的类在应用程序启动时会被实例化,并由Spring容器进行管理。 @PostConstruct是一个Java注解,用于标记一个方法在类被实例化后自动执行。该方法必须是非静态的,没有参数,且不能抛出异常。 他们搭配起来使用在同一个类中,会让被@PostConstruct修饰的方法,

    2024年02月10日
    浏览(27)
  • 2023面试八股文 ——Java基础知识

    编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并 终得到结果的过程。 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、 和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一 步一步去工作,

    2024年02月12日
    浏览(39)
  • Python八股文:基础知识Part1

    1. 不用中间变量交换 a 和 b 这是python非常方便的一个功能可以这样直接交换两个值  2. 可变数据类型字典在for 循环中进行修改 这道题在这里就是让我们去回答输出的内容,这里看似我们是在for循环中每一次加入了都在list中加入了一个字典,然后字典的键值对的value每次都加

    2024年04月12日
    浏览(19)
  • java八股文面试[java基础]——面相对象特点

    三大特点: 封装 继承 多态   面试题:java如何实现多继承(除了使用接口之外) 实现多继承有三个方法 : 多层继承 内部类 接口 参考 java实现多继承的三种方式 多层继承 ​如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包