登录  /  注册

带你了解小程序的由来

Y2J
发布: 2017-04-26 10:14:07
原创
3145人浏览过

微信小程序是如何架构出来的,深入了解之后,可能你会悄然大悟。所有的创新都是在前人的基础之上进行的。react实现了高效的虚拟dom,微信在此基础之上,构建了一个微信浏览器,即小程序运行环境。

首先你需要有下面的工具啦

1、Mac电脑

2、微信web开发者工具.app

3、WebStorm / 其他编程器 或 IDE,最好可以支持重命名

首先,我们需要右键微信web开发者工具.app,然后显示包的内容,

在Contents/Resources/app.nw下面的内容即是我们的代码,拷贝出来啦:

简单的说明一下:

app/ 目录下放置了app的代码

modified_modules/ 即一些修改后的模块

node_modules/ 地球人都知道

package.json 呵呵,你一定是知道的,配置了NW相关的内容

在modified_modules目录下有两个子模块:

anyproxy,从名字就可以看起来这是一个代理模块

weinre,远程调试工具

IDE

我们已经知道了这是一个NodeWebkit封装的Web应用了。

在package.json中的"main": "app/html/index.html",,即定义了这个APP的入口是这个index.html,而不是别的文件。

很顺利的我们看到了他们调用的文件了:

这里面有一个init方法,看来他就是NodeWebkit相关的入口了。用WebStorm的shift + f6RENAME 这些变量好十几次,终于看到了下面的代码了:

这是一个React应用,还好我一年多以前学得不错。扫视了一下代码,终于看到了这一句:

直接跳转到ContainController.js,跳转到render方法,找到了这个:

果然Main里面就是大入口了

对应的就是下面这个界面了:

edit就是编辑器及其相关的事项

detail就是项目的配置

补充一下咯,其中的编辑环境是基于Monaco

WeAPP运行机制

慢慢的就探索到了打包,其运行时的过程。由于我并没有拿到内测资格,所以我只好边看边猜测一下。

在之前的文章中,我们提到了两点很有意思的东西:wxml和wxss,这两个文件会被分别转换,即wxml -> html,wxss -> css。对应的有几个不同的transform:

transWxmlToJs

transWxssToCss

transConfigToPf

transWxmlToHtml

transManager

这里的PF指代的是PageFrame的意思,pageFrame有一个对应的模板文件:

这种风格一看就是生成字符串Replace的,然后他们写了一个名为wcc以及一个名为wcsc的工具。

1、wcc用于转转wxml中的自定义tag为virtual_dom

2、wcsc,我观察到的现象是它为转换wxss为css

这样的话,我们就可以理解为微信小应用有点类似于 Virtual Dom + WebView,毕竟上面有个WAWebView文件 ,还有一个webviewSDK文件 。

当然无论是React + WebView,或者Vue + WebView都不重要,现在有了 WA + WebView了,哈哈。

WeApp采用的是如下图所示的提交方式,所以:

你在本地写的WeApp都会被提交到微信服务器,然后打包,上传到服务器,交给CDN——毕竟为了分发。

上传的过程大致如下:

1、APP会被打包成以日期命名+ .wx文件

2、IDE会检测包的大小,并提示:代码包大小为 xx kb,超过限制 xx kb,请删除文件后重试。这个xx好像是1024,所以APP的大小是1M。

3、APP将会上传到servicewechat.com/wxa-dev/commitsource/?appid=xx&user-version=&user-desc=xx

另外,从今天开始,公众号“关联小程序”能力全面开放

一、关联小程序的主体不再受限

二、每个公众号最多关联13个小程序

三、同一小程序最多可关联3个公众号

详见链接,一句话,更加开放了。允许多处引流了。

--

以上就是带你了解小程序的由来的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号