关于uniapp:uniapp封装公共请求typescript版

第一步:新建文件夹services 第二步:新建文件request.ts //服务器接口地址 const baseURL:string='http://xxxxxx' //本地调试接口地址// const baseURL:string='http://xxxxxx'// 封装公共申请办法function request(url:string, method: "GET" | "POST" | undefined,data: object | any){ return new Promise(function(resolve, reject){ let header:any if(uni.getStorageSync('token') !== undefined && uni.getStorageSync('token') !== ""){ header = { 'content-type': 'application/json', 'X-Auth-Token': uni.getStorageSync('token') }; }else { header = { 'content-type': 'application/json', }; } uni.request({ url: baseURL + url, method: method, data: data, header: header, success(res:any) { console.log(res) uni.hideLoading() if (res.data.code === "200" || res.data.ok) { resolve(res.data); } else { //其余异样 uni.showToast({ title:res.data.msg, icon:'none' }) reject(res.data); } }, fail(err) { uni.hideLoading() //申请失败 uni.showToast({ title:'无奈连贯到服务器', icon:'none' }) reject(err) } }) }) }export {request,baseURL}第三步:新建同级文件api.ts ...

June 2, 2021 · 1 min · jiezi

关于uni-app:uniapp开发工具

uni-app开发应用到的工具栈 1、路由uni-simple-router路由守卫 npm install uni-simple-router --save-dev链接:https://hhyang.cn/v2/ 2、vuex npm install vuex --save-dev链接:https://vuex.vuejs.org/zh/guide/ 3、基于Promise开发的uni-app跨平台申请库 luch-request npm install luch-request --save-dev链接:https://www.quanzhan.co/luch-...

May 31, 2021 · 1 min · jiezi

关于uni-app:uniapp的安卓平台App本地离线打包流程

建设我的项目下载 HBuilderX,登录 dclould账号(必须)新建我的项目本地打包 打包后的文件 回到 上两层目录 待会须要复制整个 \_\_UNI\_\_354F6F0 目录 生成离线打包 Key具体方法: https://ask.dcloud.net.cn/art... 生成证书装置 JDK后输出以下命令 命令格局: keytool -genkey -alias 证书别名 -keyalg RSA -keysize 2048 -validity 证书的有效期 -keystore 证书文件名 留神: 输出上述命令后的第一个输出时明码,这个明码是证书的明码,必须记录,假如这里的明码是"leonardpwd"再输出一连串信息后他会问你是否正确,此时须要手动输出 "是"keytool -genkey -alias leonard-app -keyalg RSA -keysize 2048 -validity 36500 -keystore leonard-app.keystore查看证书keytool -list -v -keystore leonard-app.keystoreEnter keystore password: //输出明码,我的是下面设置的"leonardpwd",回车显示的信息相似下方文本,其中 证书指纹 的 SHA1 待会须要应用 输出密钥库口令:密钥库类型: PKCS12密钥库提供方: SUN您的密钥库蕴含 1 个条目别名: leonard-app创立日期: 2021年5月31日条目类型: PrivateKeyEntry证书链长度: 1证书[1]:所有者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown发布者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown序列号: a2ac5fd0886b0130失效工夫: Mon May 31 10:51:26 CST 2021, 生效工夫: Wed May 07 10:51:26 CST 2121证书指纹: SHA1: 99:23:00:18:40:20:D1:F3:41:D5:70:6D:38:94:56:58:68:C3:1E:33 SHA256: 8F:17:A9:63:3A:34:26:15:1C:6F:B8:30:D7:A4:59:42:99:F8:04:60:86:84:4C:83:B3:1E:C4:2E:F3:AA:EB:07签名算法名称: SHA256withRSA主体公共密钥算法: 2048 位 RSA 密钥版本: 3扩大:#1: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 88 41 F4 2F A9 C5 F4 68 86 D7 6E E9 D5 3D A9 F1 .A./...h..n..=..0010: A2 DF 3B 89 ..;.]]设置 Key关上 DCloud 开发者核心,并点击咱们的我的项目 ...

May 31, 2021 · 2 min · jiezi

关于uni-app:uniappunicloud诗歌起名小程序开发到上线

起名小程序 github地址 https://github.com/calvin008/...这是款uni-app + unicloud上线的起名小程序(诗歌起名) 1通过古诗词匹配生成姓名1.1创立我的项目1.2uni-app前端配置组件抉择 单选框 radio 输入框 input 按钮 button <view class="content"> <view class="radio-list"> <radio-group class="radio-group" @change="radioChange"> <label class="radio" v-for="(item, index) in array" :key="index"> <view style="display: flex; flex-wrap: nowrap;"> <radio :value="item" color="#000000" :checked="index === current" /> <view>{{ item }}</view> </view> </label> </radio-group> </view> <view class="form-item"> <image class="img" src="../../static/icon_search.png"></image> <input confirm-type="search" v-model="userName" focus placeholder="输出姓氏" /> <button class="button" type="primary" size="mini" @click="subName">起名</button> </view> <view class="name-list"> <view class="name-container" v-for="item in nameList" :key="item._id"> <view class="name-info"> {{userName}}{{item.name}} </view> <view class="sentence">[{{item.sentence}}]</view> <view class="name-other"> <view>{{item.book}} ● {{item.title}}</view> <view>[{{item.dynasty}}] {{item.author}}</view> </view> </view> </view>插入数据 ...

May 15, 2021 · 4 min · jiezi

关于uniapp:uniapp返回上一级页面前先判断是否需要弹出提示弹出提示后用户点击确定返回上一级页面点击取消就阻止返回

一、h5、app用同一个办法,小程序要用另外的(因为小程序用onBackPress监听不了)。二、h5、app(此办法写在methods里): onBackPress(options) { //h5、app拦挡返回 if (this.show) {//this.show为true才弹出提醒 uni.showModal({ title: '提醒', content: '答案未保留,确定退出吗', success: function(res) { if (res.confirm) { uni.reLaunch({ url: "/pages/index/index"//返回上一级页面 }) } else if (res.cancel) {} } }); return true } },三、小程序(computed跟methods同级,此办法写在methods下面): computed:{ hasReplyC(){//小程序拦挡返回 // #ifdef MP-WEIXIN if(!this.show){ wx.disableAlertBeforeUnload()//this.show为false则不须要弹出 }else{ wx.enableAlertBeforeUnload({//提醒 message: "答案未保留,确定退出吗", success: function(res) { }, fail: function(errMsg) { }, }) } // #endif } },

May 14, 2021 · 1 min · jiezi

关于uni-app:uniapp-video标签打包H5Android上支持播放m3u8-hls直播流

默认uni-app打包进去的H5在Android上是没法播放.m3u8直播流的,控制台或报错 Uncaught (in promise) DOMException: The element has no supported sources.能够用hls.js来解决,在App.vue的onLaunch办法中减少加下列代码即可: // 上面的代码减少对Android H5播放m3u8反对// #ifdef H5if (uni.getSystemInfoSync().platform != 'ios') { var script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/hls.js@latest"; script.onload = function() { let init = function(video) { if (!video.getAttribute('hls-inited')) { let hls = null; let load = function() { let src = video.src; if (!src || src.indexOf('.m3u8') < 0) return if (!hls) { hls = new Hls(); hls.attachMedia(video); } hls.loadSource(src); } video.addEventListener("error", function() { load(); }, false); video.addEventListener("DOMNodeRemovedFromDocument",function(){ if(hls){ hls.destroy() } }, false); video.setAttribute('hls-inited', 'ok'); } } document.getElementsByTagName("video").forEach(init) document.body.addEventListener("DOMNodeInserted", function(e) { let ele = e.relatedNode; if (ele.tagName === 'VIDEO') { init(ele); } ele.getElementsByTagName("video").forEach(init) }) } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(script, s);}// #endif

May 10, 2021 · 1 min · jiezi

关于uniapp:uniApp-tabbar-可自定义也可原生

最近在学习uniApp,对于tabbar的学习,记录一下。 uniApp原生的 tabbar 设置 在 pages.json 文件中,留神 static 文件下图片门路 "tabBar": { "color": "#7A7E83", "selectedColor": "#3cc51f", "borderStyle": "black", "backgroundColor": "#ffffff", "list": [{ "pagePath": "pages/index/index", "iconPath": "static/images/tabbar2/basics.png", "selectedIconPath": "static/images/tabbar2/basics_cur.png", "text": "首页" },{ "pagePath": "pages/fangke/fangke", "iconPath": "static/images/tabbar2/plugin.png", "selectedIconPath": "static/images/tabbar2/plugin_cur.png", "text": "访客" }, { "pagePath": "pages/my/my", "iconPath": "static/images/tabbar2/about.png", "selectedIconPath": "static/images/tabbar2/about_cur.png", "text": "我的" }] }自定义的tabbar,用的colorUI的tabbar组件下载源码解压,复制根目录的 /colorui 文件夹到你的根目录传送门 colorUI-uniAPP传送门 colorUI原理是一个主页面引入多个页面,在主页面进行切换显示。这样能够解决切换时闪动的问题。main.js全局引入componentsimport basics from './pages/basics/home.vue'Vue.component('basics',basics)import components from './pages/component/home.vue'Vue.component('components',components)import plugin from './pages/plugin/home.vue'Vue.component('plugin',plugin)在主页面index.vue文件中, <basics v-if="PageCur=='basics'"></basics><components v-if="PageCur=='component'"></components><plugin v-if="PageCur=='plugin'"></plugin><view class="cu-bar tabbar bg-white shadow foot"> <view class="action" @click="NavChange" data-cur="basics"> <view class='cuIcon-cu-image'> <image :src="'/static/tabbar/basics' + [PageCur=='basics'?'_cur':''] + '.png'"></image> </view> <view :class="PageCur=='basics'?'text-green':'text-gray'">元素</view> </view> <view class="action" @click="NavChange" data-cur="component"> <view class='cuIcon-cu-image'> <image :src="'/static/tabbar/component' + [PageCur == 'component'?'_cur':''] + '.png'"></image> </view> <view :class="PageCur=='component'?'text-green':'text-gray'">组件</view> </view> <view class="action" @click="NavChange" data-cur="plugin"> <view class='cuIcon-cu-image'> <image :src="'/static/tabbar/plugin' + [PageCur == 'plugin'?'_cur':''] + '.png'"></image> </view> <view :class="PageCur=='plugin'?'text-green':'text-gray'">扩大</view> </view></view>在APP.vue记得引入colorUI的css ...

May 8, 2021 · 1 min · jiezi

关于uni-app:uniapp-选择图片上传到服务器云储存

1、抉择图片到node服务器uni-app代码 uni.chooseImage({ success: (res) => { let tempFilePaths = res.tempFilePaths; tempFilePaths.forEach((item) => { uni.uploadFile({ url: '', //服务器地址 fileType: "image", //ZFB必填,不然报错 filePath: item, //这个就是咱们下面拍照返回或者先中照片返回的数组 name: 'file', success: (uploadFileRes) => { } }); }) }});node服务代码 const path = require("path"); //导入path模块const multer = require("multer"); //导入multer模块const fs = require("fs"); //导入文件操作模块const util = require("../public/util");const upload = multer({ dest: "tmp/" });let express = require("express");let router = express.Router();router.post("/upload", upload.single("file"), function (req, res) { let imgFile = req.file; //获取图片上传的资源 var tmp = imgFile.path; //获取长期资源 let ext = path.extname(imgFile.originalname); //利用path模块获取 用户上传图片的 后缀名 let newName =util.getNowFormatDate('-','-')+ "-"+new Date().getTime() + Math.round(Math.random() * 10000) + ext; //给用户上传的图片重新命名 避免重名 let newPath = "/public/images/" + newName; //给图片设置寄存目录  提前给以后文件夹下建设一个   images文件夹  !!!! let fileData = fs.readFileSync(tmp); //将上传到服务器上的长期资源 读取到 一个变量外面 let filePath = path.join(__dirname, '..'+newPath); fs.writeFileSync(filePath, fileData); //从新书写图片文件  写入到指定的文件夹下 res.send(newPath); //上传胜利之后  给客户端响应});router.get('/public/images/*', function (req, res) { let newPath = ".."+req.url; let filePath = path.join(__dirname,newPath); res.sendFile(filePath);})module.exports = router;2、抉择图片到云贮存uni.chooseImage({ success: (res) => { let tempFilePaths = res.tempFilePaths; tempFilePaths.forEach((item) => { uniCloud.uploadFile({ filePath: item, cloudPath: 'item.jpg', success(res) { }, fail(res) { }, complete() {} }); }) }});

April 2, 2021 · 1 min · jiezi

关于uni-app:如何在Uniapp中访问CabloyJS后端API管理系统

介绍CabloyJS是一款收费开源的NodeJS全栈开发框架,采纳前后端拆散设计,具备开箱即用的后盾管理系统 Cabloy-SDK是专门为Uniapp利用量身定制的前端SDK,用于便捷的拜访CabloyJS提供的所有API接口,让Uniapp前端开发再无后顾之忧 个性各个平台的小程序后端API零碎,最简单的就是账号体系对接。CabloyJS提供了一个模块化的生态,须要开发什么平台下的小程序利用,只需装置相应的模块即可 目前Cabloy-SDK反对以下平台小程序的开箱即用: 微信小程序企业微信小程序钉钉小程序如何应用 - 前端1. 导入插件进入Uniapp插件页面,点击按钮应用HBuilderX导入插件,将Cabloy-SDK插件导入Uniapp我的项目中 强烈建议下载示例我的项目查看插件的根本用法2. 批改main.js在main.js文件中增加如下代码: import Vue from 'vue'import App from './App'import Cabloy from './js_sdk/cabloy-sdk/main.js'// 初始化cabloyconst cabloyOptions = { base: { scene: 'default', locale: 'en-us', }, api: { baseURL: 'https://yourdomain.com', },}Vue.prototype.$cabloy = Cabloy(Vue, cabloyOptions)// 登录Vue.prototype.$cabloy.util.login().then(res => { // 因为 login 是网络申请,可能会在 Page.onLoad 之后才返回 // 所以此处退出 callback 以避免这种状况 if (Vue.prototype.$cabloy.__loginReadyCallback) { Vue.prototype.$cabloy.__loginReadyCallback(res); }}).catch(err => { console.log(err)})Vue.config.productionTip = falseApp.mpType = 'app'const app = new Vue({ ...App})app.$mount()首先要初始化一个cabloy实例,并保留至Vue.prototype.$cabloy,便于在所有Vue组件中援用其次调用cabloy.util.login进行登录cabloyOptions名称阐明base.scene小程序场景名,默认为defaultbase.locale前端默认应用的语言api.baseURL后端服务的API地址base.scene:CabloyJS后端能够反对创立多个小程序,前端通过此参数设置要对接的小程序场景名,默认为default3. API清单插件Cabloy-SDK次要提供了以下API组件 ...

January 24, 2021 · 1 min · jiezi

关于uni-app:开发日记01-uniapp-使用等宽字体对齐数字宽度

uni-app 应用等宽字体对齐数字宽度0️ 问题 ❓开发的过程中遇到数字显示列表,发现同样的数字数宽度不一。android 不会有, web 浏览器和 ios 会呈现。 之前也有遇到过,也解决了,写过文章记录 在网站中应用谷歌“ROBOTO”字体(解决 ios 数字 1 和 0 大小不等宽问题),不过文章没有明确的代码,也比拟潦草,这次加上代码。 本次解决方案不仅仅实用于 uni-app,包含 nvue, 还有一般的 vue react 我的项目都能用。晓得原理了,移植解决方案很简略。 起因:默认或者应用了非等宽字体,安卓默认的字体 Roboto 就是等宽的,啥叫非等宽,就是字体的宽度不一样,比方 1 和 2 在显示的时候所占用的宽度不一样。(中文字体默认就是等宽的) <img src="https://image.yoouu.cn/2021/dev-diary01/img1.jpg" style="zoom: 50%;" /> 解决后: 看起来难受了很多 ???? <img src="https://image.yoouu.cn/2021/dev-diary01/img2.jpg" style="zoom: 50%;" /> 1️ 下载须要的字体链接:https://www.fontsquirrel.com/fonts/roboto 抉择 Webfont KitChoose a Subset 默认就行Choose Font Formats 默认的 WOFF就行点击 Download @font-face Kit关上压缩包应用 roboto_regular_macroman/Roboto-Regular-webfont.woff2️ 在 uni-app 中应用本次测试了 app,h5 端,其余端未测试,实践通用。 将下载的 Roboto-Regular-webfont.woff 放在 我的项目的 static/fonts/Roboto-Regular-webfont.woff ...

January 6, 2021 · 2 min · jiezi

关于uni-app:uniappuView结合input使用icon点击icon不生效

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用uni-app+uView开发的应用,咱们常常会联合input应用icon,上面我来分享遇到的问题和解决办法,心愿对你有所帮忙。4.废话不多说,间接上效果图: 你在点击扫码图标的时候可能不会触发对应的事件5.造成问题的起因,在这里我应用绝对定位把图标放到了这个地位,同时给这个图标的父元素配置了position: relative;然而这样就会造成图标元素的层级问题,如何解决呢?办法如下: //给这个 图标晋升层级(使点击的时候,能点到这个元素).chen-icon { position: absolute; margin-left: 2%; z-index: 1;//要害代码}6.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰!

January 5, 2021 · 1 min · jiezi

关于uni-app:uniscanCode无法重新赋值

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用uni-app+uView开发的过程中,咱们在应用 uni.scanCode进行扫码的时候无奈进行从新赋值,上面我来分享一下解决办法,心愿对你有所帮忙。4.废话不多说,间接上代码: Equipmentcheck() { uni.scanCode({ success: function (res) { console.log("条码内容:" + res.result); this.chenwen=res.result; uni.showToast({ title: "扫码胜利", });},fail: function (err) { console.log("扫码失败", err); }, });},5.在return 中增加如下代码: chenwen:""6.你会发现在手机上本页面,扫码进去的数据,无奈赋值给标签,造成这个问题的起因是 this 指向产生了变动,解决办法如下。7.针对上述呈现的问题,解决办法如下: //办法一:Equipmentcheck() { const _this=this; uni.scanCode({ success: function (res) { console.log("条码内容:" + res.result); _this.chenwen=res.result; uni.showToast({ title: "扫码胜利", });},fail: function (err) { console.log("扫码失败", err); }, });},//办法二: 应用箭头函数Equipmentcheck() { uni.scanCode({ success: res=> { console.log("条码内容:" + res.result); this.chenwen=res.result; uni.showToast({ title: "扫码胜利", });},fail: function (err) { console.log("扫码失败", err); }, });},8.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰! ...

January 4, 2021 · 1 min · jiezi

关于uni-app:uniappuView优雅的使用flex

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用uni-app+uView开发的过程中,咱们常常会应用到flex进行布局,上面我来分享一下如何优雅的应用。4.废话不多说,间接上代码: <u-row gutter="16" justify="space-between"> <u-col span="3"> <view></view> </u-col> <u-col span="9"> <view></view> </u-col></u-row> //在这里咱们间接能够应用 u-row,而后增加 justify 属性,依据需要进行不同的配置,这样咱们就不必再写一个 view 而后再设置款式5.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰!

December 30, 2020 · 1 min · jiezi

关于uni-app:uniapp新增步骤条不知道有多少步骤

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用 uni-app+uView开发的过程中,咱们常常在新增的时候新增步骤,然而不晓得有多少步骤,因而不能写死,上面我来分享一下我的办法,心愿对你有所帮忙。4.废话不所说,间接上代码,在 return 中增加如下代码: projectstepsObj:{ num:"0", chenarr:[], con:"", }, chenarrObj:{ num:0, id:"", con:"" }5.在新增事件中增加如下代码: chenfonts(){ this.projectstepsObj.num+=1; this.chenarrObj.num=this.projectstepsObj.num; this.chenarrObj.id=this.projectstepsObj.num; this.chenarrObj.con=""; this.projectstepsObj.chenarr.push(this.chenarrObj); // console.log(this.projectstepsObj.chenarr); }6.在template中增加如下代码: <u-form-item v-for="(item,index) in projectstepsObj.chenarr" :key="index" :label="'我的项目第'+`${index+1}`+'步'"> <u-input v-model="item[index]" /> </u-form-item>7.在提交办法中增加如下代码: chensubmit() { console.log("++++++"); console.log(this.chenarrObj); console.log("--------");}8.成果如下:9.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰!

December 29, 2020 · 1 min · jiezi

关于uni-app:vfor循环动态绑定vmodel

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用 uni-app开发的过程中,咱们会遇到vue在循环的时候须要动静绑定不同的v-model,上面我来分享一下办法,对你有所帮忙。4.废话不多说,间接上代码: <u-form-itemv-for="(item,index) in projectstepsObj.chenarr" :key="index" :label="'我的项目第'+`${index+1}`+'步'"> <u-input v-model="item[index]" /></u-form-item>5.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

December 29, 2020 · 1 min · jiezi

关于uni-app:uniapp调用手机摄像头进行扫码

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用 uni-app+uView开发的过程中,咱们常常会应用到手机进行扫码,上面我来分享一下应用uni-app如何进行手机扫码,心愿对你有所帮忙。4.在 template中增加如下代码: <view class="chen-orders chenshebei" @click="Equipmentcheck"> <u-icon name="scan" color="#2979ff" size="108"></u-icon> <text>设施点检</text> </view>5.在 methods中增加如下代码: Equipmentcheck() { uni.scanCode({ success: function (res) { //胜利之后的回调 console.log('条码内容:' + res.result); // res.result 二维码的内容 uni.showToast({ title: res.result, }); }, fail: function (err) { //失败之后的回调 console.log("扫码失败", err); }, }); },6.本期的剖析到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

December 23, 2020 · 1 min · jiezi

关于uni-app:uView中吸顶使用

1.开发环境uni-app+uView2.电脑系统 windows10专业版3.在应用 uni-app+uView开发的过程中,咱们常常会应用到各种性能,上面我来分享一下,uni-app+uView中如何应用吸顶和遇到的问题!心愿对你有所帮忙!4.在template中增加如下代码: <!-- 吸顶内容 --> <view id="chenceiling"> <u-sticky offset-top="0"> <!-- 搜寻性能 --> <view class="chen-search"> <u-search placeholder="请输出客户名称/联系电话/公司名称" :clearabled="true" @custom="chensearch" v-model="keyword" ></u-search> </view> <!-- 搜寻性能 完结啦 --> <!-- 新增 --> <view class="chen-add" @click="chenadd"> <u-icon name="plus-circle"></u-icon> </view> <!-- 新增 完结啦 --> </u-sticky> </view> <!-- 吸顶内容 完结啦 --> //留神:这个 offset-top="0" 是间隔顶部的间隔,也是间隔顶部多少间隔的时候开始吸顶5.如何自定义吸顶模板的色彩呢,在css中增加如下代码: #chenceiling { //u-sticky-wrap u6zTsRZKbLyLFJ0S5VVMfiXblSXCLc2F /deep/ .u-sticky-wrap { background: blue; /deep/ .u-sticky { background: blue; } } } //留神:我在这里应用的是 scss 语法,看到这里的小伙伴都是会 scss 语法的,如果还不会 scss 语法的小伙伴倡议去学习一下!6.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰! ...

December 18, 2020 · 1 min · jiezi

关于uni-app:uniapp中scss的简单使用

1.开发环境 uni-aapp+scss2.电脑系统 windows10专业版3.在试验uni-app开发的过程中,咱们可能会应用到scss,上面我来分享一下scss简略的应用,心愿对你有所帮忙!4.如果你的我的项目中有几处小小的款式相似(例如统一的色彩和字体),那么应用变量来对立解决这种状况是十分不错的抉择。然而当你的款式变得越来越简单,你须要大段大段的重用款式的代码,独立的变量就没方法应酬这种状况了。你能够通过sass的混合器实现大段款式的重用。混合器应用@mixin标识符定义,下边的这段sass代码,定义了一个混合器,目标是应用flex布局。 在 uni.scss中增加如下代码:@mixin chenflex { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;}5.在应用的模板中增加如下代码: .title-wrap{ width: 100%; height: 100rpx; background-color: #ccc; padding: 10rpx; box-sizing: border-box; @include chenflex; //应用办法 }6.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!!!

December 16, 2020 · 1 min · jiezi

关于uni-app:UNIAPP-实践问题记录

UNI-APP 实际问题记录最近须要将一个原来vuejs 技术栈的 挪动端业务革新小程序,基于老本和工夫的思考,抉择了 uni-app ,一开始间接将旧代码迁入到新的工程里。在逐渐开发过程中,遇到了一些问题,整顿记录一下,当然这些问题可能只是在咱们我的项目特定场景、特定状况下呈现的,仅供参考,提供一个思路。 语法问题编译后,WXML提醒 bad attrs 在于template中写了个短路运算,v-if="false && item.count > 1" (之前次要是为了避免产品又要改回来,加了短路运算)。 解决方案:删除短路运算相干代码 v-show 判断问题v-show 在数据表达式条件成立后,体现后果谬误。 v-show="count > 0", 当count > 0的时候,v-show对应的el 仍旧没有显示进去。 解决方案: v-show 改为 v-if 自定义配置自定义构建配置咱们须要将小程序中用到的图片、字体构建到cdn 服务中,而不是打包在小程序代码中,所以须要批改构建工作流。 在官网文档中,反对 vue.config.js来配置一些 webpack 工作流。 对于图片、字体等默认是会对小于40KB进行base64。 因为vue-cli 中,字体、图片等用的是 url-loader,所以为了将图片、字体构建到cdn种,须要在 vue.config.js 中配置 url-loader, url-loader fallback 到 file-loader。 先看下残缺配置 // vue.config.js'use strict'const path = require('path')const isWin = /^win/.test(process.platform)const isProd = process.env.NODE_ENV === 'production'const normalizePath = (path) => (isWin ? path.replace(/\\/g, '/') : path)const extConfig = require('./src/ext.json')function resolve(dir) { return path.join(__dirname, dir)}// 配置H5 跨域const devServer = { target: 'your.domain.com', // 重要 changeOrigin: true, pathRewrite: { '^/': '' }, // 重要 secure: false, prependPath: true, onProxyReq: function (proxyReq, req, res) { },}module.exports = { // 门路别名 chainWebpack: (config) => { /* .resolve.alias .set('@', resolve('src')) .set('@p', resolve('src/pages')) .set('@c', resolve('src/components')) .set('@a', resolve('src/assets')) .set('@utils', resolve('src/utils')) .end() .extensions.add('.js') .add('.vue') .add('.scss') .end() .end() */ config.module .rule('vue') .test([/\.vue$/, /\.nvue$/]) .use('vue-loader') .tap((options) => Object.assign({}, options, { // 配置 小程序image标签的src 也进行资源门路转换 transformAssetUrls: { image: 'src', }, }), ) .end() if (isProd) { config.module .rule('images') //.test(/\.(png|jpe?g|gif|svg)(\?.*)?$/) .use('url-loader') .tap((args) => { const newArgs = Object.assign({}, args, { // 配置转换规则,-1 示意任何大小的资源都不进行base64转换 limit: -1, // 这里重要,publicPath 配置给url-loader 会不失效,必须配置到fallback里传递给file-loader fallback: { loader: 'file-loader', options: { publicPath(url, resourcePath, context) { return ( extConfig.ext.publicPath + normalizePath(path.relative(process.env.UNI_INPUT_DIR, resourcePath)) ) }, emitFile: false, }, }, }) return newArgs }) .end() .end() .rule('fonts') .use('url-loader') .tap((args) => { const newArgs = Object.assign({}, args, { limit: -1, fallback: { loader: 'file-loader', options: { publicPath(url, resourcePath, context) { return ( extConfig.ext.publicPath + normalizePath(path.relative(process.env.UNI_INPUT_DIR, resourcePath)) ) }, emitFile: false, }, }, }) return newArgs }) } }, devServer: { disableHostCheck: true, proxy: { '/api': devServer, }, },}另外,uni-app 中 门路别名默认 @ 指向 src目录,如果配置了其余自定义别名,比方下面配置中的 @c会导致编译的时候无奈正确辨认 @c 援用的资源。 ...

December 10, 2020 · 2 min · jiezi

关于uni-app:uniapp中子组件调用父组件的方法

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用uni-app+uView开发的过程中,咱们可能会须要在子组件中调用父组件的办法,上面我来做一个分享,心愿对你有所帮忙!4.在父组件中增加事件,在methods中增加代码如下: gochencheckedxq(){ console.log("我要去审核详情页"); uni.navigateTo({ url: "../../pages/entrustchenckxq/entrustchenckxq", }); }5.在父组件中应用子组件,在template中增加如下代码: <entruscheck v-on:Chencheckedxq="gochencheckedxq"></entruscheck>6.在子组件中,须要增加事件的元素上,增加如下代码: <u-button :ripple="true" ripple-bg-color="#909399" @tap="gochencheckedxq">详情</u-button>7.在子组件中增加 gochencheckedxq 事件,代码如下: gochencheckedxq(){ this.$emit("Chencheckedxq"); } //应用 this.$emit进行触发 父组件事件8.本期的分享到了这里完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

December 10, 2020 · 1 min · jiezi

关于uni-app:UNIAPP使用云开发跨全端开发实战讲解

UNI-APP 是一个应用 Vue.js 开发所有前端利用的框架,开发者编写一套代码,可公布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快利用等多个平台。 本文为大家解说如何采纳云开发官网JS-SDK,接入云开发后端服务并反对UNI-APP全副端(不止于微信小程序) JS-SDK和UNI-APP适配器1.JS-SDK和适配器云开发官网提供的@cloudbase/js-sdk,次要用来做惯例WEB、H5等利用(浏览器运行)的云开发资源调用,也是目前最为欠缺的客户端SDK。 目前市面上大部分的轻利用、小程序包含挪动利用APP都是采纳JS来作为开发语言的,所以咱们能够对TA进行轻微革新,就能够轻松应用在各种平台中。 然而独自革新SDK包会有些许危险,比方在原SDK包降级时须要从新结构,就造成了无穷无尽的麻烦,革新老本相当大。 官网的产品小哥哥深知这种不适和苦楚,所以在@cloudbase/js-sdk 中提供一套残缺的适配扩大计划,遵循此计划标准可开发对应平台的适配器,而后搭配 @cloudbase/js-sdk 和适配器实现平台的兼容性。 不理解的小伙伴必定会有些茫然,我来用通俗的语言解释一下,就是@cloudbase/js-sdk 将底层的网络申请以及相干根底需要以接口的模式裸露进去,咱们依照平台的非凡API来补充这些接口,sdk就能够依据这些补充的接口,无障碍的运行在平台中了。 如果咱们想在UNI-APP中应用@cloudbase/js-sdk ,底层网络申请你须要来补充,因为sdk本来是适应浏览器的,TA不晓得UNI-APP怎么对外发申请,所以你须要将uni.request 办法补充到TA裸露的接口中。补充结束后,@cloudbase/js-sdk 就能够在UNI-APP中活跃的运行了。 咱们将所有的uni办法全副补充到JS-SDK暴漏的接口中去,就造成了一个残缺的适配器,咱们将其成为uni-app适配器。 2.UNI-APP适配器UNI-APP的整体接口都是公开通明的,咱们在开发UNI-APP时也都遵循同一套接口标准。所以小编曾经将uni-app适配器制作结束,大家只须要在应用时接入适配器就能够了。 咱们在我的项目目录main.js中引入云开发JS-SDK,而后接入咱们的UNI-APP适配器即可。 import cloudbase from '@cloudbase/js-sdk'import adapter from 'uni-app/adapter.js'cloudbase.useAdapters(adapter);cloudbase.init({ env: '',//云开发环境ID appSign: '',//凭证形容 appSecret: { appAccessKeyId: 1,//凭证版本 appAccessKey: ''//凭证 }})挪动利用登录凭证云开发SDK在应用过程中,向云开发服务零碎发送的申请都会须要验证申请起源的合法性。 咱们惯例 Web 通过验证平安域名,而因为 UNI-APP 并没有域名的概念,所以须要借助平安利用凭证辨别申请起源是否非法。 登录云开发 CloudBase 控制台,在平安配置页面中的挪动利用平安起源一栏: 点击“增加利用”按钮,输出利用标识:uni-app(也能够输出其余有标志性的名称),须要留神利用标识必须是可能标记利用唯一性的信息,比方微信小程序的 appId 、挪动利用的包名等。 增加胜利后会创立一个平安利用的信息,如下图所示: 咱们须要保留一下上图中的版本(示例为1)、利用标识(示例为uni-app)、以及点击获取到的凭证(示例为demosecret) 在我的项目目录中,咱们将main.js中的init局部补全 import cloudbase from '@cloudbase/js-sdk'import adapter from 'uni-app/adapter.js'cloudbase.useAdapters(adapter);cloudbase.init({ env: 'envid',//云开发环境ID,保障与你操作登录凭证统一 appSign: 'uni-app',//凭证形容 appSecret: { appAccessKeyId: 1,//凭证版本 appAccessKey: 'demosecret'//凭证 }})如此,你就能够失常的进行云开发的登录应用了。 ...

December 9, 2020 · 2 min · jiezi

关于uni-app:uniappuView重置表单

1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在应用uni-app+uView开发的过程中,咱们在提交实现之后会进行表单的重置,上面我来分享一下,uni-app+uView表单重置的办法,心愿对你有所帮忙!4.在return中代码如下: chenwtdaddform: { wtdh: "", wtpeople: "", wtpeoplephone: "", wtypname: "", wtyptm: "", bt: "", content: "", addresscon: "", mode: "range", show: false, show2: false, chenvalue:0 },5.页面成果如下:6.我在提交的时候清空表单,在事件中增加如下代码: this.chenwtdaddform=this.$options.data().chenwtdaddform;//在点击提交的时候,把之前存在 data里的chenwtdaddform原始值拷贝一份,而后从新赋值给 chenwtdaddform7.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,在成长的到了上心愿你不要认输,不要抬头,不要放弃,加油,让咱们一起致力走向巅峰!

December 9, 2020 · 1 min · jiezi

关于uni-app:uniapp使用uninavigateTo进行页面传值

1.开发环境 uni-app+uview2.电脑系统 windows10专业版3.在应用uni-app+uview开发的过程中,咱们分享一下uni.navigateTo办法进行页面传值,心愿对你有所帮忙!若有不对的中央,请多多指教!4.废话不多说,间接上代码,在template中增加如下代码: <view class="chenwtdadd"> <u-form :model="chenwtdaddform" ref="chenwtdaddform" id="chenwtdaddform"> <u-form-item label="委托单号:" ><u-input v-model="chenwtdaddform.wtdh" /></u-form-item> <u-form-item label="委托人:" ><u-input v-model="chenwtdaddform.wtpeople" /></u-form-item> <u-form-item label="联系电话:" ><u-input v-model="chenwtdaddform.wtpeoplephone" /></u-form-item> <u-form-item label="样品名称:" ><u-input v-model="chenwtdaddform.wtypname" /></u-form-item> <u-form-item label="样品条码:" ><u-input v-model="chenwtdaddform.wtyptm" /></u-form-item> <u-form-item label="委托日期:"> <u-calendar v-model="chenwtdaddform.show" :mode="chenwtdaddform.mode" @change="change" ></u-calendar> <u-input v-model="chenwtdaddform.content" @click="chenformdate" /> </u-form-item> <u-form-item label="委托地址:"> <u-select v-model="chenwtdaddform.show2" mode="mutil-column-auto" :list="list" @confirm="confirm" ></u-select> <u-input v-model="chenwtdaddform.addresscon" @click="chenformaddress" /> </u-form-item> <u-form-item label="备注:"> <u-input v-model="chenwtdaddform.bt" /> <!-- <textarea rows="20" /> --> </u-form-item> </u-form> <view class="chensubmit"> <u-button shape="square" :ripple="true" ripple-bg-color="#909399" @click="chensubmit" >提交</u-button > </view> </view>5.在return中增加如下代码: ...

December 9, 2020 · 2 min · jiezi

关于uni-app:uniappuview使用Calendar-日历

uni-app+uview应用Calendar 日历1.开发环境 uni-app+uview2.电脑系统 windows10专业版3.在应用uni-app+uview开发的过程中应用Calender日期组件遇到的坑,上面是我做的分享,心愿对你有帮忙!4.uni-app+uview应用Calendar 日历遇到的坑,款式错乱,成果如下: 遇到问题不要怕,没有什么解决不了的,要置信本人!我简略的分享一下我的办法,看看渲染的dom构造,看看css款式是否失效,心愿对你有多帮忙!这个错乱的成果是因为,日历组件的 弹性盒子的款式没有失效,所以到导致了页面错乱。5.解决办法,在css款式中增加如下代码: /deep/ .u-calendar__action{ display: flex; justify-content: space-between; align-items: center; }6.成果如下:7.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

December 7, 2020 · 1 min · jiezi

关于uni-app:uninavigateTo不能跳转的问题

碰到uni.navigateTo办法不能跳转,咱们先应用fail函数来找出错误信息 uni.navigateTo({ url:"saveUserProfile", fail: (res) => { console.log(res)//打印错误信息 } })提醒办法无奈找到页面,那可能是之前页面没有在配置文件定义该页面的门路,找到uniapp配置文件pages.json,退出配置门路: { "path" : "pages/my/saveUserProfile", "style" : { "navigationBarTitleText": "保留用户信息" } } 再次运行,胜利跳转。

December 4, 2020 · 1 min · jiezi

关于uni-app:uniapp打包后提示本应用使用HBuilderX-297或对应的cli版本编译解决方案

1.开发环境 uni-app2.电脑系统 windows10专业版3.在uni-app开发的过程中,咱们在我的项目实现之后,打包app运行到手机上之后,正告:uni-app打包后提醒,本利用应用HBuilderX 2.9.7或对应的cli版本编译,而手机端SDK版本是2.9.10。不匹配的版本可能造成利用异样。上面我来分享一下解决办法,心愿对你有所帮忙!4.uni-app打包app,运行到手机上,报错如下:5.解决办法如下: 能够在manifest.json文件的源码视图中配置疏忽这个揭示,形式如下:"app-plus": { "compatible": { "ignoreVersion": true //true示意疏忽版本查看提示框,HBuilderX1.9.0及以上版本反对 }, }, 以下办法可针对指定版本防止弹出提示框"app-plus": { "compatible": { "runtimeVersion": "1.7.0", //依据理论状况填写 "compilerVersion": "1.7.1" //依据理论状况填写 }, //.... }, 6.再次打包之后,就不会存在这个问题了,本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

November 23, 2020 · 1 min · jiezi

关于uni-app:uniapp使用uView

uni-app应用uView1.开发环境 uni-app+uView2.电脑系统 windows10专业版3.在咱们第一次应用uni-app+uView开发的过程中,咱们可能会遇到一些问题,上面我来分享一下在 uni-app应用uView,心愿对你有所帮忙。2.首先咱们来一下,uView官网文档3.首先下载 uView,地址为: [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593)4.下载实现之后,咱们会失去这样的一个目录,如下:5.在main.js中增加如下代码: import uView from "uview-ui";Vue.use(uView);6.在pages.json中增加如下代码: "easycom": { // 下载安装的形式须要后面的"@/",npm装置的形式无需"@/" // 下载安装形式 "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" // npm装置形式 // "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" },//留神:这个代码和 pages 是同级的关系6-1.应用 easycom的劣势: 7.在uni.scss中增加如下代码: @import "uview-ui/theme.scss";8.装置sass9.在.vue模板中应用,增加如下代码: <u-button type="success">胜利按钮</u-button>10.从新运行我的项目,成果如下:11.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

November 20, 2020 · 1 min · jiezi

关于uni-app:uniapp中h5端和小程序数据请求封装和传参

1.开发环境 uni-app2.电脑系统 windows10业余为版3.在应用uni-app开发的过程中,咱们须要数据申请,然而应用uni-app 框架自带的申请形式咱们须要写很多反复的代码,我进行了封装,心愿对你有所帮忙,为什么要封装h5端数据申请还要封装微信端的数据申请,上面会有所解释!4.封装前的数据申请办法: chengeth5(){ return new Promise((resolve,reject)=>{ uni.request({ url:'/api/feng', //申请接口 method:'post', //申请办法 data:this.ChenindexconOnj,//传递的参数 success:(res)=>{ // console.log(res);//输入申请到的数据 resolve(res); }, }) }) }, 5.对h5端数据申请封装,在 pages 目录下新建 h5hhtp 文件,在文件下新建一个 h5hhp.js,增加如下代码: function req(obj) { return new Promise((resolve, reject) => { // const HOST = baseUrl; const HOST = 'http://192.168.137.78:3000'; //申请后盾地址 var method = obj.method || "GET"; //申请形式,默认为GET var url = HOST + obj.url || ""; var url = obj.url || ""; var data = obj.data || {}; var header = obj.header || obj.method == ('post' || 'POST') ? { 'Content-Type': obj.contentType || 'application/x-www-form-urlencoded', } : { 'Content-Type': obj.contentType || 'application/json', }; var success = obj.success; // 胜利回调函数 var fail = obj.fail; //示意失败后,要执行的回调函数 uni.request({ url: url, data: data, method: method, header: header, success: ((res) => { if (res.statusCode === 203) { console.log('返回203状态码') // 错误处理,返回登录页 // uni.reLaunch({url:'/pages/login/index'}) } else if (res.statusCode === 200) { resolve(res) } }), fail: ((err) => { reject(err) }) }) })}export default req6.在http目录同级,新增 api 文件,在api目录下,新建一个 api.js,增加代码如下: ...

November 19, 2020 · 2 min · jiezi

关于uni-app:uniapp数据请求封装和api接口管理

uni-app数据申请封装和api接口治理1.开发环境 uni-app2.电脑系统 windows10专业版3.在应用uni-app开发的过程中,咱们常常会应用到数据申请,上面我我对uni-app数据申请的封装和接口治理,心愿对你有所帮忙!4.在pages同级新建一个目录,http(名字本人定义),在http目录下新建一个http.js文件,增加代码如下: function req(obj) { return new Promise((resolve, reject) => { // const HOST = baseUrl; var method = obj.method || "GET"; // var url = HOST + obj.url || ""; var url = obj.url || ""; var data = obj.data || {}; var header = obj.header || obj.method == ('post' || 'POST') ? { 'Content-Type': obj.contentType || 'application/x-www-form-urlencoded', } : { 'Content-Type': obj.contentType || 'application/json', }; var success = obj.success; // 胜利回调函数 var fail = obj.fail; //示意失败后,要执行的回调函数 uni.request({ url: url, data: data, method: method, header: header, success: ((res) => { if (res.statusCode === 203) { console.log('返回203状态码') // 错误处理,返回登录页 // uni.reLaunch({url:'/pages/login/index'}) } else if (res.statusCode === 200) { resolve(res) } }), fail: ((err) => { reject(err) }) }) })}export default req5.在http目录同级,新增一个api目录,在api目录上面新建一个api.js,增加如下代码: ...

November 18, 2020 · 1 min · jiezi

关于uni-app:uniapp项目中H5跨域小程序不跨域怎么解决方法兼容H5小程序

uni-app我的项目中H5跨域小程序不跨域怎么解决办法(兼容H5、小程序)1.开发环境 uni-app2.电脑系统 windows10专业版3.在应用uni-app开发的过程中,咱们在h5端会存在跨域的问题,在小程序中是没有跨域的,然而怎么同时兼容 h5和小程序呢?在这里我抉择应用 uni-app中的条件编译,上面我来分享一下具体方法,心愿对你有所帮忙!4.首先配置h5端跨域解决办法,在manifest.json 中增加如下如下代码: "h5": { "devServer": { "port" : 9008, //端口号 "disableHostCheck": true, "proxy": { "/api": { "target": "http://192.168.137.78:3000", //指标接口域名 "changeOrigin": true, //是否跨域 "secure": false, // 设置反对https协定的代理 "pathRewrite": { "^/api": "" //通过pathRewrite重写地址,将前缀/api转为/ } } } } }, //留神:增加的代码和 app-plus 是同级的关系!5.后盾接口地址为: http://192.168.137.78:3000/feng6.在 mounted 中增加如下代码: mounted() { // #ifdef H5 //在 h5端执行的代码 uni.request({ url:'/api/feng', 申请接口 method:'post', //申请办法 data:this.ChenindexconOnj, //传递的参数 success:(res)=>{ console.log(res); //输入 申请胜利的数据 }, }) // #endif // #ifdef MP-WEIXIN //在微信小城中执行的代码 this.chenget(); // #endif },7.在h5端成果为:8.在小程序端成果为:9.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰! ...

November 18, 2020 · 1 min · jiezi

关于uni-app:uniapp数据请求封装

uni-app数据申请封装1.开发环境 uni-app2.电脑系统 windows10专业版3.在应用uni-app开发的过程中,咱们会应用到数据申请,上面我来分享一下,uni-app数据申请封装,心愿对你有所帮忙!4.和pages同级新增一个目录,名字本人定义,在这里我的名字是 chenhttp在这个文件上面新建一个 chenhttp.js,代码如下: const BASE_URL='http://192.168.137.78:3000'; //后盾接口地址export const myRequest=(options)=>{ return new Promise((resolve,reject)=>{ uni.request({ url:BASE_URL+options.url, method:options.method || 'GET', //配置申请办法,默认为 get申请 data:options.data || {}, success:(res)=>{ if(res.data.statusCode ==0){ return uni.showToast({ title:'获取数据失败' }) } resolve(res) }, fail:(err)=>{ uni.showToast({ title:'申请接口失败' }) reject(err) } }) })}5.为了方便使用,咱们把这个办法挂载到全局,在main.js中增加如下代码: import {myRequest} from 'chenhttp/chenhttp.js';Vue.prototype.$myRequest=myRequest;6.在uni-app模板中应用,在methods中增加如下代码: async chenget(){ const res=await this.$myRequest({ url:'/feng', //申请的接口 method:'post', //申请办法 data:this.ChenindexconOnj //传递的参数 }) console.log(res); //输入申请的数据 }7.在mounted 进行调用,增加如下代码: this.chenget();8.成果如下:9.后盾承受的参数,成果为:10.本期的分享到了这里就完结啦,是不是很nice,心愿对你有所帮忙,让咱们一起致力走向巅峰!

November 18, 2020 · 1 min · jiezi

关于uni-app:uniapp页面传参非tabBar页面

uni-app页面传参(非tabBar页面)1.开发环境 uni-app2.电脑系统 windows10专业版3.应用 navigator 办法进行传参,在template中增加如下代码: <navigator :url="`../indexcon/indexcon?id=${title}`">去首页的详情页</navigator>//留神:在这里我应用了模板字符串的办法,这样能够使 title 作为一个变量,不然的话,会被辨认为一个字符串4.在 indexcon 页面中,在 onLoad中进行承受,代码如下: onLoad(options) { console.log(options); }, //应用 options 承受传递过去的参数5.成果如下:6.然而在开发的过程中,咱们必定不会只传一个参数,咱们个别会传多个参数,在这里我抉择的是,应用对象的办法!7.在template 中批改代码为: <navigator :url="`../indexcon/indexcon?id=${ChenindexconOnj}`">去首页的详情页</navigator>8.在return中增加如下代码: ChenindexconOnj:{ 'id':'100', 'name':'chen', 'sex':'男', 'age':'23', },9.在 indexcon 输入承受到的对象,成果如下: 依据输入这个后果,咱们能够得出结论,这个办法能够辨认字符串,解决办法如下10.在 onLoad中增加如下代码: onLoad() { this.ChenindexconOnj=JSON.stringify(this.ChenindexconOnj); }, // JSON.stringify(this.ChenindexconOnj) //作用:把这个变量转换为字符串11.再次测试,成果如下:12.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰!

November 18, 2020 · 1 min · jiezi

关于uni-app:uniapp使用icon

1.开发环境 uni-app2.电脑系统 windows10专业版3.在应用 uni-app开发的过程中,咱们总是会应用到icon,上面我来分享一下在uni-app开发应用icon,心愿对你有所帮忙!4.在这里我抉择的字体库是阿里巴巴矢量库,登录,把图标下载下来5.下载完了之后关上文件,除了iconfont.css其余文件一律删除6.回到本人的iconfont我的项目,抉择unicode点击生成代码7.生成结束之后点击复制代码8.回到iconfont.css并且关上css文件,留神红框内容,全副删除,替换成第五步刚刚复制过去的9.替换结束之后,须要在//at后面加上https:10.在页面中应用iconfont,代码如下: <template> <view class="content"> <text class="iconfont iconche-copy"></text> </view></template><script> export default { data() { return { title: 'Hello' } }, onLoad() { }, methods: { } }</script><style>/抉择iconfont.css所在的门路/ @import '../../static/icon/iconfont.css'; .content { display: flex; flex-direction: column; align-items: center; justify-content: center; } .logo { height: 200rpx; width: 200rpx; margin-top: 200rpx; margin-left: auto; margin-right: auto; margin-bottom: 50rpx; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; }</style>11.效果图如下: ...

November 13, 2020 · 1 min · jiezi

关于uni-app:uniapp-微信小程序报错Cannot-read-property-forceUpdate-of-undefined

uni-app 微信小程序报错:Cannot read property 'forceUpdate' of undefined1.开发环境 uni-app2.电脑系统 windows10专业版3.在首次应用uni-app开发的时候,把我的项目运行到小程序的时候会包 Cannot read property 'forceUpdate' of undefined,上面我来分享一下我的解决办法,心愿对你有所帮忙!4.我的项目运行到小程序,报错如下:5.解决办法:6.实现5的操作之后,先进行我的项目的运行,而后再次运行我的项目,成果如下:7.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰!

November 13, 2020 · 1 min · jiezi

关于uni-app:uni-引入-animatecss-v4版本教程

1.官网链接https://animate.style/ 2.引入步骤:(1)npm install animate.css --save (2)App.vue中 @import 'animate.css' (3)页面中应用(留神双横线连贯): <div class='life'> <div class="animate__animated animate__swing animate__infinite animate__slower animate__delay-2s">你好今天</div></div>属性介绍(详见官网)①animate__animated 固定值②animate__swing 动画类名③animate__infinite 反复次数④animate__slower 执行速度⑤animate__delay-2s 提早两秒执行 (4)而后你会发现页面还是静止的,因为还有最要害的一步-定义初始变量,实现!! .life { --animate-duration: 1s; --animate-delay: 1s; }

November 3, 2020 · 1 min · jiezi

关于uni-app:uniapp原生App云打包

· HBuilderX开发工具,菜单栏:发行(U) → 原生App云打包(P) · 弹窗界面如下: 能够抉择打包Android(apk包)、ios(ipa包),单选或者多选Android包名,这里用咱们域名azapp.i72.com反转过去com.i72.azapp做为包名,必须合乎以下包名规定:一、包名必须蕴含至多两个段,由一个或多个点隔开。例如:com.abc,tencent.qq.mm;二、每个段的字符必须是小写字母、数字或下划线[a-z0-9_]组成;三、每个段必须以字母结尾; 留神:__包名(Package Name)作为利用的惟一标识。即:包名必须惟一,一个包名代表一个利用;用公布后,请不要随便批改包名,一旦您批改了包名,就会被当作一个新的利用,旧版用户无奈收到利用商店的降级揭示。 Android平台签名证书(.keystore)生成指南 3.抉择应用自有证书(须要用到数字证书进行签名),须要开发者本人生成证书;也可应用公共测试证书(不须要填写4,5,6项),免去制作证书的麻烦; 证书是一个开发者的身份标记,对Android零碎而言。应用一个证书签发的App,是属于同一个开发者的App。Android证书的生成是自助和收费的,不须要审批或付费。 4.证书别名 5.证书私钥明码 6.证书文件 7.渠道包,全副不勾选 HBuilderX默认提供 7 个渠道(Google、360、小米、华为、利用宝、vivo、oppo),更多能够在manifest.json文件中【源码视图】进行配置 8.抉择 打正式打包,如抉择 打自定义调试基座(去看这篇=》) 打正式打包次数有限度 9.原生混同,不勾选 10.全副不勾选 11.打包 · ios(ipa包) 1.抉择 ios(ipa包) 2.Bundle ID(AppID)为com.i72.azapp,跟Android包名统一 3.勾选反对iPhone,应用IDP/IEP证书 iOS证书(.p12)和形容文件(.mobileprovision)申请 4.证书私钥明码 5.证书profile文件 6.私钥证书 留神:证书profile文件和私钥证书辨别开发环境和生产环境,开发 请抉择dev下的证书profile文件和私钥证书 证书类型 应用场景 开发(Development)证书和形容文件 用于开发测试,在 HBuilderX 中打包后可在真机环境通过Safari调试 公布(Distribution)证书和形容文件 用于提交 AppStore,在 HBuilderX 中提交云打包后提交到 AppStore 审核公布 7.抉择打正式包 8.全副不勾选 9.打包 · 打包实现 调试能够应用自定义调试基座(菜单运行-手机或模拟器-制作自定义调试基座),不要重复打包 什么是自定义调试基座及应用阐明

October 30, 2020 · 1 min · jiezi

关于uni-app:uniapp跨域解决方案

uni-app跨域解决方案1.开发环境 uni-app2.电脑系统 windows10专业版3.在应用uni-app开发的过程中,在测试的时候咱们总是会遇到跨域的问题,怎么解决呢?计划如下:4.在 manifest.json中增加如下代码: "h5":{ "devServer" : { // "port" : 9001, //端口号 "disableHostCheck" : true, "proxy" : { "/api" : { "target" : "http://192.168.0.106:3000", //指标接口域名 "changeOrigin":true, //是否跨域 "secure":false, // 设置反对https协定的代理 "pathRewrite": { "^/api":"" //通过pathRewrite重写地址,将前缀/api转为/ } } } } }, //留神:增加的代码和 app-plus 是同级的关系!5.在vue模板中增加如下代码: uni.request({ url: "/api/feng", method:"post", success: (res) => { console.log(res.data); } });6.成果为:7.本期的教程到了这里就完结啦,是不是很nice,让咱们一起致力走向巅峰!

October 24, 2020 · 1 min · jiezi

关于uni-app:跨平台文件在线预览解决方案四Android和IOS原生插件

引言后面写了多篇对于<跨平台文件在线预览解决方案>,不论应用pdf.js、LibreOffice,还是永中DCS,各自都有本人的优缺点,比方:pdf.js不反对双指放大放大,LibreOffice加载迟缓,永中DCS免费等等。 跨平台(uni-app)文件在线预览解决方案跨平台文件在线预览解决方案(二)跨平台文件在线预览解决方案(三)- LibreOffice vs OpenOffice本文基于uni-app平台实现了Office文档在线预览原生插件Seal-OfficeOnline,同时反对Android和iOS,欢送下载应用~ Seal-OfficeOnline插件下载应用地址 <div class="half"> </div> 疾速上手demo工程地址 开发工具:HBuilderX Step1. 下载demo工程,应用HBuilderX关上Step2. 下载本文插件插件名称:Seal-OfficeOnline 下载插件解压搁置到我的项目根目录nativeplugins下,如图: Step3. 抉择manifest.json->App原生插件配置中加载本地插件 Step4. 应用插件在vue或nvue组件中,导入插件var testModule = uni.requireNativePlugin("Seal-OfficeOnline")应用openFile办法预览Office文件,反对如下格局:pdf、txt、doc、docx、xls、xlsx、ppt、pptxtestModule.openFile({ url: 'http://113.62.127.199:8090/fileUpload/1.xlsx', topBarBgColor: '#3394EC', topBarTextColor: '#FFFFFF', title: 'Office文档在线预览', isBackArrow: false, fileType: 'xlsx', fileName: '1'});openFile办法参数阐明urlurl参数反对如下三种地址形式: 文件网络地址,如:http://113.62.127.199:8090/fileUpload/1.xlsx手机本地文件地址,如:/data/user/0/com.HBuilder.UniPlugin/files/1.xlsx文件名,如:1.xlsx,拜访默认目录文件,默认目录为:/data/user/0/com.HBuilder.UniPlugin留神:手机本地地址目录须要有权限拜访 titletitle示意顶栏文本,默认为:SealOfficeOnline topBarBgColortopBarBgColor示意顶栏背景色彩,默认为:#177cb0(靛青) topBarTextColortopBarTextColor示意顶栏文本色彩,默认为:#FFFFFF(红色) isBackArrowisBackArrow示意是否显示返回按钮,默认为:true(显示) fileTypefileType示意能够指定文件类型,如:xlsx,在url参数无奈判断文件类型时,能够指定文件类型 fileNamefileName能够指定文件名,如:file1,留神此处不带文件扩展名,如果同时指定fileName和fileType,那么最初的文件名通过这两个参数组合起来,即:fileName.fileType Android预览成果预览docx 预览pptx 预览xlsx 预览pdf 预览txt iOS预览成果预览docx 预览pptx 预览xlsx 预览pdf 预览txt 转载请注明:我的技术分享 » 跨平台文件在线预览解决方案(四)-Android和IOS原生插件

October 17, 2020 · 1 min · jiezi

关于uni-app:mac-intellij-idea-rpx-格式化带空格的问题

因为公司的小程序都是外包的,偶然间被老大晓得我会写小程序之后,就把个紧急的小程序给我写了,就以国内的模式,不必uni-app来写太不适合了,然而作为一个业余java开发,习惯了 intellij idea 开发,而且凭借 intellij idea 弱小的代码索引性能,比起HBuilderX不便多了,然而 intellij idea 中的rpx报错,而且格式化还自带空格???? 解决形式 下载 file watchers 插件2.配置 vue file watcher-i "" s/"\ rpx"/rpx/g $FilePath$ 完

October 9, 2020 · 1 min · jiezi

关于uni-app:uniapp小程序录音上传解决方案后续更新Taro版

能力依赖RecorderManager 全局惟一的录音管理器录音性能的要求与限度与以后页面其余音频播放/录音性能互斥是否在录音中状态显示完结/不须要录音时,回收RecorderManager对象资料能够/完结 录音录音中 Codeing(后果代码间接看最初)结构一个简略的DOM构造<image @click="recordAction" :src="recordImg" class="record"/>先实现小程序的录音性能import iconRecord from '../../static/images/icon_record.png'import iconRecording from '../../static/images/icon_recording.png'// ...data() { recordImg: iconRecord, // 录音按钮的图标 rm: null, // 录音管理器},// ...mounted() { if (this.rm === null) { // 录音管理器如果没有初始化就先初始化 this.rm = uni.getRecorderManager() } // 绑定回调办法 this.rm.onStart((e) => this.onStart(e)) this.rm.onPause((e) => this.onPause(e)) this.rm.onResume((e) => this.onResume(e)) this.rm.onInterruptionBegin((e) => this.onInterruptionBegin(e)) this.rm.onInterruptionEnd((e) => this.onInterruptionEnd(e)) this.rm.onError((e) => this.onError(e))},// ...methods: { // ... recordAction() { if (this.recordImg === iconRecord) { // 设置格局为MP3,最长60S,采样率22050 this.rm.start({ duration: 600000, format: 'mp3', sampleRate: 22050, }) // 开始录音后绑定进行录音的回调办法 this.rm.onStop((e) => this.onStop(e)) } else if (this.recordImg === iconRecording) { this.rm.stop() }, }, onStart(e) { console.log('开始录音', this.question, this.subQuesIndex) this.recordImg = iconRecording console.log(e) }, onPause(e) { console.log(e) afterAudioRecord() }, onResume(e) { console.log(e) }, onStop(e) { console.log(e) this.recordImg = iconRecord // 完结录音之后上传录音 this.uploadMp3Action(e) }, onInterruptionBegin(e) { console.log(e) }, onInterruptionEnd(e) { console.log(e) }, onError(e) { console.log(e) }, uploadMp3Action(e) { // TODO uploadMp3 },},只能同时有一个录音,与音频播放互斥globalData中减少两个属性audioPlaying,audioRecording// src/App.vueexport default { globalData: { // 保障全局只有一个音频处于播放状态且录音与播放操作互斥 audioPlaying: false, audioRecording: false, }, // ...}, Util中减少判断办法// src/lib/Util.js// 完结录音之后开释录音能力export function afterAudioRecord() { getApp().globalData.audioRecording = false}// 完结音频播放之后开释音频播放能力export function afterAudioPlay() { getApp().globalData.audioPlaying = false}/** * 判断是否能够录音或者播放 * @param {string} type play | record */export function beforeAudioRecordOrPlay(type) { const audioPlaying = getApp().globalData.audioPlaying const audioRecording = getApp().globalData.audioRecording if (audioPlaying ||audioRecording) { uni.showToast({ title: audioPlaying ? '请先暂停其余音频播放' : '请先完结其余录音', icon: 'none' }) return false } else { if (type === 'play') { getApp().globalData.audioPlaying = true } else if (type === 'record') { getApp().globalData.audioRecording = true } else { throw new Error('type Error', type) } return true }}革新原有recordAction办法import { beforeAudioRecordOrPlay, afterAudioRecord} from '../../lib/Utils';// ...recordAction() {- if (this.recordImg === iconRecord) {+ if (this.recordImg === iconRecord && beforeAudioRecordOrPlay('record')) { // 设置格局为MP3,最长60S,采样率22050 this.rm.start({ duration: 600000, format: 'mp3', sampleRate: 22050, }) // 开始录音后绑定进行录音的回调办法 this.rm.onStop((e) => this.onStop(e)) } else if (this.recordImg === iconRecording) { this.rm.stop()+ afterAudioRecord() },},这样就防止了屡次录音小程序录音上传补全咱们的uploadMp3Action办法,咱们应用uni-app的uni.uploadFile()办法来上传录音文件 ...

September 16, 2020 · 2 min · jiezi

关于uni-app:记录一下最近uniapp的学习一

参考链接:保活知识点查录List上拉加载-下拉刷新sPullScrollLoadMore 加载更多Day.js 一、保活-前台运行:用于进步app存活概率或增加前台显示能够用于晋升app运行权限,减少保活概率,可使app长期后盾运行不会被杀死(用户被动清理就不能保了。)初始化: const hgService = uni.requireNativePlugin("HG-Background");配置插件: hgService.config({ title:"服务名称", content:"前台服务运行中", mode: 0, //0省电模式 1流氓模式});留神插件服务应用 app的 icon.png,与push.png 作为告诉栏图标 关上平安治理: hgService.showSafeSetting();检测是否限度后盾运行: var rsult=hgService.checkIfLimited();//console.log("isLimit=>"+rsult.isLimit );// modal.toast({// message: "是否受限:"+rsult.isLimit,// duration: 1.5// });返回数据阐明: { "isLimit":true // false 是否受限}申请运行后盾运行(仅针对andriod零碎,对于各厂家的平安治理设置要独自进行,这里只能肯定层度上减少app存活工夫): hgService.requestIgnoreLimit();启动前台服务: hgService.startService();全局事件回调(可用在uniapp执行工作,注册须要能够疾速返回,不能阻塞):工作启动工夫,会有肯定延时个别一分钟内: var globalEvent = uni.requireNativePlugin('globalEvent'); globalEvent.addEventListener('doJob', function() { counts+=1; modal.toast({ message: "工作执行次数:"+counts, duration: 1 }); });进行服务: hgService.closeService();二、List列表:list 列表组件个别用于导航菜单、列表、设置页排版等,能够在其中应用图标、略缩图或搁置任何你想放的元素.组件名:uni-list、uni-list-item组件应用注意事项: 组件须要依赖 sass 插件 ,请自行手动装置组件外部依赖 'uni-icons' 、uni-badge 组件uni-list 和 uni-list-item 须要配套应用,暂不反对独自应用 uni-list-item开启点击反馈后,会有点击选中成果应用插槽时,能够齐全自定义内容note 、rightText 属性临时没做限度,不反对文字溢出暗藏,应用时应该管制长度显示或通过默认插槽自行扩大如果须要批改 switch、badge款式,请应用插槽自定义应用形式:在应用 uni-ui 的时候,只有uni-ui 组件 装置在我的项目的 components 目录下,并合乎 components/组件名称/组件名称.vue 目录构造。就能够不必援用、注册,间接在页面中应用 uni-ui 组件 ...

September 11, 2020 · 2 min · jiezi

关于uni-app:uniapp生态下UI框架的优选欢迎爱开源的你也加入他们

uni-app (https://gitee.com/dcloud/uni-app)是一个应用 Vue.js 开发所有前端利用的框架,开发者编写一套代码,可公布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快利用等多个平台。 明天为大家介绍的就是 uni-app 生态下的一款 UI 框架,他们的项目组也正在踊跃招募一起单干的小伙伴,如果你和他们一样喜爱 uni-app,那么无妨看上来吧。 项目名称:uView 我的项目作者:亡灵叙曲 开源许可协定:MIT 我的项目地址:https://gitee.com/xuqu/uView 我的项目简介 uView UI,是 uni-app 生态优良的UI框架,全面的组件和便捷的工具会让您信手拈来,蛟龙得水。 我的项目个性 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序60+精选组件,功能丰富,多端兼容,让您疾速集成,开箱即用泛滥贴心的JS利器,让您飞镖在手,召之即来,百步穿杨泛滥的罕用页面和布局,让您专一逻辑,事倍功半详尽的文档反对,现代化的演示成果按需引入,精简打包体积我的项目截图 开发者说 uView 的指标是做成 uniapp 生态的标杆,自在且收费开源。 对此,uView 有清晰且明确的打算安顿,uView 将会全面兼容 nvue,适配暗黑模式,整合unicloud,退出更多组件和模板等。 然而,一个人的力量是不够的: 为了开源,现实和自在,您能够退出 uView 的研发工作组,咱们一起并肩奋战。如果您是做 UI 开发的同学,uView 同样欢送,因为 uView 须要内外兼修。如果您是个踊跃沉闷的人,那么也欢迎您退出 uView 的QQ群成为管理员。所有退出 uView 奉献的同学,都会在官网申明,并且有本人的集体专属页。 如果你想要退出他们,或者理解我的项目更多的细节,那么就点击前面的链接返回我的项目主页看看吧:https://gitee.com/xuqu/uView

September 4, 2020 · 1 min · jiezi

关于uni-app:uniapp页面之间的传参让下一个页面接收上一个页面的值

为了实现页面之间的通信,或者数据交换,咱们要实现一个页面到另一个页面的传参,能够通过点击跳转的时候进行页面之间的传值。 <template> <view> <navigator url="../a/a?id=1" hover-class="none"> <view>跳转到A页面</view> </navigator> <navigator url="../b/b?id=2" hover-class="none"> <view>跳转到B页面</view> </navigator> <navigator url="../c/c?id=3" hover-class="none"> <view>跳转到C页面</view> </navigator> </view></template><script>export default { data() { return { } }, methods: { }, onLoad: function (option) { //取得上一个页面传过来的id var pageid = option.id; console.log(pageid); }}</script>Author:TANKINGWeb:http://www.likeyun.cn/Date:2020-8-13WeChat:face6009

August 13, 2020 · 1 min · jiezi

关于uni-app:uniapp提交表单到后端接收表单数据

要想接管表单数据,首先要在表单进行数据的绑定,咱们能够应用v-model="keyword"进行绑定。 而后在js获取这个绑定的值。 index.vue <template><view> <view class="search-con"> <view class="form-con"> <form class="search-form"> <input type="text" v-model="keyword" @tap="showsearchbtn" focus="true"/> <button form-type="submit" hover-class='none' @tap="keyword">提交</button> </form> </view> </view></view><template>js <script>export default { data() { return { } }, methods: { keyword(e){ // 获取表单值 let kw = this.keyword; console.log(kw); } } }</script>Author:TANKINGWeb:http://www.likeyun.cnDate:2020-8-13WeChat:face6009

August 13, 2020 · 1 min · jiezi

关于uni-app:uniapp提交表单到后端接收表单数据

要想接管表单数据,首先要在表单进行数据的绑定,咱们能够应用v-model="keyword"进行绑定。 而后在js获取这个绑定的值。 index.vue <template><view> <view class="search-con"> <view class="form-con"> <form class="search-form"> <input type="text" v-model="keyword" @tap="showsearchbtn" focus="true"/> <button form-type="submit" hover-class='none' @tap="keyword">提交</button> </form> </view> </view></view><template>js <script>export default { data() { return { } }, methods: { keyword(e){ // 获取表单值 let kw = this.keyword; console.log(kw); } } }</script>Author:TANKINGWeb:http://www.likeyun.cnDate:2020-8-13WeChat:face6009

August 13, 2020 · 1 min · jiezi

关于uni-app:源码测评来客推开发源码能用来做什么模式的商城B2B2CS2B2C云集模式淘宝模式

开源社区提到开源代码,在程序员眼中肯定有排名的是就是github. GitHub 是一个面向开源及公有软件我的项目的托管平台,因为只反对 Git 作为惟一的版本库格局进行托管,故名 GitHub。 GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及根本的 Web 治理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、合作图谱(报表)、代码片段分享(Gist)等性能。目前,其注册用户曾经超过 350 万,托管版本数量也是十分之多,其中不乏出名开源我的项目 Ruby on Rails、jQuery、python 等。 2018 年 6 月 4 日,微软发表,通过 75 亿美元的股票交易收买代码托管平台 GitHub。 当然这个毕竟当初被微软操控着,在国内的访问速度可想而知,所以很多国内的程序员大佬会去另外一个国产平台gitee.com,名字获得很霸气「码云」,和咱们国民爸爸「马云」马爸爸同音。作为国产git代码托管平台,外面的代码基本上更多满足国人的需要和市场化的场景须要。 至于二者的区别就不赘诉,毕竟在坐的都是技术大佬,明天要说的是在gitee.com上搜寻「小程序商城」,排名第一个的这个来客推电商,到底是个什么来头。 来客推电商 粗劣电商,来客, [ 微信 + 支付宝 + 百度 + 头条 ] 小程序 + APP + 公众号 + PC + H5,重视界面美感与用户体验,打造独特电商零碎生态圈,不可多得的二开神器。 【PHP商城零碎 分销商城 多用户商城 Saas O2O商城 B2B2C S2B2C 小程序直播】 在gitee.com上的是他们的开源代码,天然性能有所局限,那么他们的商业版本到底怎么样呢?间接去官网的演示版本深刻理解了一个上午。总结如下: ♦代码齐全开源 不少企业老板或者对程序不理解的就会问了:都免费了怎么还是开源呢?那么首先要纠正一个问题,代码开源不等于代码收费,代码自身就是程序员的工作成绩,适当的商业免费是能了解的,而开源的意思是这个代码交付到你手中,你能够自有配置、批改,这交付的源码批改不波及到商业版权纠纷,不波及到代码的加密。艰深而言,这就是代码开源 ♦我的项目相当稳固 所有技术大佬的宿愿都是心愿本人的程序没有bug,然而这只是一个商业程序,没有bug是不存在的,而来客推这个代码依据客服的介绍和工商信息看,他们代码应该是开发了1年左右,而商业化应该也有快2年的工夫,这部分的积淀还是指的大家释怀的,当然了,与行业前辈相比来客推还是个小学生,所以他们的定价算得上比拟切实。毕竟行业外面交付源码的这样的体量动辄10万,少的也是5万-8万。 ♦价格还算切实 ...

August 7, 2020 · 1 min · jiezi

关于uni-app:enable-ide-service-yn-27d-27c

我在hbuilderx里运行编译uni-app的微信小程序版,报:enable ide service (y/n) [27d [27c 解决办法: 在微信开发者工具里点击设置》平安设置,开启服务端口

July 23, 2020 · 1 min · jiezi

uniapp开发小程序适配苹果端采坑总结

不得不说,任何一个开发者遇到苹果手机都会或多或少须要做适配,在应用uni-app开发小程序时,我就发现不少须要兼容的中央,明天做个小结 1.因为页面大多数内容都是动静获取,当页面高度不给固定值时,让其随内容的填充自适应的时候,iPhoneX Max手机在页面底部会呈现白版,安卓手机不会有此景象. 解决办法: //通过获取零碎信息拿到屏幕宽高比, const SCREEN_WIDTH = 750 const RATE = wx.getSystemInfoSync().screenHeight / wx.getSystemInfoSync().screenWidth data(){ ScreenTotalH: SCREEN_WIDTH * RATE, //拿到实在手机高度 } //展现内容高度 <view class="main" :style="{height:ScreenTotalH+'rpx'}"> //这样后苹果大屏手机内容底部不会白板2.获取到工夫字符串"2020-07-12 09:00:30" ,当我截取后取时和分为单位,如果时为"00"时,页面<text>{{dian}}点</text>,显示为'0'而不是我要的'00',这个问题非常奇葩,尽管不是大的影响,加个三目判断:<text>{{dian=='00'?'00':dian}}点</text>,就ok.3.有时候小程序须要显示APP分享过去的H5页面,或者小程序自身须要显示H5页面时,须要配置https的域名,不然会无奈失常显示,安卓没有此问题.补充:(H5页面个别通过<web-view :src="src"></web-view>来展现,SRC外面的页面都是后盾配置好的)目前这是我遇到的苹果端适配问题以及解决办法,还有其余对于小程序苹果端的适配问题,大家网上去搜寻一大把,解决办法大佬们都写了,我再此就不反复他人的成绩了.

July 12, 2020 · 1 min · jiezi

uniapp的app原始标题栏中自定义iconfont图标不显示的解决方案

从iconfont上下载字体到本地用上图的\e601直接配置在uni-app的pages.json中这样并不起作用 解决方案需要在斜杠后面加u才有用图标就出来了。 结语如果帮到你了,点个赞吧,哈哈哈哈

June 30, 2020 · 1 min · jiezi

前端面试每日-31-第437天

今天的知识点 (2020.06.26) —— 第437天 (我也要出题)[html] 如何给页面添加追加右键菜单(原右键菜单功能保持不变)[css] 为什么float会导致父元素塌陷?[js] 微信小程序实现轨迹回放,微信原生小程序,基于uniapp的小程序?[软技能] TCP为什么是有状态的?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。前端面试每日3+1题,以面试题来驱动学习,每天进步一点!让努力成为一种习惯,让奋斗成为一种享受!相信 坚持 的力量!!!欢迎在 Issues 和朋友们一同讨论学习! 项目地址:前端面试每日3+1【推荐】欢迎跟 jsliang 一起折腾前端,系统整理前端知识,目前正在折腾 LeetCode,打算打通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个Star, 同时欢迎微信扫码关注 前端剑解 公众号,并加入 “前端学习每日3+1” 微信群相互交流(点击公众号的菜单:进群交流)。 学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布面试题(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢迎大家到Issues交流,鼓励PR,感谢Star,大家有啥好的建议可以加我微信一起交流讨论!希望大家每日去学习与思考,这才达到来这里的目的!!!(不要为了谁而来,要为自己而来!)交流讨论欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个[Star]

June 26, 2020 · 1 min · jiezi

uniapp之unishowToastimage路径问题

uni-app的API中,showToast的icon值只有success,loading,none三种显示,失败没有图标。如果失败时需要显示图标,就要用到自定义图标 image 了 uni.showToast({ title: '扫码失败', image:'/static/lost.png', ////要写根路径,不要写相对路径 duration: 3000, })结果如下: 注意:在components下的组件,图片路径用 /static/lost.png 这样的根路径形式, 不要用 …/static 或者 …/…/static 的形式。 在有些平台不报错,但找不到路径,不显示图片。

June 10, 2020 · 1 min · jiezi

uniapp里面实现分类栏目定位和滚动

需求首页多个分类栏目,分两排展示,菜单页实现一排首页分类栏目的展示要求:首页的多个分类栏目无论点击哪一个,到菜单页一排显示的时候该栏目定位到指定位置 首页代码为了项目结果清晰,我将首页的分类栏目写成组件并引入到首页,首页会通过props传给组件datas <template> <view class="category" > //X是当前元素的标志,在菜单页我是需要拿到这个X,并与菜单页元素的X比对,如果比对一直,就可以滚动到指定位置 <view v-for="(o,x) in datas" class="itemcategory" @tap="tosdCategoryList(o.id,o.contentName,x)" :key="x" :id="'ele' + x"> <image :src="o.assemblyImg" class="assemblyimg"></image> <text class="contentname" :style="{color:o.wordColor?o.wordColor:'contentname'}" >{{o.contentName}}</text> </view> </view></template><script> export default{ name:"sdCategory", props: { datas: { type: Array }, }, data() { return { info: [], assemblyContentId: "", } }, computed: { }, onLoad() { }, onShow() { }, methods:{ tosdCategoryList(assemblyContentId ,goodsName,x){ let categoryList1=(JSON.stringify(this.datas)) uni.navigateTo({ url:"/pages/sdCategoryGoodsList/sdCategoryGoodsList?assemblyContentId="+assemblyContentId+"&goodsName="+goodsName+"&categoryList="+categoryList1+"&x="+x, }) } } }</script>菜单页代码在这里面我是采坑了的,vue组件或者页面都是有生命周期的,如果需要元素加载完了再展示或者匹配,在vue里面请使用mounted钩子,在uni-app里面使用onReady <scroll-view class="first-scroll" scroll-with-animation scroll-x @scroll="scrollMove" :scroll-left="scrollLeft" :scroll-into-view="intoindex"> <view :class="item.id==assemblyContentId?'first-box1':'first-box'" v-for="(item,x) in info" :key="x" @tap="gotoGetCategoryList(item.id,x)" :id="'ele' + x"> <view class="info"> <view :class="item.id==assemblyContentId?'name1':'name'">{{item.contentName}}</view> </view> </view></scroll-view><script> export default { data() { return { isExtension:'', token: '', info: [], smShopInfo: {}, assemblyContentId: "", x:0, goodsInfoList: [], isShow:false, statusBar:'', statusTop:'', isTop:false, currentSwiper: 0, tabbarIndex: 0, scrollLeft: '', pageHeight: 200, moveParams: { scrollLeft: 0, // scroll-view滚动的距离,默认为0,因为没有触发滚动 subLeft: '', //点击元素距离屏幕左边的距离 subHalfWidth: '', //点击元素的宽度一半 screenHalfWidth: '' //屏幕宽度的一半 }, } }, onReady() { // 获取屏幕宽度,为了让横排的栏目每次点击的时候固定到指定位置 this.getScreenWidth(); this.getCategoryList(this.assemblyContentId,this.x) }, //之前组件传过来的东西 onLoad(option, res) { this.assemblyContentId = option.assemblyContentId this.info = JSON.parse(option.categoryList) this.x=Number(option.x) }, methods: { //获取屏幕宽度 getScreenWidth() { var that = this; uni.getSystemInfo({ success(res) { console.log(res); let moveParams = that.moveParams; moveParams.screenHalfWidth = res.screenWidth / 2; that.pageHeight = res.windowHeight - 50; } }); }, getRect(ele) { //获取点击元素的信息,ele为传入的id console.log(ele); var that = this; const query = uni.createSelectorQuery().in(that); console.log(query) query.select(ele).boundingClientRect((rect)=> { let moveParams = that.moveParams; console.log(rect) //为当前需要的元素信息 console.log(rect.left) console.log(rect.width) moveParams.subLeft =rect.left; moveParams.subHalfWidth =rect.width / 2; that.moveTo(); }).exec(); }, //scroll事件集合: scrollMove(e) { let moveParams = this.moveParams; moveParams.scrollLeft = e.detail.scrollLeft; this.moveParams = moveParams; }, //移动到指定位置 moveTo() { let subLeft = this.moveParams.subLeft; let screenHalfWidth = this.moveParams.screenHalfWidth; let subHalfWidth = this.moveParams.subHalfWidth; let scrollLeft = this.moveParams.scrollLeft; let distance = subLeft - screenHalfWidth + subHalfWidth; scrollLeft = scrollLeft + distance; this.scrollLeft = scrollLeft; }, //获取列表 getCategoryList(id,x) { console.log(id); console.log(x); this.tabbarIndex = x; let ele = 'ele' + x; console.log(ele); this.getRect('#' + ele); this.currentSwiper = x; let params = { shopId: uni.getStorageSync('smShopInfo').id, assemblyContentId: this.assemblyContentId } this.$http.get(this.$api.categoryList, { data: params }).then(res => { if (res.data.code == 200) { if (!!res.data.data) { this.goodsInfoList = res.data.data.list console.log(res.data.data.list); this.isShow = false }else{ this.goodsInfoList=[]; this.isShow = true } } else { uni.showToast({ title: res.data.msg, duration: 2000, icon: 'none' }); } }) }, //点击后渲染列表 点击的横排也是可以滚动到指定位置 gotoGetCategoryList(id,x) { console.log(id); console.log(x); this.tabbarIndex = x; let ele = 'ele' + x; console.log(ele); this.getRect('#' + ele); // this.list = this.orderList[tbIndex]; this.currentSwiper = x; let params = { shopId: uni.getStorageSync('smShopInfo').id, assemblyContentId: id } this.$http.get(this.$api.categoryList, { data: params }).then(res => { if (res.data.code == 200) { uni.showLoading({ title: '加载中', duration: 500, icon: 'none' }); if (!!res.data.data) { // console.log(res.data.data); this.goodsInfoList = res.data.data.list console.log(res.data.data.list); this.isShow = false }else{ this.goodsInfoList=[]; this.isShow = true } this.assemblyContentId = id } else { uni.showToast({ title: res.data.msg, duration: 2000, icon: 'none' }); } }) }, } }</script>

June 6, 2020 · 3 min · jiezi

uniapp使用腾讯地图选点插件

1:找到manifest.json2:找到源码识图3:加上即可。 const key = ''; //使用在腾讯位置服务申请的key const referer = ''; //调用插件的app的名称 const location = JSON.stringify({ latitude: 39.89631551, longitude: 116.323459711 }); const category = '生活服务,娱乐休闲'; wx.navigateTo({ url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&location=' + location + '&category=' + category });以上为部分文档代码,自己了解!

June 2, 2020 · 1 min · jiezi

uniapp-H5页面-ios系统软键盘弹出造成点击事件失效

问题描述:苹果系统,软键盘弹出,键盘再收起时,原虚拟键盘位点击事件无效。 排查过程:只有iphonex、iphone6,ihpone7等部分机型会出现该问题; 原因:在IOS下,点击页面中的input时,弹出软键盘时,如果input比较靠下,整个页面会上移,document.body.scrollOffset会由0变成大于0。 软键盘消失后,页面会下移。但是document.body.scrollOffset并不会变成0,所以这时候触控不准; 解决方法:监听input失去焦点时,使页面回正

June 1, 2020 · 1 min · jiezi

uniapp里面computed的妙用

前言:目前小程序市场里面,有两大技术框架比较流行,一个是Taro,一个uni-app,在这边写项目的时候用uni-app比较多,今天就主要讲讲在日常开发小程序使用uni-app的一些经验,其实写uni-app就是在写vue,因为uni-app就结合了vue的语法做了一些处理和封装,生命周期,组件钩子都是跟正常挨罚vue差不多的 需求:封装一个菜单组件,通过首页加载,并使用首页接口返回的某个数据,通过该数据中的字段调用另一个接口,达到渲染菜单组件渲染的目的 首页代码:需求涉及到父子组件的传值,典型的父组件传值给子组件 <!-- 自定义菜单组件 s --><view v-if="item.assemblyType == 6&&item.xcxStatus == 0"> <sd-foot-category :datas="item.items"></sd-foot-category></view><!-- 自定义菜单组件 e -->首页注册组件 import sdFootCategory from "./sdCategoryFootGoodsList/sdFootCategory.vue"; //底部菜单列表组件components: { sdFootCategory },菜单组件代码:通过拿到父组件的传递的props,使用props里面的某个值完成组件渲染,并达到首次加载组件渲染全部数据,待组件内自由切换按钮后再加载其他栏目数据,需求实现的关键点:使用computed. <template> <view class="main" > <view class="main-box"> <view class="footcategory"> <scroll-view class="first-scroll" scroll-x="true"> <view v-for="(o,x) in datas" :key="x" @tap="gotoGetCategoryList(o.id,o.menuLabel)" class="first-box1"> <view class="box"> <text :class="o.id==assemblyContentId?'content-name1':'content-name'">{{o.contentName}}</text> <text :class="o.id==assemblyContentId?'content-title1':'content-title'">{{o.contentTitle}}</text> </view> </view> </scroll-view> </view> <!-- 商品列表 s --> <view class="goodslist"> <view class="goodslist-box" v-for="(goods,y) in goodsInfoList" :key="y" @tap="toDetail(goods)"> <view class="img"> <image :src="goods.sdGoodsVo.image" mode="aspectFill"></image> </view> <view class="info"> <view class="name">{{goods.sdGoodsVo.name}}</view> <view class="sellingPoint">{{goods.sdGoodsVo.sellingPoint?goods.sdGoodsVo.sellingPoint:''}}</view> <view class="flex-direction-row align-items-end"> <view class="price"><text>¥</text>{{goods.sdGoodsVo.salePirce}}</view> <view class="memberPirce"><text>¥</text>{{goods.sdGoodsVo.memberPirce}}</view> <image class="plusImg" src="../../../static/image/goodsdetail/plus.png"></image> </view> </view> </view> <view v-if="isShow" class="nodata-box"> <image src="../../static/image/nodata.png" class="nodata"></image> <view class="nodata-text">暂无商品</view> </view> </view> <!-- 商品列表 e --> </view> </view></template><script> export default { name: "sdFootCategory", //props校验 props: { datas: { type: Array } }, data() { return { goodsinfo: [], smShopInfo: {}, assemblyContentId: this.datas[0].id, goodsInfoList: [], isShow: false } }, //使用computed就能达到首次渲染全部数据的目的,而且当组件内通过按钮加载其他栏目数据时候,computed依赖的goodsInfoList也会发生改变 computed: { //获取列表 getCategoryList(e) { let params = { shopId: uni.getStorageSync('smShopInfo').id, assemblyContentId: this.datas[0].id } this.$http.get(this.$api.customizeList, { data: params }).then(res => { if (res.data.code == 200) { if (!!res.data.data) { this.goodsInfoList = res.data.data.list // console.log(res.data.data.list); console.log(this.isTop); this.isShow = false } else { this.goodsInfoList = []; this.isShow = true } } else { uni.showToast({ title: res.data.msg, duration: 2000, icon: 'none' }); } }) }, }, onLoad(option) { console.log(datas) }, onShow() { console.log(this.datas) this.getCategoryList() }, methods: { //点击后 显示不同的商品 gotoGetCategoryList(id, menuLabel) { let params = { shopId: uni.getStorageSync('smShopInfo').id, assemblyContentId: id } this.$http.get(this.$api.customizeList, { data: params }).then(res => { if (res.data.code == 200) { uni.showToast({ title: '加载中', duration: 1000, icon: 'none' }); if (!!res.data.data) { this.goodsInfoList=res.data.data.list this.isShow = false } else { this.goodsInfoList = []; this.isShow = true } this.assemblyContentId = id } else { uni.showToast({ title: res.data.msg, duration: 2000, icon: 'none' }); } }) }</script>

May 31, 2020 · 2 min · jiezi