NewBest 是什么?
一个可以把微信小程序代码直接在浏览器上跑的 sdk,基本上支持大多数的微信小程序组件和 API
这是个人的项目,挺辛苦的,主要是开始开发小程序,还要在 web 上再搞一次,市面上没有自己想要的框架,就业余时间写了一个
NewBest 的特点是,直接把小程序开发的文件夹丢进来就可以直接用了,不需要经过其他中间代码来进行转换,原始的工程就是小程序 IDE 的工程
git 地址:
https://github.com/i7soft/new-best
现在进行中任务
目标是拓展到以下生产环境,争取做到 write once,run anywhere
iOS App、Android App- 使用react nativePC 上的 Mac、Windows、Linux- 使用electron(Sciter、Proton的集成方案也在考虑)- 转换其他平台的小程序
- 转换成 PWA
- 更进一步,会把 js 代码直接编译成二进制文件给原生代码调用 - 有了初步头绪
DEMO
在使用中有任何问题,欢迎反馈给我
- http://nb.shiqiren.com/NB.index.html 打开首页
- http://nb.shiqiren.com/NB.index.html?path=pages/test/component/text/index/index 打开指定的页面
初始化项目
- 把文件下载下来,也可以直接下载完整项目包,下载地址: http://nb.shiqiren.com/project.zip,直接下载的话可以省略 5、6 步骤
- 把小程序源代码目录里面的子目录和文件,复制到
./source/App里面 - 把一个 png 格式的 logo 文件命名为
logo.png复制到./source里面 - 用
vscode打开目录project - 在
./project目录执行终端命令npm install,如果因为网络原因执行命令太慢,可以直接下载 http://nb.shiqiren.com/project.zip - 在
./project/localhost目录执行终端命令npm install,如果因为网络原因执行命令太慢,可以直接下载 http://nb.shiqiren.com/project.zip - 在
./project目录执行终端命令node init - 在
./project目录执行终端命令node changeLogo - 打开
source/project.config.json配置appName、version - 打开
source/NB.config.js配置NBConfighome: 配置默认主页url: 配置网页的域名rootPath: 配置网页的运行根目录- 需要后台代码支持,并配置跨域规则
NBConfig.runtime.web.crossDomain,需要跨域的原始 url 会放在请求头nb-origin-url
- 打开
./localhost/web.config.js配置你自己的域名和端口
运行项目
- 在
./project目录执行终端命令node watch - vscode 点击调试按钮,或者在
./project目录执行终端命令node localhost/index
在浏览器打开以下的人一个地址
* https://localhost:4002/NB.index.html?debug=true debug 模式(SSL)
* http://localhost:4001/NB.index.html?debug=true debug 模式
* https://localhost:4002/NB.index.html release 模式(SSL)
* http://localhost:4001/NB.index.html release 模式
要指定在线调试工具,在 url 后面加上devtools=eruda 或 devtools=vconsole
注:修改代码,只要修改 ./source 里面的内容即可
发布项目
- 在
./project目录执行终端命令node build,会在./release/web生成打包压缩的可以发布的代码 - 把
./release/web里面的文件(web 文件夹对应的是你网站的根目录)全部复制到你的网站根目录即可
修改图标
- 把一个 png 格式的 logo 文件命名为
logo.png复制到./source里面 - 在
./project目录执行终端命令node changeLogo
目录结构说明
localhost快速建立一个可运行的后台ssl如果需要 ssl 证书,可以把证书文件夹放这里(证书的文件夹需要命名为“域名”)www.shiqiren.com举例的证书文件夹,自己自行修改
index.js简易后台入口文件web.config.js后台域名配置和端口配置,为了便于本地调试,可以修改本地的 host 文件,或者在路由器直接修改 host(本人用的是 360 的路由器,可以在路由的层面上直接修改 host)
debugplatformwebdebug 模式下的代码
releaseplatformwebrelease 模式下的代码
source小程序源代码放的地方App直接把小程序的代码放进里面__NB__为了在 web 上运行小程序的代码,各种 API 和组件的支持库
logo.png整个工程的 logoNB.config.js运行环境配置NB.sdk.jsnew best SDKproject.config.json工程配置
source-es5小程序源代码编译成 ES5 的地方test自己测试各种功能、玩意的地方build.js编译为 releasechangeLogo.js修改 logowatch.js工程的后台服务
PHP 后台代码跨域例子(未处理 post 请求)
//js 跨域访问的代理
function domainAgent(){
$headers=$this->getAllHeaders();
$key="nb-origin-url";//固定的跨域请求头
if(!array_key_exists($key,$headers)) exit;
$originUrl=$headers[$key];
$query=parse_url($originUrl,PHP_URL_QUERY);
if($this->isPostRequest()){
//todo:post 请求
}
else{
$url=$originUrl;
foreach($_GET as $key=>$value)
{
if(!$query[$key]){
$url.=(strpos($url,'?')===false?'?':'&').$key.'='.$value;
}
// echo "Key: $key; Value: $value <br/>\n ";
}
$result=file_get_contents($url);
foreach($http_response_header as $key => $value){
Header ($value );
}
echo $result;
}
exit;
}
