微信web开发者工具
微信开发者工具是用node-webkit,基于node.js和chromium的应用程序实时运行环境开发的。界面功能用React编写,wxml、wxss经过编译生成html和css。
MINA(MINA IS NOT APP) 是在微信中开发小程序的框架。MINA提供了自己的视图层描述语言wxml和wxss,以及基于JavaScript的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统。同时小程序提供UI组件库和底层API,基于微信生态,目测只支持在微信上运行。
查看开发工具源代码
cd /Applications/wechatwebdevtools.app/Contents/Resources/app.nw
├── app
├── modified_modules
├── node_modules
└── package.json
cd /Applications/wechatwebdevtools.app/Contents/Resources/app.nw/app/dist
├── app.js
├── common
├── actions // 动作
├── stores // 数据层
├── components //组件
├── dispatcher // 派发器
├── config // 配置
├── contentscript
├── cssStr // react中使用css的封装
├── debugger
├── editor
├── extensions // chrome 开发者工具扩展
├── inject
├── lib // 第三方库
├── utils
└── weapp
查看package.json
{
"main":"app/html/index.html",
"name":"微信web开发者工具",
"appname":"wechatwebdevtools",
"version":"0.9.092300",
"window":{
"title":"微信web开发者工具 v0.9.092300",
"icon":"app/images/icon.png",
"toolbar":true,
"width":600,
"height":480,
"frame":true
},
"inject_js_start":"app/dist/inject/jweixindebug.js",
"inject_js_end":"app/dist/inject/devtools.js",
"chromium-args":"-ignore-certificate-errors -load-extension=/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/app/dist/extensions/",
"node-remote":"http://*.appservice.open.weixin.qq.com/*",
"webview":{
"partitions":[
{
"name":"trusted",
"accessible_resources":["<all_urls>"]
},
{
"name":"devtools",
"accessible_resources":["<all_urls>"]
}
]
}
}
应用程序打开的是app/html/index.html
,加载了../dist/app.js
跳转到ContainController.js
require("./lunch/lunch.js"), //登录
require("./Create/create.js"), //创建项目
require("./main.js"), //主界面
功能组件用的是react+flux,代码毕竟是压缩转换过的,prettify之后可以浏览看看
lib目录
第三方库
编辑器是用monaco-editor
react+flux
webapp目录
├── appservice
├── commit
├── newquick //quick-start 的示例代码
├── onlinevendor
├── tpl //page 页面的模板
├── trans //wxml、wxss的转换方法
├── utils
├── vendor
└── weApp.js
weApp.js
调用trans替换,正则匹配对应的file是否存在,添加到tpl/appserviceTpl.js
commit
├── build.js
├── getallwxss.js
├── initAppConfig.js
├── initAppServiceJs.js
├── pack.js
├── unpack.js
└── upload.js //打包上传
build会调用trans的方法进行转换,
上传的配置stores/projectStores.js
projectStores.Setting.MaxCodeSize,限制上传大小为5M
trans
├── transManager.js
├── transConfigToPf.js
├── transWxmlToHtml.js
├── transWxmlToJs.js
└── transWxssToCss.js
1、transManager
require其他4个js,返回最后替换的结果getResponse
2、transConfigToPf
Pf 是指 pageFrame,2、transConfigToPf 替换或删除模板 tpl/pageFrameTpl.js 里面的注释
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link href="https://res.wx.qq.com/mpres/htmledition/images/favicon218877.ico" rel="Shortcut Icon">
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<script>
var __webviewId__;
</script>
<!-- percodes -->
<!--{ {WAWebview} }-->
<!--{ {reportSDK} }-->
<!--{ {webviewSDK} }-->
<!--{ {exparser} }-->
<!--{ {components_js} }-->
<!--{ {virtual_dom} }-->
<!--{ {components_css} }-->
<!--{ {allWXML} }-->
<!--{ {eruda} }-->
<!--{ {style} }-->
<!--{ {currentstyle} }-->
<!--{ {generateFunc} }-->
</head>
<body>
<div></div>
</body>
</html>
3、transWxmlToHtml、transWxmlToJs、transWxssToCss判断page目录下是否存在对应的文件,存在就执行转换方法,transConfigToPf中用对应文件链接替换掉对应的注释标签。
转换wxml中的自定义tag为virtual_dom
转换wxss为css
其他
-
wx小程序只能在工具内调试,而且不支持热更
-
习惯了其他的编辑器,用着提供的工具并不好用(不能定义主题,快捷键…当然不用就是了)