一文探明小程序编译原理

小程序简而言之就是镶嵌在微信内部的小程序,也可以称为是镶嵌在微信当中的一款简易版APP,目前小程序支持线下扫码、对话分享、消息通知、小程序切换、历史列表、公众号关联以及搜索查找等功能,并且确保其“无需安装,触手可及,用完即走”的用户体验。也正是因为小程序具有的这么多优势,才确保小程序从推出到现在,火热程度丝毫没有消退,每天还是有很多的企业和商家在开发属于自己微信小程序。

之前的文章对于小程序的双线程架构作了介绍和说明:为什么小程序性能高于H5,聊聊双线程技术 ,接下来会聚焦于小程序的编译原理。

小程序编译

微信开发者工具和微信客户端都无法直接运行小程序的源码,因此我们需要对小程序的源码进行编译。更通俗的讲可以理解为:小程序编译更像是一个翻译器,把小程序源码翻译为微信客户端和开发工具可以读懂的语言,以便能够明白小程序想要表达和实现的效果。

代码编译过程包括本地预处理、本地编译和服务器编译。为了快速预览,微信开发者工具模拟器运行的代码只经过本地预处理、本地编译,没有服务器编译过程,而微信客户端运行的代码是额外经过服务器编译的。

什么是 WXSS ?

小程序是基于 Web 规范,采用 HTML 、CSS 和 JS 等搭建的一套框架,微信官方给它们取了一个很厉害的名字:WXML、WXSS,但本质上还是在整个 Web 体系之下构建的。

所以在正式了解小程序编译的原理前,非常有必要搞清楚什么是 WXML 、WXSS 。

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

WXSS :WeiXin Style Sheets ,是一套样式语言,用于描述 WXML 的组件样式。 WXSS 用来决定 WXML 的组件应该怎么显示。WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改,更通俗的可以理解成基于CSS改了点东西,又加了点东西。

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

  • 尺寸单位
  • 样式导入

如何进行编译?

小程序的框架包含两部分 View 视图层、AppService 逻辑层,View 层用来渲染页面结构,AppService 层用来逻辑处理、数据请求、接口调用,它们在两个进程(两个Webview)里运行。

WXSS 并不可以直接执行在 Webview 层进行渲染,而是通过了一层编译工具。

编译的工具名字叫 WCSC,这个编译的过程是在微信开发者工具端执行的,在微信开发者工具的控制台界面,输入 help() 命令可见如所示界面。

如果 help() 函数执行后无效果或者报错,请检查控制台下方位置是否为 top 选项卡。

可以看到这里有一些命令,继续在控制台执行第八条 openVendor() 命令。这时候弹出了一个名为 WeappVendor 的文件夹,可以看到最后一个文件名称正是我们要寻找的 WCSC 。文件种类是可执行文件。WXSS 正是用这个工具来编译的。

我们找到了 WCSC 编译工具后,把这个工具复制到项目的 pages/index 目录下,与 index.wxss 同目录。

在执行编译前,先看一下 index.wxss 内部结构是怎样的。

看完内部结构后,把终端目录打开到 pages/index 目录中。执行:

$ ./wcsc -js index.wxss >> wxss.js 

这时候可以看到目录中多了一个 wxss.js 文件。

wxss.js 文件就是 WXSS 文件编译后的文件,index.wxss 文件会先通过 WCSC 可执行程序文件编译成 js 文件。并不是直接编译成 css 文件。
以上就是微信小程序编译的原理。

当然支付宝小程序、百度小程序、FinClip小程序等原理都大同小异,只不过官方起名换了一种叫法,例如支付宝小程序将 WXML 、WXSS 分别称为 AXML、ACSS,FinClip小程序分别叫做FXML、FTSS。

小程序的深化价值

说到小程序开发者如何提升其利用价值其实上一篇文章有讲到,在各个巨头推出自己的小程序开放平台后,微信、支付宝也逐渐将自己的小程序运行能力作为一个付费服务开放给开发者和第三方企业,详情可以查阅:微信开放小程序运行SDK,我们的App可以跑小程序了

这种「Native + 小程序」的混合开发模式其实非常适合现已经有 App 的企业,一是优质的体验已经成为用户决定是否打开app的重要因素;二是低成本的开发和跨端,能够避免 iOS、Android 重复开发;三是小程序管理后台直接上架下的方式相当于让app具备了热更新能力,规避了应用商店上架审核的流程。

例如 FinClip 在集成 SDK 后便使得自己的 App 具备小程序运行能力,配合小程序管理后台能够实现全生命周期的管理,不管是上下架、授权、使用数据都能实现低门槛使用,而免费的社区版也基本上能够满足一般企业的使用规模。

希望能够带给接触过小程序开发的同学一些更深入的认识,也能够帮助深入学习小程序开发的同学一些新的思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PMSM电机是三相无刷直流电机,它的转子由永磁体构成。PMSM电机的控制主要包括三个环:速度环、电流环和位置环。 在速度环控制中,通过测量电机的实际转速与指令转速的差值来计算出控制器需要提供的转矩大小。其中,电机的实际转速可以通过编码器或霍尔传感器测量,指令转速可以由用户通过控制系统设定。然后通过调节电机的电流大小来控制电机输出的转矩大小,让实际转速逐渐趋近于指令转速。 在电流环控制中,根据速度环控制输出的控制量,控制器需要通过PI控制器调节电机的电流大小,来实现对电机输出转矩的控制。 在位置环控制中,通过测量电机转子的位置信息,反馈到控制器中,用来控制电机输出转矩的相位和大小。 总的来说,PMSM电机的控制原理就是通过控制器对电机的速度、电流和位置进行调节控制,实现对电机输出的转矩大小和相位的掌控,从而达到精准控制电机转速和运动轨迹的目的。 ### 回答2: 永磁同步电机(PMSM)是一种高效的电机类型,它的控制技术在近年来得到了广泛应用。其核心控制原理是通过控制电机的电流来实现对转矩和速度的精准控制。在PMSM的控制过程中,需要使用矢量控制技术以及逆变器来实现电机的驱动。 在矢量控制技术中,通过将电机控制转变为D轴和Q轴的电流控制,来实现对电机的控制。通过控制D轴和Q轴的电流,可以实现精准的转矩和角速度控制。此外,逆变器通常是用于将直流电源转换为交流电源,以便提供给PMSM所需的电力。逆变器通常使用PWM(脉宽调制)来控制输出电压,并使电机产生所需要的转矩和速度。 在实际应用中,矢量控制技术和逆变器经常和PID控制器等控制策略组合使用。PID控制器可用于改进控制电机转速,电流和位置的性能。 总之,PMSM电机控制原理涉及矢量控制技术和逆变器的使用。用这种技术实现对PMSM电机的精准控制,并结合PID控制器等控制策略,PMSM电机得到了广泛的应用。 ### 回答3: PMSM电机(Permanet Magnet Synchronous Motor,永磁同步电机)是一种使用永磁体作为转子的同步电机,具有高效率、高功率密度和稳定性好的特点,因而在现代工业生产中广泛使用。其控制原理是通过控制电机的电流和电压来实现转子和电磁场之间的同步。 PMSM电机的控制需求可以分为速度控制、转矩控制和位置控制三个方面。速度控制可以通过控制电机供电频率和电压来实现,同时需要对电流进行监测以保持电机运行的稳定性。转矩控制则需要根据机械负载调节电机转矩以达到所需的工作效果。位置控制则需要通过对电机转子位置进行反馈控制,使得电机能够准确地按照所需位置运转。 在PMSM电机控制中,使用了电机反馈控制系统和电机控制器。反馈控制系统通过传感器实时监测电机运转的转速、转矩和位置等参数,并将这些参数实时反馈给电机控制器。电机控制器根据反馈的参数来控制电机的电流和电压,实现对电机的控制。同时在电机控制中,还需要对电流进行磁场定向控制,以确保电机的正常运行。 总之,PMSM电机控制原理是通过对电机的电流、电压和位置等参数进行实时控制和反馈,以实现电机转子和电磁场之间的同步,从而实现电机的稳定运行和精确控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值