前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你知道小程序最后上线的代码是什么样子吗?

你知道小程序最后上线的代码是什么样子吗?

作者头像
前端迷
发布2020-05-14 15:39:02
3960
发布2020-05-14 15:39:02
举报
文章被收录于专栏:前端迷

小程序的一般写法

我们知道小程序最开始出来的时候,包括到现在;官方给出的写法是js对应逻辑层,wxml也自己尝试了一套DSL自定义视图的模板语法,写法雷同vue的template语法:

  • 数据绑定
代码语言:javascript
复制
<view wx:for="{{array}}"> {{item}} </view>
  • 列表渲染
代码语言:javascript
复制
<view wx:for="{{array}}"> {{item}} </view>
  • 条件渲染
代码语言:javascript
复制
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>

这几种语法,当然还包括了wxss来定义样式文件的语法,基本上与css相同。到目前的类vue、类react的小程序框架逐渐使用广泛,从而基本上没有怎么使用,不过微信小程序官方一开始定义这一套语法之初的目的是什么呢?这反而给我们留下了一个疑问?包括后面诞生的支付宝小程序、抖音小程序等一系列小程序都是雷同的;

语法定义的背后

我们类比以上几种语法,可以发现和在web端开发h5的时候基本的语法规范大致一样:

  • 小程序js—web js
  • 小程序wxml—web html
  • 小程序wxss—web css

所以就可以明白定义的语法类同web 编程的三大基本技能,而这也是比较容易入门的;

最后究竟是什么

然而我们知道,任何一门语言都有它执行的地方,那么这几种微信独特定义的语法是有自己的解析器来专门执行吗?对于逻辑层面语法是js,可以猜测是运行的js引擎来执行的;那么wxml和wxss呢,是否微信自己定义了一套渲染器来解析这两种语法,如同flutter内部提供了一套渲染引擎来解析dart的Widget渲染视图,或者说最后编译成为了其他的语言运行;

对于第二种编译成为其他语言的这种情况,由于雷同html及css,我们猜测最后编译成为这两种语言,那么如何验证?

  • 我们首先定义一个简单的模板
代码语言:javascript
复制
<!--index.wxml-->
<view class="container">
  <View>这里是一灯</View>
</view>
  • 既然猜测编译成为html,那么我们就加入HTML的代码,混合执行,看最后显示的结果如何:
代码语言:javascript
复制
<!--index.wxml-->
<view class="container">
  <View>这里是一灯</View>
  <div>
    <h4>我们是未来的掌舵人</h4>
    <p>为天地立心</p>
    <p>为生民立命</p>
    <p>为往圣继绝学</p>
    <p>为万世开太平</p>
  </div>
</view>

如上执行的结果如同直接在浏览器中运行一般;对于小程序官方是不支持div、h4等标签的,既然可以在其中运行,并且解析,那么我们就可以基本认为最后小程序打包上线运行的代码,就是编译成为html及css的代码;最后在微信提供的webview中运行;

而编译出来的html及css怎么组织、与逻辑js如何交互,他为什么比我们平时的html性能交互体验更好;js的执行是否还会阻塞html及css解析的过程,这些过程自然就更需要去研究了,最后借鉴到web端来优化我们的整体代码,这是我们为什么研究其他东西的原因

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端迷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语法定义的背后
    • 最后究竟是什么
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档