精华内容
参与话题
问答
  • uni-app实战仿微信app开发

    千人学习 2020-03-08 01:48:48
    适用人群 ... 本季度为uni-app + egg.js 实战仿微信app和小程序全栈开发,开启纯nvue原生渲染,大大提高性能。一次开发,同时搞定Android、iOS和小程序端等。 课程大纲见以下图!
  • uniapp实战开发商城APP和小程序

    千人学习 2020-03-30 17:35:41
    课程包含Uniapp开发全端教程,课程由英特网络独家录制,购买课程后赠送后端CMS管理系统,可以修改商品及接口数据,同时CMS提供Uniapp所需要的全部API接口,包括课程内容:安卓证书申请/APP苹果打包/APP安卓打包/微信...
  • uni-app入门

    万次阅读 多人点赞 2019-06-26 10:25:48
    一、uni-app简单介绍 什么是uni-appuni-app 是使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。 uni-app的优点 跨平台发行,运行体验更好 与小程序的...

    一、uni-app简单介绍

    什么是uni-app?

    uni-app 是使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。

    uni-app的优点

    跨平台发行,运行体验更好

    • 与小程序的组件、API一致;
    • 兼容weex原生渲染,增加了开发效率高,但是由于weex坑比较多,建议还是使用局部渲染优化;

    通用前端技术栈,学习成本更低

    • 支持vue语法,微信小程序API
    • 内嵌mpvue

    开发生态,组件更丰富

    • 支持通过npm安装第三方包
    • 支持微信小程序自定义组件及JS SDK
    • 兼容mpvue组件及项目(内嵌mpvue开源框架)
    • App端支持和原生混合编码
    • 插件丰富,DCloud将发布插件到市场

    二、功能框架浏览图

    在这里插入图片描述

    三、创建项目

    1、安装HBuilderX

    HBuilderX内置相关环境,无需配置nodejs、vue等,三秒钟就可以创建一个项目。

    • 小提示:ctril+N可以快速调转到新建选择类型
      在这里插入图片描述

    2、创建uni-app
    在这里插入图片描述

    3、运行项目
    在这里插入图片描述
    4、官方提示

    • static 目录下的 js 文件不会被编译,如果里面有 es6 的代码,不经过转换直接运行,在手机设备上会报错。
    • css、less/scss 等资源同样不要放在 static 目录下,建议这些公用的资源放在 common 目录下。

    四、学习框架

    1、项目结构介绍

    在这里插入图片描述

    2、开发规范

    2.1 uni-app 约定的开发规范

    • 页面文件遵循 Vue 单文件组件规范
    • 组件标签靠近小程序规范
    • 接口能力(JS API)靠近微信小程序规范,但需将前缀 wx 替换为 uni
    • 数据绑定及事件处理同 Vue.js 规范,同时补充了App及页面的生命周期
    • 为兼容多端运行,建议使用flex布局进行开发

    2.2 uni-app 开发的注意事项

    • html标签
      uni-app的tag同小程序的tag,和HTML的tag不一样,比如div要改成view,span要改成text、a要改成navigator。

    • CSS
      推荐使用flex布局模型
      单位方面,uni-app 支持的通用 css 单位包括 px、rpx
      (早期 uni-app 提供了 upx ,目前已经推荐统一改为 rpx 了)

    • JS
      只有H5端可使用浏览器内置对象,比如document、window、localstorage、cookie等,以及jquery等依赖。

    • 项目文件
      显示页面必须放到pages目录下,页面所在目录的目录名需要放入相同名称的.vue文件。
      在这里插入图片描述

      静态资源如图片,固定放到static目录下。这是webpack、mpvue的规则

    • echats图表
      H5端流行的echart报表因为涉及大量dom操作,无法跨端使用,而wx-chart在跨端和更新方面都不足,推荐使用uChart组件。如仍然坚持使用原版echart,可在web-view组件中内嵌html来使用。

    3、页面样式与布局

    (1)尺寸单位

    uni-app支持以下css单位:

    单位 介绍
    px 屏幕像素
    upx uni-app提供根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准,屏幕变宽,upx实际显示效果会等比放大
    vh 是视窗高度的百分比
    单位换算 设计稿 1px / 设计稿基准宽度 = 框架样式 1upx / 750upx

    注意问题: 动态绑定的 style 不支持使用 upx,因为upx是编译器处理的,在手机端动态修改样式赋值时,无法直接使用 upx。

    解决方案: 使用 uni.upx2px(Number) 转换为 px 后再赋值。

    this.cWidth = uni.upx2px(750);
    

    (2)样式导入

    <style>
        @import "../../common/color.css";
        .colorA {
            box-shadow: none;
        }
    </style>
    

    (3)内联样式

    支持 style 和 class来控制样式,但建议不要在style中直接使用,影响渲染速度。

    (4)所支持的选择器
    在这里插入图片描述

    (5)背景图片 和 字体图标

    • 支持 base64 格式图片。
    • 支持网络路径图片。
    • 使用本地图片或字体图标需注意:
    1. 图片小于 40kb,uni-app 会自动将其转化为 base64 格式;
    2. 图片大于等于 40kb, 需开发者自己将其转换为base64格式使用,或将其挪到服务器上,从网络地址引用。
    3. 本地引用路径仅支持以 ~@ 开头的绝对路径(不支持相对路径)。
    /* 背景图片 */
     .bgImg {
         background-image: url('~@/static/logo.png');
     }
    /* 字体图标 */
     @iconImg {
         font-family: test1-icon;
         src: url('~@/static/iconfont.ttf');
     }
    

    (6)条件编译

    1、用特殊的代码做标记,不同标记里面的代码可以在不同平台里面执行。

    2、支持的文件

    • .vue
    • .js
    • .css
    • pages.json
    • 各预编译语言文件,如:.scss、.less、.stylus、.ts、.pug

    3、语法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。

    • #ifdef:if defined 仅在某平台存在
    • #ifndef:if not defined 除了某平台均存在
    • %PLATFORM%:平台名称
    	<!-- #ifndef APP-PLUS -->
    	<text class="app-text">text</text>
    	<!-- #endif -->
    	
    	<!-- #ifdef MP-WEIXIN -->
    	<text class="weixin-text">text</text>
    	<!-- #endif -->
    
    展开全文
  • uni-app是一个使用 Vue.js 开发跨平台应用的前端框架,使用hbuilder X可以快速将一套代码打包至最多7个平台。对于个人开发者,或者创业公司来说就是开发神器,省去了很多开发成本。下面就给大家介绍一下怎么快速上手...
    uni-app是一个使用 Vue.js 开发跨平台应用的前端框架,使用hbuilder X可以快速将一套代码打包至最多7个平台。对于个人开发者,或者创业公司来说就是开发神器,省去了很多开发成本。下面就给大家介绍一下怎么快速上手uni-app。

    uni-app使用的是vuejs的语法,所以会vuejs的朋友就可以跳过学习语法这一步了,还不会vuejs的朋友也不要紧,可以先去vue官方文档看看,vue的文档可以说非常通俗易懂了,如果你有遇到前端方面的问题或者需要一些前端学习资料可以加q群:682783851。下面就假设大家都会vuejs了。

    首先,我们已经知道uni-app是用来制作一个跨平台应用的,所以,在开始之前,我们一定要知道uni-app是如何打包到多个平台的,使用uni-app开发,我这里是建议大家使用官方的开发者工具的,官方工具也非常好用,对于一些配置项非常方便,可以省去很多麻烦,使用开发者工具我们就知道了,uni-app跨平台都是开发者工具来完成编译的。
    那么对于多个平台,是不是只需要看一端就行了呢?答案是否定的,uni-app对百分之90的样式是完全跨平台的,对于一些特殊的,因为每个平台要求不一样,所以我们要使用条件编译来做适配,另外对于一些第三方授权登录或者支付功能每个平台也有所不同。这里我们注意要使用条件编译,重要点是一定要注意每个平台对组件或接口的兼容性
    另外,需要注意的是uni-app中对vue语法的兼容性,使用 Vue.js 注意事项
    了解上面的两点之后,我们就可以开始创建一个项目了,打开hbuilder X,左上角文件-新建-项目,可以选择uni-app的模板学习一下,看看uni-app的目录结构如何,下面是【购靓号】项目的目录结构

    下面目录说明好好看一下

    common 是存放公共js和css的目录,大家可以把一些工具js或者公共的css放这里面
    components是放组件的目录,我们所有的组件都可以放这里面,记住组件里面不能使用uni-app页面钩子函数
    pages 是uni-app放页面的文件夹,我们每次在这里面新建一个页面,hbuilder X都会在pages.json里面配置好。
    static 是存放字体或图片的文件夹,一些静态资源都可以放这里面
    store 是vuex状态管理,因为uni-app项目内置vuex所以直接在main.js里面配置一下就可以使用了
    subpages 是因为内容过多,分的包,这里面新建的页面pages.json里面不会自动生成对应配置项
    subpagesA 也是分的包,因为小程序限制,所以建议大家在一开始就考虑分包情况。免得后面又要整理
    unpackage 里面的打包后的东西,我们可以不用管,h5打包后会放在这个里面的dist/build/h5里面
    App.vue 可以说是入口文件,我们公共的css可以放这里面,应用启动需要做的事情也可以放这里面,但是这个里面是不能进行页面跳转的
    main.js 是入口js文件,跟vue脚手架一样的,我们可以引入全局js,配置一些全局js函数等都可以在这里操作
    manifest.json是uni-app的配置项,一般都是可视化配置,很少用到源码配置,大家基本看一看就知道了,不知道的加QQ群私聊群主:682783851
    pages.json 就是页面配置文件了,你写的每一个页面都要在这里面配置,每个页面一些的特殊配置项也是在这里面写,uni-app pages配置项
    uni.scss 是uni-app的样式包,大家随意放

    这个时候我们就可以开始开发页面了,直接在pages文件夹上右键就可以新建页面了,每一个页面都是vue文件,结构跟我们使用vue脚手架一样,写起来还是很舒服呀!
    上面是一个大概的讲述,具体的学习路线还是要依赖官方文档,大家可以根据下面流程学习

    uni-app介绍
    uni-app组件
    uni-app配置
    uni-app接口
    一定要注意每个组件和接口在平台的支持情况。

    官方文档非常详细,我们无需依赖其他书籍,有问题可以加QQ群,里面有很多学习资料,也可以提资源需求,还可以私聊群主解决问题,群主就是我,哈哈哈。
    另外,想看看uni-app做出来的跨平台应用是什么体验的小伙伴,可以看下面了,体验一下中大型项目的感觉,包含登录支付功能,还可以分享

    下面是【购靓号】平台的跨平台应用,PC端可访问购靓号 或复制打开链接https://www.golianghao.com。手机端可扫码体验
    展开全文
  • uni-app实战商城类app和小程序

    千人学习 2020-03-07 22:06:28
    本季度为uni-app实战项目第2季度,将实战商城类app和小程序,其中会包括发布到安卓端app,iOS端app、微信小程序,另外还会涉及Weex(nvue),Vuex模块化管理,商城支付模块等。 课程大纲见以下图!
  • uni-app 从入门到放弃(持续更新)

    万次阅读 多人点赞 2019-05-22 01:31:51
    最近的任务是做一个混合的app,刚好我想玩一下uni-app怎么样,在考虑用哪个技术的时候,考虑了RN,Taro,uni-app,RN没有踩过坑怕hold不住,Taro很少看到编译成app的案例,而uni-app比较多,就决定是你了,然后...1....

    最近的任务是做一个混合的app,刚好我想玩一下uni-app怎么样,在考虑用哪个技术的时候,考虑了RN,Taro,uni-app,RN没有踩过坑怕hold不住,Taro很少看到编译成app的案例,而uni-app比较多,就决定是你了,然后...

    1.搭建环境

    上官网安装一下开发工具

    这里送上连接 www.dcloud.io/hbuilderx.h…
    然后需要安装微信开发者工具 最好用最新的

    如果直接写app的话 可以安装模拟器 我自己安装的是Android Studio 如果是mac 再安装Xcode 就可以双端撸起来了

    然后用开发工具 创建一个模板

    2.使用vuex

    uni-app已经内置vuex 不需要再安装了 

    在根目录下新建store文件 在其目录创建index.js

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    const store = new Vuex.Store({
    	state: {
    		text: 'demo'
    	},
    	mutations: {
    		SetText(state, v) {
                        state.text = v
                    }
    	},
    	actions: {
    		setText: function({commit}, v) {
                            commit('SetText', v)
                    }
    	}
    })
    
    export default store 复制代码

    然后在main.js入口文件

    import Vue from 'vue'
    import App from './App'
    
    // 这里引入store
    import store from './store'
    
    // 这里是重要的一步 这里不写 app会找不到store
    Vue.prototype.$store = store
    
    const app = new Vue({
    	store,
    	...App
    })
    app.$mount()复制代码

    3.配置

    打开manifest.json 这里是可视化的



    mac这边还有一个坑 需要配置微信开发者工具的路径 打开偏好设置


    如果不配置 一直会报错 如果出现启动不了微信开发者工具 可以自己找到编译好的目录 自己手动导入就可以了

    4.HBuilderX 1.9.8的坑

    首先是onLoad生命周期 调用路由的api会报错

    navigateTo with an already exist webviewId 1  复制代码

    如果出现这个错 解决办法就是延迟

    setTimeout(() => {
        uni.switchTab({
            url: '这里是路径'
        })
    }, 400)复制代码
    官方说在1.9.9+版本会修复

    5.获取节点

    支持微信小程序 H5 APP 其他没有测试

    uni.createSelectorQuery()
    // 官方说自定义组件模式 要这样写
    uni.createSelectorQuery().in(this)复制代码

    这里需要注意一点 要在onReady这个生命周期里面才能获取到

    6.swiper的高度问题

    大家如果写过微信小程序的话都知道swiper是要写一个高度的,而uni-app等于也是一个加强版的小程序,swiper也要写高度,但我们都不太能确定高度,只能用一些办法来确定它的高度

    第一种办法就是已知item的高度,在获取数据后,用item的高度*item的数量获得高度

    第二种就是用节点获取高度,我自己就用这个办法,亲测app跟微信小程序都ok

    // 先在swiper组件写上动态style来获得高度
    <swiper :style="{height: `${swiperHeight}px`}">
        <swiper-item v-for="(item,index) in tabList" :key="index">
            <div :class="columnList[index]"></div>
        </swiper-item>
    </swiper>
    
    // 这里的class 我一开始是用字符串模板来实现`columnList${index}`
    // 跑是能跑起来 但是会报错 忍不住自己就不用字符串了
    // 接着使用fun的办法 但是uni-app不支持这种写法
    // 后面想着用tabList的长度来初始化一个columnList (这个办法有点笨,如果有人有更好的办法,请告诉我这个菜鸡)
    
    // 书写一个获取节点的方法
    get_wxml(className, callback) {
        uni.createSelectorQuery().select(className).boundingClientRect(callback).exec()
    }
    // 在onReady生命周期里面获取高度
    onReady() {
        this.get_wxml(这里写你要获取的节点,我这里是我定义的columnList[index], (rects) => {
    	this.swiperHeight = rects.height
        })
    }复制代码

    7.条件编译

    多端开发肯定避免不了存在跨端的差异性,uni-app也提供了条件编译功能

    • #ifdef:if defined 仅在某平台存在
    • #ifndef:if not defined 除了某平台均存在

    写法如下

    #ifdef APP-PLUS
    需条件编译的代码
    #endif
    APP-PLUS是指app端的 还有更多端的 我这里提供链接 查询uniapp.dcloud.io/platform

    优化建议

    建议使用自定义组件模式

    每次data改变都会重新渲染视图,一些不是视图的变量,可以考虑定义在data外面

    写组件的时候避免多层嵌套,建议3 4层还最佳

    建议用vuex来管理数据,如果想要在app更好的性能可以使用nvue来开发

    开发体验

    uni-app的开发体验还行 但是需要自己去磨平部分一些跨端的差异 比如导航栏 我自己研究还不透 先不分享这块了

    关于app调试的时候没有打印出来,那个时候内心是绝望的,升级到1.9.7后就有了,但也不推荐大家盲目的升级,升级之后总有一些奇奇怪怪的bug,比如最近onload的问题

    我还在一边踩坑一边分享,所以这个文章会一直更新


    转载于:https://juejin.im/post/5cdcbb8f5188256001481114

    展开全文
  • uni-app 第一讲登录功能实现

    万次阅读 热门讨论 2018-10-29 11:42:04
    最近看了一下HBuilderX(一款支持HTML5的Web开发IDE),简单来说就是支持一套代码可以跑android、ios和微信小程序的编写工具。看了一下他官网的案例,整体来说还算不错。就是官方文档比较简陋。很多坑需要自己一步一步...

    最近看了一下HBuilderX(一款支持HTML5Web开发IDE),简单来说就是支持一套代码可以跑android、ios和微信小程序的编写工具。看了一下他官网的案例,整体来说还算不错。就是官方文档比较简陋。很多坑需要自己一步一步填。网上唯一一个视频教程还是在腾讯课堂(88元),大致看了一下他的目录,但是我没有买。

    HBuilderX官网(需要工具的可以去官网下载):http://www.dcloud.io/hbuilderx.html

    腾讯课堂视频教程地址(有需要的可以去买,我反正没买):https://ke.qq.com/course/323825?tuin=4f8da6

    注意前方高能!!!!!!!!!

    登录页面

     

    由此可以看到我们可以看到可以正常访问数据接口,拿到返回数据

    总结一下,这个实例只要运用了一下几个知识点(消息提示,数据访问,解析数据,存储本地,事件绑定,跳转页面,onload事件)

    登录事件绑定

    <button type="primary" @tap="btn">登录</button>

    事件处理

    btn() {
    				if (this.username.length <= 0) {
    					uni.showToast({
    						icon: 'none',
    						title: '请输入用户名'
    					});
    					return;
    				}
    				if (this.pwd.length <= 0) {
    					uni.showToast({
    						icon: 'none',
    						title: '请输入密码'
    					});
    					return;
    				}

    网络请求

    uni.request({
    					url: 'http://192.168.100.55:54723/ZycfService/login/login', //仅为示例,并非真实接口地址。
    					data: {
    						username: this.username,
    						pass: this.pwd
    					},success: (res) => {
    						
    						let list=JSON.stringify(res.data);
    						console.log("返回数据状态:" + list);
    						if(list=="[]"){
    							uni.showToast({
    								icon: 'none',
    								title: '用户名或密码错误'
    							});
    							return;
    						}
    
                            uni.showToast({
    							icon: 'none',
    							title: '登录成功'
    						});
                    },fail: () => {
    						uni.showToast({
    							icon: 'none',
    							title: '网络异常,请稍后重试'
    						});
    					}

    解析数据,存储本地

                            let list=JSON.stringify(res.data);
    						console.log("返回数据状态:" + list);
    						if(list=="[]"){
    							uni.showToast({
    								icon: 'none',
    								title: '用户名或密码错误'
    							});
    							return;
    						}
    						const data=res.data;
    						self.lists=data;
    						// console.log("返回数据状态:" + JSON.stringify(res));
    						
    						console.log("返回数据状态:" + self.lists[0]['rolename']);
    						
    						uni.setStorage({
    							key:'userinfo',
    							data:{
    								bh:self.lists[0]['bh'],
    								rolename:self.lists[0]['rolename'],
    								username:self.lists[0]['username']
    								
    							}
    						})

    跳转页面

    uni.navigateTo({
    							url: '../home/home',
    						});

    首页取出数据

    onLoad() {
    			//首先将实例指针保存到全局变量 self 方便在异步请求中访问实例本身
    			self = this;
    			uni.getStorage({
    				key: 'userinfo',
    				success: function(res) {
    					const listdata = res.data;
    					self.list = listdata;
    					console.log("数据是:" + self.list.username)
    				}
    			});

    以上就是登录实例的所有实现点,下面附上demo下载地址不包括后台接口

    Demo下载地址

     

    展开全文
  • uni-app app使用

    2020-11-20 17:22:57
    调用第三方微信登录 ... uni.getProvider({ service: 'oauth', success(res) { if (~res.provider.indexOf('weixin')) { uni.login({ provider: 'weixin', success(res) { uni.getUserInfo({ ...
  • uni-app easycom 组件引入报错

    千次阅读 2020-03-31 11:06:15
    uni-app easycom 模式 组件 引入 前言 (报错的问题 请往下看) : easycom官网描述 含义: 原本 vue 引入组件 需要多部操作,全局引入、单文件引入、在文件中注册等等等 非常麻烦。 uni-app 推出了easycom 引入组件...
  • uni-app 介绍 uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。 开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS、Android、微信小程序等多个平台,保证其正确运行并达到优秀体验。 uni-app 继承自 Vue.js...
  • 领导新需求,使用uni-app 如果在线更新app版本 虽然官方有例子,但是导入官方例子却不行。如何在app 内部更新。鼓捣了挺长时间,最后解决了问题。问题挺多我就一一列出来并附上代码。 1.完成思路 数据库存好版本号...
  • uni-app入门教程

    2020-06-09 16:38:10
    为什么使用uni-app? 因为是它目前最火的,一端代码,多端运行框架,并且使用Hbuilder进行开发,比其他的框架更加顺畅,对,开发就是需要顺畅,就这一点其他框架都比不了,用过的人都说好(手动比大拇指 ????) 开始 这是...
  • uni-app 获取地址位置

    万次阅读 2018-08-20 15:39:35
    uni.getLocation(OBJECT) 获取当前的地理位置、速度。 在微信小程序中,当用户离开应用后,此接口无法调用;当用户点击“显示在聊天顶部”时,此接口可继续调用。 OBJECT 参数说明 参数名 类型 必填 ...
  • uni-app 页面跳转

    万次阅读 多人点赞 2018-08-20 15:25:56
    今天看Dcloud官网更新了个uni-app,据说一套代码三端发布(Android,iOS,微信小程序),果断一试。 uni.navigateTo(OBJECT) 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。 ...
  • uni-app 提示框

    万次阅读 2018-08-20 15:44:58
    uni.showToast(OBJECT) 显示消息提示框。 OBJECT参数说明 参数 类型 必填 说明 title String 是 提示的内容,长度与 icon 取值有关。 icon String 否 图标,有效值 "success", ...
  • uni-app-在开启小程序在微信开发工具打开时,打开失败,解决方法:手动打开出现的错误如下https://developers.weixin.qq.com/miniprogram/dev/devtools/cli.html. 这里的方法说实话没看太明白 感觉无从下手 这里...
  • uni-app 开发微信公众号(H5)JSSDK 的使用方式

    万次阅读 热门讨论 2019-04-30 15:31:42
    因为这个jssdk被uni-app坑了好多天,作者说支持1.4版本,但是我用1.4的两个分享的新方法一直不支持。 最后只能放弃了,期待什么时候能更新上。 基本的使用方法: 第一步 - 下载使用方式 下载地址:...
  • https://uniapp.dcloud.io/
  • flutter、rn、uni-app比较

    万次阅读 多人点赞 2019-08-28 16:30:46
    转自:DCloud社区 uni-app频道的文章Flutter、RN、uni-app比较 前言 每当我们评估新技术时要问的第一个问题就是“它会给我们的业务和客户带来哪些价值?”,工程师们很容易对闪闪发光的新事物着迷,却经常会忽略...
  • 最近项目使用uni-app实现微信支付,把过程简单记录下,帮助那些刚刚基础uni-app,苦于文档的同学们。 整体来说实现过程和非uni-app的实现方式没有太大不同,难点就在于uni-app对于orderInfo的格式没有说明。 准备...

空空如也

1 2 3 4 5 ... 20
收藏数 26,001
精华内容 10,400
关键字:

uni-app