NewBest 是什么?
一个可以把微信小程序代码直接在浏览器上跑的 sdk,基本上支持大多数的微信小程序组件和 API
这是个人的项目,挺辛苦的,主要是开始开发小程序,还要在 web 上再搞一次,市面上没有自己想要的框架,就业余时间写了一个
NewBest 的特点是,直接把小程序开发的文件夹丢进来就可以直接用了,不需要经过其他中间代码来进行转换,原始的工程就是小程序 IDE 的工程
git 地址:
https://github.com/i7soft/new-best
现在进行中任务
目标是拓展到以下生产环境,争取做到 write once,run anywhere
iOS App、Android App
- 使用react native
PC 上的 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
配置NBConfig
home
: 配置默认主页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)
debug
platform
web
debug 模式下的代码
release
platform
web
release 模式下的代码
source
小程序源代码放的地方App
直接把小程序的代码放进里面__NB__
为了在 web 上运行小程序的代码,各种 API 和组件的支持库
logo.png
整个工程的 logoNB.config.js
运行环境配置NB.sdk.js
new 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;
}