【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别
【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别
前言
概览
下面是关于笔者我小程序八股文笔记,终于也来博客做同步的更新啦。下面给个图来概览一下吧。
这里是具体的目录情况,但在我的博客share中,我并不会完全按照下面篇章来。
那么在这里的第一篇章,笔者我主要想介绍两个部分的内容:一个是小程序的基础/背景,另外一个是小程序与其他平台的区别。
一、 微信小程序基础/背景
这一部分主要介绍小程序的基本架构
,优缺点,开发的流程等。
小程序的理解
- 从开发的角度来看,小程序是一种开发能力,可以看成一种基于HTML、CSS 和 JavaScript 的移动应用程序,提供了大量的内置组件和API,具有开发成本低,开发效率高的优点。同时,开发人员可以将小程序集成到微信或其他社交媒体平台上,以提供快速访问和获取所需信息和服务的功能。
- 对于使用者来说,小程序是一种轻量级的应用程序,无需下载安装,通常可以在微信或其他社交媒体平台上创建和发布,可以提供快速、便捷、高效的服务或体验。
- 微信小程序的理解:微信小程序是一种轻量级应用程序,用户可以直接在微信内使用,无需下载或安装。
微信小程序的优点及缺点
- 优势:无需下载安装,随搜随用,用完即走,入口众多,使用便捷快速,服务请求快,流量大,也容易被接受,开发成本低,降低兼容性限制,可靠安全,具有良好的用户体验。
- 劣势: 开发及发布的限制多(体积限制,资源限制),样式单一,依托微信或其他平台,推广面相对较窄,用户留存率相对较低。
💡 体积限制的个人感受:在打包小程序上面时,发现图标资源体积占用高,无法上传(微信小程序只有2M的大小,这样导致无法开发大型一些的小程序),所以后面一些大的图像资源使用的时网络资源请求的形式。
-
详情
-
优势:
无需下载安装,随搜随用,用完即走,入口众多,使用便捷快速,服务请求快,流量大,也容易被接受,开发成本低,降低兼容性限制,可靠安全,具有良好的用户体验。- 无需下载,通过搜索和扫一扫就可以打开。
- 良好的用户体验:打开速度快。
- 开发成本要比App要低。
- 安卓上可以添加到桌面,与原生App差不多。
- 为用户提供良好的安全保障。小程序的发布,微信拥有一套严格的审查流程,不能通过审查的小程序是无法发布到线上的。
-
劣势:
开发及发布的限制多(体积限制,资源限制),样式单一,依托微信或其他平台,推广面相对较窄,用户留存率相对较低。- 限制较多。页面大小不能超过2M。不能打开超过5个层级的页面。
- 样式单一。小程序的部分组件已经是成型的了,样式不可以修改。例如:幻灯片、导航。
- 推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广。其中附近小程序也受到微信的限制。
- 依托于微信,无法开发后台管理功能。
-
简述一下微信小程序的相关文件类型
简单来说就是标记语言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仅支持部分css选择器:
-
外联样式导入不同,wxss 使用@import标识符来导入外联样式。
没有 Body
;样式可直接使用import
导入 -
wxss
的图片引入需使用外链地址
微信小程序与H5的区别?
其中相比H5
,小程序与其的区别有如下:
- 运?环境:?程序基于浏览器内核重构的内置解析器
- 系统权限:?程序能获得更多的系统权限,如?络通信状态、数据缓存能?等
- 渲染机制:?程序的逻辑层和渲染层是分开的
小程序可以视为只能用微信打开和浏览的H5
,小程序和网页的技术模型是一样的,用到的 JavaScript
语言和 CSS
样式也是一样的,只是网页的 HTML
标签被稍微修改成了 WXML
标签
-
运行环境的不同
传统的HTML5
的运行环境是浏览器,包括webview
,而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化,配合自己定义的开发语言标准,提升了小程序的性能。 -
开发成本的不同
只在微信中运行,所以不用再去顾虑浏览器兼容性,不用担心生产环境中出现不可预料的奇妙BUG
-
渲染方式与 H5 不同
小程序一般是通过 Native 原生渲染的,但是小程序同时也支持 web 渲染,如果使用 web 渲染的方式,我们需要初始化一个WebView 组件,然后在 WebView 中加载 H5 页面;所以当我们开发一个小程序时,通常会使用 hybrid 的方式,即会根据具体情况选择部分功能用小程序原生的代码来开发,部分功能通过 WebView 加载 H5 页面来实现。Native 与 Web 渲染混合使用,以实现项目的最优解;这里值得注意的是,小程序下,native 方式通常情况下性能要优于 web 方式。 -
小程序特有的双线程设计
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缺点:
- 开发周期长,开发成本高,需要下载
微信小程序与公众号,微信之间的关系与区别
小程序和微信公众号都是微信生态系统内的重要组成部分,具有各自的优势和劣势。
微信小程序是一种应用程序,类似于普通的手机应用,可以在微信中直接运行,而不需要安装到手机系统中。而微信公众号则是一种公众号服务平台,类似于官方网站,需要通过微信搜索或扫码关注后才能使用。其实,从更加现实的角度简单来说,公众号是引流平台,小程序是成交平台。
下篇笔记链接
【小程序八股文】系列之篇章二 | 小程序的核心机制
下篇笔记链接:【待更新】
下篇笔记内容:【待更新】
原创笔记,未经同意请勿转载
码字不易
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!