diff --git a/README.md b/README.md index b1b79d2a3ec58f6823bb73ad2b0c3a82bc6a9825..3a95f92819d4a5177c46d566077ffc7de463e80a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ `uni-app` 是一个使用 `Vue.js` 开发小程序、H5、App的统一前端框架。官网地址:[https://uniapp.dcloud.io](https://uniapp.dcloud.io) -开发者使用 `Vue` 语法编写代码,`uni-app` 框架将其编译到 小程序(微信/支付宝/百度/字节跳动/QQ)、App(iOS/Android)、H5等多个平台,保证其正确运行并达到优秀体验。 +开发者使用 `Vue` 语法编写代码,`uni-app` 框架将其编译到 小程序(微信/支付宝/百度/字节跳动/QQ/钉钉)、App(iOS/Android)、H5等多个平台,保证其正确运行并达到优秀体验。 # uni-app的特点 @@ -45,9 +45,26 @@ `uni-app`有丰富的插件生态,众多开发者提交了各种组件、sdk、项目模板,详见:[https://ext.dcloud.net.cn/](https://ext.dcloud.net.cn/) -## 更多资料 +## 现有项目如何迁移到uni-app体系 -- 评测:[深入测试一周,主流多端框架大比武](https://mp.weixin.qq.com/s/jIDEHfuMnED6HTfNgjsW4w) - 微信小程序转换uni-app指南及转换器:[https://ask.dcloud.net.cn/article/35786](https://ask.dcloud.net.cn/article/35786) - vue h5项目转换uni-app指南:[https://ask.dcloud.net.cn/article/36174](https://ask.dcloud.net.cn/article/36174) - mpvue 项目(组件)迁移指南、示例及资源汇总: [https://ask.dcloud.net.cn/article/34945](https://ask.dcloud.net.cn/article/34945) + +## 常见疑问 + +- 问:不同端有不同的需求、不同的特色,登陆支付也不一样,如何统一? +- 答:差异部分使用条件编译。uni-app提供了灵活强大的[条件编译](https://uniapp.dcloud.io/platform)。可以完美处理复用部分和差异部分。真正一套工程源码。当业务升级时,不再需要多端维护。如果多端维护,经常会因为某些端的流量不大,就一直拖延无法让那些用户享受到最新服务。另外登陆支付在客户端部分,已经被uni-app统一成一样的api了。 + + +- 问:多端是不是一种妥协,是否会造成性能下降? +- 答:good question。多端且不影响性能,确实很难,但uni-app做到了。在h5端,它的性能、包体积与直接使用vue.js开发一致; 在小程序端,它的性能比大多数开发框架更好,uni-app底层自动处理的setdata差量同步机制,比开发者手动写setdata更好,就像使用vue.js更新界面比手动写js修改dom更高效一样; 在App,uni-app支持webview渲染和原生渲染双引擎,启用原生渲染时,css写法受限,但性能是很接近原生开发的效果的,在当前的手机环境下,千万日活以下的应用在App使用uni-app也不会遇到任何压力。当然也可以在已经做好的原生App中将部分页面改为uni-app实现; 此外,我们会把很多跨端处理放在编译期完成的,这样会减少对运行期的效率影响。 + + +- 问:不做多端,是不是不需要uni-app。 +- 答:不是。大量开发者用uni-app只做一个端,详见[案例](https://uniapp.dcloud.io/case)。对于开发者而言,一个优秀工具在手,做什么都不愁。 + +## 更多资料 + +- 评测:[深入测试一周,主流多端框架大比武](https://mp.weixin.qq.com/s/jIDEHfuMnED6HTfNgjsW4w) +- [uni-app在App端和flutter、react native的比较](https://ask.dcloud.net.cn/article/36083) diff --git a/docs/README.md b/docs/README.md index 0936ad2d69a1794d79897b0abfdc34bf45cef52d..6c4845d5fd936eb39a713a6b927266b7f622f8ae 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,5 @@ -```uni-app``` 是一个使用 [Vue.js](https://vuejs.org/) 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/阿里/百度/头条/QQ)等多个平台。 +```uni-app``` 是一个使用 [Vue.js](https://vuejs.org/) 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。 即使不跨端,```uni-app```同时也是更好的小程序开发框架。详见[评测](https://ask.dcloud.net.cn/article/35947) diff --git a/docs/api/file/file.md b/docs/api/file/file.md index e9b64ac716c630603423e2eb2338053dbf604d22..b5006944e5ea1881e1d47446f93ebc470db356fc 100644 --- a/docs/api/file/file.md +++ b/docs/api/file/file.md @@ -47,7 +47,7 @@ uni.chooseImage({ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|x|√|√|√|x| +|√|x|√|√|√|√| **OBJECT 参数说明:** @@ -127,7 +127,7 @@ uni.getSavedFileInfo({ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|x|√|√|√|x| +|√|x|√|√|√|√| **OBJECT 参数说明:** @@ -162,7 +162,7 @@ uni.getSavedFileList({ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|x|√|√|√|x| +|√|x|√|√|√|√| **OBJECT 参数说明:** diff --git a/docs/api/key.md b/docs/api/key.md index 68deba7c57b812791e3a73e3c71237203809b778..72799fe761ceca8cfec6dd3e9356cf2c373ae801 100644 --- a/docs/api/key.md +++ b/docs/api/key.md @@ -5,6 +5,6 @@ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|x|x| +|√|√|√|√|x|√| 隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。 diff --git a/docs/api/lifetime.md b/docs/api/lifetime.md index 70dddc415bb7d38397fbcf2eee6c543d4f2fb86d..eed16deb550ac3022c10dfaab41428ff31522708 100644 --- a/docs/api/lifetime.md +++ b/docs/api/lifetime.md @@ -24,10 +24,10 @@ |onShow|监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面||| |onReady|监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发||| |onHide|监听页面隐藏||| -|onUnload|监听页面卸载||| +|onUnload|监听页面卸载||| |onResize|监听窗口尺寸变化|5+App、微信小程序|| |onPullDownRefresh|监听用户下拉动作,一般用于下拉刷新,参考[示例](api/ui/pulldown)||| -|onReachBottom|页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。如使用scroll-view导致页面级没有滚动,则触底事件不会被触发||| +|onReachBottom|页面滚动到底部的事件(不是scroll-view滚到底),常用于上拉加载下一页数据。如使用scroll-view导致页面级没有滚动,则触底事件不会被触发||| |onTabItemTap|点击 tab 时触发,参数为Object,具体见下方注意事项|微信小程序、百度小程序、H5、5+App(自定义组件模式)|| |onShareAppMessage|用户点击右上角分享|微信小程序、百度小程序、头条小程序、支付宝小程序|| |onPageScroll|监听页面滚动,参数为Object||| @@ -36,7 +36,7 @@ |onNavigationBarSearchInputChanged|监听原生标题栏搜索输入框输入内容变化事件|5+App、H5|1.6.0| |onNavigationBarSearchInputConfirmed|监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。|5+App、H5|1.6.0| |onNavigationBarSearchInputClicked|监听原生标题栏搜索输入框点击事件|5+App、H5|1.6.0| - + ``onPageScroll`` 参数说明: |属性|类型|说明| @@ -80,4 +80,4 @@ export default { **注意** -- nvue 页面支持的生命周期参考:[nvue 生命周期介绍](/use-weex?id=生命周期)。 \ No newline at end of file +- nvue 页面支持的生命周期参考:[nvue 生命周期介绍](/use-weex?id=生命周期)。 diff --git a/docs/api/location/map.md b/docs/api/location/map.md index 95b46bcf0693320364a09f78a5f0c628a6d57d33..0fc0ce14bf7aa91a4dd62e1458daf9489ac13ce2 100644 --- a/docs/api/location/map.md +++ b/docs/api/location/map.md @@ -17,8 +17,8 @@ mapContext |:-|:-|:-|:-|:-| |getCenterLocation|OBJECT|获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 [uni.openLocation](api/location/location?id=getlocation)||| |moveToLocation||将地图中心移动到当前定位点,需要配合map组件的show-location使用||| -|translateMarker|OBJECT|平移marker,带动画||| -|includePoints|OBJECT|缩放视野展示所有经纬度||| +|translateMarker|OBJECT|平移marker,带动画|App-nvue 2.1.5+、微信小程序带动画|| +|includePoints|OBJECT|缩放视野展示所有经纬度|App-nvue 2.1.5+|| |getRegion|OBJECT|获取当前地图的视野范围||| |getScale|OBJECT|获取当前地图的缩放级别||| |$getAppMap||获取原生地图对象 [plus.maps.Map](https://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.Map)|5+App自定义组件模式|1.9.3| diff --git a/docs/api/media/image.md b/docs/api/media/image.md index 291e834d3a1cb5006084888fb3c0f04f876bbd35..f7fe4aebdfe56d00c8767cb12cdb1318c6b11c8e 100644 --- a/docs/api/media/image.md +++ b/docs/api/media/image.md @@ -130,7 +130,7 @@ uni.chooseImage({ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| **OBJECT 参数说明** diff --git a/docs/api/media/video-context.md b/docs/api/media/video-context.md index 40fd643457b3bf6f20a1a8d7778edae508d9e2aa..303400fdfae13b1d5f0f9aacd62e62e4c8e18c8d 100644 --- a/docs/api/media/video-context.md +++ b/docs/api/media/video-context.md @@ -5,7 +5,7 @@ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|x|√|x| +|√|√|√|x|√|√| **videoContext 对象的方法列表** diff --git a/docs/api/media/video.md b/docs/api/media/video.md index c7ece076b2bd37a27841b8eccb4fa583f6ccc71a..9426a12147abb05e3e6500bd34492f4784338893 100644 --- a/docs/api/media/video.md +++ b/docs/api/media/video.md @@ -5,7 +5,7 @@ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|x|√|√| +|√|√|√|√|√|√| **OBJECT 参数说明** diff --git a/docs/api/other/get-extconfig.md b/docs/api/other/get-extconfig.md index c714dd58a76bcfb3f0affceb47cfe432a82f01c9..5a46ff914bb3a31584de52e068c682b6637d1594 100644 --- a/docs/api/other/get-extconfig.md +++ b/docs/api/other/get-extconfig.md @@ -6,7 +6,7 @@ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|x|x|√|x|√|x| +|x|x|√|x|√|√| **OBJECT参数说明** @@ -47,7 +47,7 @@ if (uni.getExtConfig) { |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|x|x|√|x|√|x| +|x|x|√|x|√|√| **返回值(Object)** diff --git a/docs/api/other/setting.md b/docs/api/other/setting.md index 168c1ba24e8b9bcdc9fac6f17231d6f9d45d8e72..f64d072f468eb51a45b217bb6fd453c6140612c7 100644 --- a/docs/api/other/setting.md +++ b/docs/api/other/setting.md @@ -6,7 +6,7 @@ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|x|x|√|x|√|√| +|x|x|√|√|√|√| |属性|类型|必填|说明| |---|---|---|---|---| @@ -37,7 +37,7 @@ uni.openSetting({ |5+App|H5|微信小程序|支付宝小程序|百度小程序| |:-:|:-:|:-:|:-:|:-:| -|x|x|√|x|√| +|x|x|√|√|√| |属性|类型|必填|说明| |---|---|---|---|---| diff --git a/docs/api/other/update.md b/docs/api/other/update.md index dbf50414fc2bc42d6016fab9185f916fab1b81e4..71ae914fa7a32d77dddf8aa663641521aa579755 100644 --- a/docs/api/other/update.md +++ b/docs/api/other/update.md @@ -10,7 +10,7 @@ App的更新不使用本API,另见文档: |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|x|x|√|x|√|√| +|x|x|√|√|√|√| **updateManager 对象的方法列表:** diff --git a/docs/api/request/request.md b/docs/api/request/request.md index d50cef0ca08041649a864fb190d5d1a720f24b0a..61bc20d8e265ec562db99c9e08883e07cc9ac675 100644 --- a/docs/api/request/request.md +++ b/docs/api/request/request.md @@ -118,4 +118,5 @@ requestTask.abort(); - 按照 W3C 规范,H5 端无法获取 response header 中 Set-Cookie、Set-Cookie2 这2个字段,对于跨域请求,允许获取的 response header 字段只限于“simple response header”和“Access-Control-Expose-Headers”([详情](https://www.w3.org/TR/cors/#access-control-allow-credentials-response-header)) - [uni-app 插件市场](https://ext.dcloud.net.cn/search?q=%E6%8B%A6%E6%88%AA%E5%99%A8)有flyio、axios等三方封装的拦截器可用 - 低版本手机自身不支持 ipv6,如果服务器仅允许 ipv6,会导致老手机无法正常运行或访问速度非常慢 -- localhost、127.0.0.1等服务器地址,只能在电脑端运行,手机端连接时不能访问。请使用标准IP并保证手机能连接电脑网络 \ No newline at end of file +- localhost、127.0.0.1等服务器地址,只能在电脑端运行,手机端连接时不能访问。请使用标准IP并保证手机能连接电脑网络 +- debug 模式,安卓端暂时无法获取响应头,url中含有非法字符(如未编码为%20的空格)时会请求失败 \ No newline at end of file diff --git a/docs/api/request/websocket.md b/docs/api/request/websocket.md index 90d61afae550950a28d764be51d0351accff183a..2c464fd48c97f72ce1193515c0ed721750df7747 100644 --- a/docs/api/request/websocket.md +++ b/docs/api/request/websocket.md @@ -66,7 +66,7 @@ var socketTask = uni.connectSocket({ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| **CALLBACK 返回参数** @@ -93,7 +93,7 @@ uni.onSocketOpen(function (res) { |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| **示例代码** @@ -116,7 +116,7 @@ uni.onSocketError(function (res) { |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| **OBJECT 参数说明:** @@ -163,7 +163,7 @@ function sendSocketMessage(msg) { |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| **CALLBACK 返回参数** @@ -190,7 +190,7 @@ uni.onSocketMessage(function (res) { |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| **OBJECT 参数说明** @@ -209,7 +209,7 @@ uni.onSocketMessage(function (res) { |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|√|√|√|√|x| +|√|√|√|√|√|√| ```javascript uni.connectSocket({ diff --git a/docs/api/ui/intersection-observer.md b/docs/api/ui/intersection-observer.md index ab467bb48376ac87ce8d652765bc08e59cca6c80..c6e515d7ba052350c83e26f01556c4ee0abf20aa 100644 --- a/docs/api/ui/intersection-observer.md +++ b/docs/api/ui/intersection-observer.md @@ -7,7 +7,7 @@ |5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序| |:-:|:-:|:-:|:-:|:-:|:-:| -|√|HBuilderX 2.0.4+|√|x|√|x| +|√|HBuilderX 2.0.4+|√|√|√|√| **options 的可选参数为:** diff --git a/docs/case.md b/docs/case.md index 29da9b73ad2eebec51ad8d7c4e3380101986b5ec..615e5b6448875d767f92ac81a31577b5ea9f94f9 100644 --- a/docs/case.md +++ b/docs/case.md @@ -392,6 +392,8 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者 **摸鱼:**职场生活圈。[微信小程序](http://m3w.cn/moyu) +**千家找房:**专业的二手房、新房买卖租赁平台。[App、小程序、H5通用链接](http://m3w.cn/qjzf) + **超英预告:**超级英雄预告,腾讯课堂Next学院的uni-app课程示例,[H5](http://www.imovietrailer.com)、微信小程序搜索“NEXT超英预告”。 **垃圾分类帮帮团:** [微信小程序码地址](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/ljfl.png) diff --git a/docs/collocation/manifest.md b/docs/collocation/manifest.md index aaee7f912270fe2010db90341f810d4c497b5949..6f44122b48c38677db6acccdbc4385b3779e235c 100644 --- a/docs/collocation/manifest.md +++ b/docs/collocation/manifest.md @@ -47,8 +47,8 @@ |distribute|Object|5+App 发布信息,[详见](/collocation/manifest?id=distribute)|| |usingComponents|Boolean|是否启用自定义组件模式,默认为false,[编译模式区别详情](https://ask.dcloud.net.cn/article/35843)|1.9.0| |nvueCompiler|String|切换 nvue 编译模式,可选值,`weex` :老编译模式,`uni-app`: 新编译模式,默认为 `weex` 。[编译模式区别详情](http://ask.dcloud.net.cn/article/36074)|2.0.3 Alpha| -|nvue|Object|nvue 页面布局初始配置,[详见](/collocation/manifest?id=nvue)|2.0.3 Alpha| - +|renderer|String|可不加载基于 webview 的运行框架,减少包体积、提升启动速度。可选值 `native`| App-nvue 2.2.0+| +|nvue|Object|nvue 页面布局初始配置,[详见](/collocation/manifest?id=nvue)|2.0.3 Alpha| PS:这里只列出了核心部分,更多内容请参考 [完整的 manifest.json](/collocation/manifest?id=完整-manifestjson)。 **Tips** diff --git a/docs/collocation/package.md b/docs/collocation/package.md index 0d585d0b0bfff9ccbcfec5cc8aca34e7be4a86dc..4fbaaa4e2ba1ba5876679b8d8a229edf9b96b422 100644 --- a/docs/collocation/package.md +++ b/docs/collocation/package.md @@ -1,6 +1,6 @@ 通过在`package.json`文件中增加`uni-app`扩展节点,可实现自定义条件编译平台(如钉钉小程序、微信服务号等平台)。 -package.json扩展配置用法: +package.json扩展配置用法(拷贝代码记得去掉注释!): ```json { diff --git a/docs/collocation/vue-config.md b/docs/collocation/vue-config.md index 3d4d19c8fa71aa60a8df3cf64892af8c73bdd590..792948ce888ce5385ccb1d15e58941b565d656c3 100644 --- a/docs/collocation/vue-config.md +++ b/docs/collocation/vue-config.md @@ -15,4 +15,44 @@ vue.config.js 是一个可选的配置文件,如果项目的根目录中存在 * runtimeCompiler 固定 false * productionSourceMap 固定 false * css.extract H5 平台固定 false,其他平台固定 true -* parallel 固定 false \ No newline at end of file +* parallel 固定 false + +**使用示例** + +**自定义静态资源目录** + +```js +const path = require('path') +const CopyWebpackPlugin = require('copy-webpack-plugin') + +module.exports = { + configureWebpack: { + plugins: [ + new CopyWebpackPlugin([ + { + from: path.join(__dirname, 'src/images'), + to: path.join(__dirname, 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'images') + } + ]) + ] + } +} +``` + +**注入全局依赖** + +```js +const webpack = require('webpack') + +module.exports = { + configureWebpack: { + plugins: [ + new webpack.ProvidePlugin({ + 'localStorage': ['mp-storage', 'localStorage'], + 'window.localStorage': ['mp-storage', 'localStorage'] + }) + ] + } +} +``` + diff --git a/docs/component/_sidebar.md b/docs/component/_sidebar.md index e73be05c92e401619fba9113e529bb2d05a3a1ec..5c7f8e60795fe9b9681149e5b6573d7c3f559712 100644 --- a/docs/component/_sidebar.md +++ b/docs/component/_sidebar.md @@ -72,6 +72,7 @@ * [SwiperDot 轮播图指示点](https://ext.dcloud.net.cn/plugin?id=284) * [Tag 标签](https://ext.dcloud.net.cn/plugin?id=35) * [更多插件市场的组件](https://ext.dcloud.net.cn/?cat1=2) +* [配置微信小程序插件](component/mp-weixin-plugin.md) * [原生组件说明](component/native-component.md)