refactor: 确立独立子工程架构 (backend, admin, mpuniapp) 并同步更新 AGENTS.md 规范
二进制
mpuniapp/static/api.png
普通文件
|
之后 宽度: | 高度: | 大小: 928 B |
二进制
mpuniapp/static/apiHL.png
普通文件
|
之后 宽度: | 高度: | 大小: 923 B |
二进制
mpuniapp/static/apiIndex.png
普通文件
|
之后 宽度: | 高度: | 大小: 1.2 KiB |
二进制
mpuniapp/static/app-android/test.apk
普通文件
二进制
mpuniapp/static/compass.png
普通文件
|
之后 宽度: | 高度: | 大小: 5.7 KiB |
二进制
mpuniapp/static/component.png
普通文件
|
之后 宽度: | 高度: | 大小: 1.1 KiB |
二进制
mpuniapp/static/componentHL.png
普通文件
|
之后 宽度: | 高度: | 大小: 1.1 KiB |
二进制
mpuniapp/static/componentIndex.png
普通文件
|
之后 宽度: | 高度: | 大小: 1.7 KiB |
二进制
mpuniapp/static/css.png
普通文件
|
之后 宽度: | 高度: | 大小: 550 B |
二进制
mpuniapp/static/cssHL.png
普通文件
|
之后 宽度: | 高度: | 大小: 544 B |
二进制
mpuniapp/static/cssIndex.png
普通文件
|
之后 宽度: | 高度: | 大小: 636 B |
二进制
mpuniapp/static/dislike.png
普通文件
|
之后 宽度: | 高度: | 大小: 2.4 KiB |
二进制
mpuniapp/static/extui.png
普通文件
|
之后 宽度: | 高度: | 大小: 5.0 KiB |
二进制
mpuniapp/static/extuiHL.png
普通文件
|
之后 宽度: | 高度: | 大小: 5.0 KiB |
二进制
mpuniapp/static/extuiIndex.png
普通文件
|
之后 宽度: | 高度: | 大小: 5.8 KiB |
二进制
mpuniapp/static/filemanager/1.txt.br
普通文件
二进制
mpuniapp/static/filemanager/to.zip
普通文件
二进制
mpuniapp/static/font/uni.ttf
普通文件
二进制
mpuniapp/static/icons/arrow-down.png
普通文件
|
之后 宽度: | 高度: | 大小: 587 B |
|
之后 宽度: | 高度: | 大小: 225 B |
二进制
mpuniapp/static/icons/arrow-up.png
普通文件
|
之后 宽度: | 高度: | 大小: 586 B |
二进制
mpuniapp/static/icons/clear.png
普通文件
|
之后 宽度: | 高度: | 大小: 5.8 KiB |
二进制
mpuniapp/static/icons/eye-active.png
普通文件
|
之后 宽度: | 高度: | 大小: 630 B |
二进制
mpuniapp/static/icons/eye.png
普通文件
|
之后 宽度: | 高度: | 大小: 683 B |
118
mpuniapp/static/list-mock/mock.json
普通文件
@@ -0,0 +1,118 @@
|
||||
[{
|
||||
"title": "灵魂拷问:你做的应用安全吗?",
|
||||
"subTitle": "功能都能实现,至于安全嘛",
|
||||
"img": "static/list-mock/safe.png",
|
||||
"detail": "每个工程师,每个测试人员,在验收项目的时候,对功能需求的满足,心里是有底的。甚至也可以模拟大并发来测试应用的性能。
|
||||
但要问你交付的应用是否安全? 那不管工程师还是测试, 心里都没底
|
||||
安全是一个独立且专业的事情, 如果不是一个优秀的黑客, 很难发现应用的众多安全问题。
|
||||
普通工程师和测试人员是无法达到这个水平的。
|
||||
由于http的无状态特性, 服务器很难识别客户端的真伪。 这是一个真实请求, 还是伪造的假客户端? 一个貌似简单的识别问题, 难住了很多人。
|
||||
网络传输的数据, 在中间被各种路由器和不规范的运营商偷窃和劫持。
|
||||
如果您的应用有如下特征, 就非常容易被黑客盯上:
|
||||
1. 应用中有大量有价值的数据
|
||||
2. 提供优惠、 促销
|
||||
3. 提供激励视频等奖励分发
|
||||
攻击者为了你的数据, 或者为了褥你的羊毛, 可以破解你的网络请求、 伪造假的客户端去请求你的服务器。
|
||||
你原本期待给正常用户提供福利, 以拉新或促活, 结果一场促销后, 正常用户没得到好处, 全给黑客褥走了。
|
||||
让普通工程师和测试人员具备黑客能力是不现实的, DCloud为开发者赋能, 解决了这些安全顾虑。
|
||||
在uni安全网络里, 可靠解决了如下2个老大难问题: 如何确认这个客户端, 真的是你的合法客户端?
|
||||
客户端和服务器的通信, 如何安全加密?
|
||||
在过去, 客户端和服务器是强分离的, 它们使用不同的技术开发, 中间通过无状态的http协议交流。
|
||||
现在, DCloud同时提供了端引擎uni - app和云引擎uniCloud, 统一了技术栈, 在uni - app开发的客户端和uniCloud开发的服务器之间, 使用了更安全的网络通信机制。
|
||||
安全网络仅支持App和微信小程序。 其他小程序和web无法保证客户端不被伪造。
|
||||
使用步骤:
|
||||
1. 在uniCloud控制台选定服务空间, 在安全网络设置页面绑定uni - app的客户端appid
|
||||
2. 使用DCloud云打包来打包这个appid的客户端( 要在manifest勾选安全网络模块)
|
||||
|
||||
这样, 这个客户端和这个服务空间之间就建立了安全网络。 云端可以准确识别客户端的真伪, 可以在uniCloud控制台直接设置拒绝非法客户端连接您的服务空间。
|
||||
这条安全网络, 几乎不会对请求速度等性能指标产生影响, 同时又可以识别假客户端、 马甲包。
|
||||
另外, 还可以在指定的网络请求中做内容加密。 不管是云对象请求还是云函数的callFunction, 都可以设置secret( 一个bool参数) 来对通信内容加密。
|
||||
secret参数设为true时, 这些内容将被加密传输, 无法被中间的路由器或伪造客户端解密。
|
||||
注意内容加密是影响请求速度的, 加解密耗时与内容的数据量有关。 数据量小时, 可以忽略影响; 数据量大时, 需自己进行实际测试来评估体验。
|
||||
uni安全网络还可以鉴别客户端的包名、 签名证书, 识别客户端设备是否被root或越狱, 禁止非法设备访问。
|
||||
uni安全网络需要开发者在uniCloud上开通, 但并不收费。
|
||||
如此高安全的保障, 在商业项目中都需要花掉不少银子来采购。 但DCloud免费给uniCloud开发者提供。 "
|
||||
}, {
|
||||
"title": "云对象-重新定义前后端交互",
|
||||
"subTitle": "更清晰的逻辑、更少的代码、更低的协作成本、更好的语法提示",
|
||||
"img": "static/list-mock/unicloud.png",
|
||||
"detail": "从2000年开始,xml作为数据交换格式开始流行,服务器拼接xml接口,客户端js获取xml内容,动态修改页面。
|
||||
几年后, 数据量更小的json替代了xml。
|
||||
移动互联网到来后, 因为客户端分裂, 加剧了接口的泛滥。
|
||||
一转眼, 接口已经玩了20年了。 其他技术飞速发展, 而前后端交互却一直是接口, 没有什么创新。
|
||||
js已经有了import、
|
||||
export, 为什么调用后端接口, 不能像调用一个前端模块一样呢?
|
||||
serverless, 让这一切开始了变化。
|
||||
亚马逊lambda提出了云函数的概念, 不再使用restful的url, 但仍然是基于json交换前后端数据。
|
||||
uniCloud最初也以支持云函数为开始, 但我们发现这仍不够优雅、 简洁、 直观、 统一。
|
||||
从HBuilderX 3.4 开始, uniCloud推出了“ 云对象”, 让调用云端服务, 真正变成像调用前端模块一样简单。
|
||||
云对象: 服务器编写API, 客户端调用API, 不再开发传输json的接口。 思路更清晰、 代码更精简。
|
||||
比如服务端编写一个云对象news, 该对象导出若干方法: add()、 getList()、 getDetailById()、 softDel()、 changeContent()、 allowPublic()、 addComment()、 getComments()
|
||||
...等。
|
||||
客户端的js则可以
|
||||
import 这个news云对象, 然后直接调用add等方法。
|
||||
HBuilderX中在uniCloud / cloudfunctions目录新建云函数 / 云对象, 选择类型为云对象, 起名为news。 打开云对象入口index.obj.js, 导出一个add方法。
|
||||
然后在客户端的js中, import这个news对象, 调用它的add方法。
|
||||
更多强大功能
|
||||
1. 预处理与后处理
|
||||
无论请求云对象的哪个方法, 开始前都会经过_before方法, 结束会执行_after方法。 这有助于统一的提前校验和格式化错误。
|
||||
2. 云对象的返回值兼容uniCloud响应体规范
|
||||
云对象返回值默认为uniCloud响应体规范, 方便客户端统一拦截错误。
|
||||
无论网络异常, 还是token过期, 都可以统一拦截提示。
|
||||
详见uniCloud响应体规范
|
||||
3. 自动显示交互界面
|
||||
每次写客户端联网的代码时, 开发者都免不了重复写一堆代码: 先调用loading等待框, 联网结束后再关闭loading, 如果服务器异常则弹出提示框。
|
||||
当然, 这些UI策略都可以自定义。
|
||||
4. URL化
|
||||
为了历史兼容考虑, 云对象同时提供了URL化方案。 开发者仍然可以把一个云对象转换为一个http的url接口。
|
||||
总结
|
||||
使用云对象带来的诸多好处:
|
||||
1. 更清晰的逻辑
|
||||
2. 更精简的代码
|
||||
3. 更少的协作成本( 以及矛盾图片)
|
||||
4. 客户端调用时在ide里有完善的代码提示, 方法参数均可提示。( 传输json可没法在ide里提示)
|
||||
5. 自动支持uniCloud响应体规范, 方便错误拦截和统一处理 "
|
||||
},
|
||||
{
|
||||
"title": "庆贺:uni-app海外月活设备过亿",
|
||||
"subTitle": "2022,让我们卷向海外吧",
|
||||
"img": "static/list-mock/internation.png",
|
||||
"detail": "在刚过去的4月,uni-app 在中国以外的国家,无论以 uv 还是以 ip 口径统计,月活跃设备均突破 1亿 大关。
|
||||
平台方面, 这些活跃设备主要来自于 App 和 web, 也有小部分小程序。
|
||||
国家分布方面, 遍布全球两百多个国家, 各大洲、 各种语言均有分布。
|
||||
用户量排名靠前的前10个国家是: 印度、 美国、 菲律宾、 巴西、 印度尼西亚、 尼日利亚、 土耳其、 越南、 马来西亚、 英国。
|
||||
这些应用有海外开发者开发的当地应用, 但大部分应用是由中国开发者开发的出海应用。
|
||||
作为世界工厂的中国, 制造能力向海外溢出; 而另一方面, 中国的数字化开发能力也在向海外加速溢出。 坦白讲, 中国的开发工程师数量、 数字应用制造能力, 对全球大多数国家而言不是一个级别的。
|
||||
在过去一年里, DCloud在国际化方面做了很多事, 不管是HBuilder、 uni - app、 还是uniCloud, 均提供了国际化方案, 帮助中国开发者更便利的出海。
|
||||
一、 HBuilder推出英文版
|
||||
除了中英文, HBuilder还开放制作各国语言包, 支持双向文字流, 即从右向左的文字。
|
||||
uni - app全面支持国际化
|
||||
1. 从前端到原生均支持国际化
|
||||
2. 从应用到框架均支持国际化
|
||||
3. 从vue到nvue均支持国际化
|
||||
4. 双向文字流。 从右向左的文字比如阿拉伯文也可以正常显示
|
||||
5. 海外主流sdk支持: 开发者出海不止需要多语言, 海外的主流SDK适配也是必需品。 uni - app 的map、 pay、 login、 push均支持海外主流SDK。
|
||||
H5、 App平台 Google地图
|
||||
App平台 支付支持 Paypal、 Stripe、 Google Pay、 Apple IAP
|
||||
App平台 登录支持 Google、 Apple、 Facebook
|
||||
App平台 推送支持 Google FCM
|
||||
插件市场还有众多其他海外SDK的支持插件
|
||||
|
||||
DCloud提供了 hello i18n 示例来演示各种国际化使用方法。
|
||||
可以在 HBuilder 新建项目界面 获取 hello i18n 示例, 也可以在插件市场下载: https: //ext.dcloud.net.cn/plugin?id=6462
|
||||
uniCloud终端用户可视数据国际化
|
||||
uniCloud的 DB Schema 中涉及字段的显示名称、 错误格式提示语, 这些也均支持国际化。
|
||||
uniCloud阿里云版也支持海外加速。
|
||||
|
||||
-
|
||||
配套开源生态的国际化
|
||||
|
||||
uni ui、 uni - starter、 uni - admin等重要开源项目均支持国际化。
|
||||
|
||||
中国的数字应用数量, 已经是世界顶级。 活跃的app、 小程序、 web网站, 数量上千万。 庞大的需求孕育出庞大的生产能力。
|
||||
中国仍然有很多机会, 但已经内卷严重。 与此同时, 其他国家其实也迫切的需要数字化, 他们需要中国的数字应用制造能力。
|
||||
DCloud已经为开发出海应用制作了大量轮子。 今年的插件大赛, DCloud还将设立专门预算奖励支持国际化的优秀插件。
|
||||
现在天时地利都具备, 就等你来开发应用了!
|
||||
2022, 让我们卷向海外吧。 "
|
||||
}
|
||||
]
|
||||
二进制
mpuniapp/static/location.png
普通文件
|
之后 宽度: | 高度: | 大小: 4.9 KiB |
二进制
mpuniapp/static/logo_square.jpeg
普通文件
|
之后 宽度: | 高度: | 大小: 2.5 KiB |
二进制
mpuniapp/static/plus.png
普通文件
|
之后 宽度: | 高度: | 大小: 1.2 KiB |
二进制
mpuniapp/static/shuijiao.jpg
普通文件
|
之后 宽度: | 高度: | 大小: 15 KiB |
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="108" height="50" viewBox="0 0 108 50">
|
||||
<path
|
||||
fill="#2196F3"
|
||||
d="M0,0
|
||||
Q15,0 16.501,9.151
|
||||
A38,38 0 0 0 91.499,9.151
|
||||
Q93,0 108,0
|
||||
L108,50
|
||||
L0,50
|
||||
Z"/>
|
||||
</svg>
|
||||
|
之后 宽度: | 高度: | 大小: 250 B |
二进制
mpuniapp/static/template.png
普通文件
|
之后 宽度: | 高度: | 大小: 461 B |
|
之后 宽度: | 高度: | 大小: 4.7 KiB |
|
之后 宽度: | 高度: | 大小: 3.1 KiB |
|
之后 宽度: | 高度: | 大小: 3.4 KiB |
二进制
mpuniapp/static/templateHL.png
普通文件
|
之后 宽度: | 高度: | 大小: 459 B |
二进制
mpuniapp/static/templateIndex.png
普通文件
|
之后 宽度: | 高度: | 大小: 606 B |
二进制
mpuniapp/static/test-audio/pause.png
普通文件
|
之后 宽度: | 高度: | 大小: 3.7 KiB |
二进制
mpuniapp/static/test-audio/play.png
普通文件
|
之后 宽度: | 高度: | 大小: 4.3 KiB |
二进制
mpuniapp/static/test-audio/stop.png
普通文件
|
之后 宽度: | 高度: | 大小: 2.5 KiB |
|
之后 宽度: | 高度: | 大小: 15 KiB |
|
之后 宽度: | 高度: | 大小: 11 KiB |
二进制
mpuniapp/static/test-image/logo.avif
普通文件
|
之后 宽度: | 高度: | 大小: 3.9 KiB |
二进制
mpuniapp/static/test-image/logo.bmp
普通文件
|
之后 宽度: | 高度: | 大小: 19 KiB |
二进制
mpuniapp/static/test-image/logo.gif
普通文件
|
之后 宽度: | 高度: | 大小: 3.2 KiB |
二进制
mpuniapp/static/test-image/logo.heic
普通文件
二进制
mpuniapp/static/test-image/logo.ico
普通文件
|
之后 宽度: | 高度: | 大小: 4.2 KiB |
二进制
mpuniapp/static/test-image/logo.jpg
普通文件
|
之后 宽度: | 高度: | 大小: 5.1 KiB |
二进制
mpuniapp/static/test-image/logo.png
普通文件
|
之后 宽度: | 高度: | 大小: 4.2 KiB |
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 196 196" style="enable-background:new 0 0 196 196;" xml:space="preserve" width="1em" height="1em">
|
||||
<style type="text/css">
|
||||
.st0{fill:#2B9939;}
|
||||
.st1{fill:#FFFFFF;}
|
||||
</style>
|
||||
<ellipse class="st0" cx="97.9" cy="98.1" rx="96.8" ry="96.8"/>
|
||||
<polygon class="st1" points="142.8,149.8 125.8,149.8 125.6,149.8 70.2,149.8 70.2,149.8 53.1,149.8 53.1,56.7 70.3,56.7
|
||||
70.3,132.6 125.6,132.6 125.6,56.7 142.8,56.7 "/>
|
||||
</svg>
|
||||
|
之后 宽度: | 高度: | 大小: 688 B |
二进制
mpuniapp/static/test-image/logo.tif
普通文件
二进制
mpuniapp/static/test-image/logo.webp
普通文件
|
之后 宽度: | 高度: | 大小: 3.0 KiB |
|
之后 宽度: | 高度: | 大小: 67 KiB |
|
之后 宽度: | 高度: | 大小: 1.0 KiB |
@@ -0,0 +1,31 @@
|
||||
#EXTM3U
|
||||
#EXT-X-VERSION:3
|
||||
#EXT-X-TARGETDURATION:10
|
||||
#EXT-X-MEDIA-SEQUENCE:0
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo0.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo1.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo2.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo3.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo4.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo5.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo6.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo7.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo8.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo9.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo10.ts
|
||||
#EXTINF:10.000000,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo11.ts
|
||||
#EXTINF:1.773667,
|
||||
https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo12.ts
|
||||
#EXT-X-ENDLIST
|
||||
|
之后 宽度: | 高度: | 大小: 1.1 KiB |
|
之后 宽度: | 高度: | 大小: 1.1 KiB |