uniapp大概是怎么个开发法(前端)

写在前面,博主是个在北京打拼的码农,从事前端工作5年了,做过十多个大大小小不同类型的项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:13287946835@139.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

目录

一、简单介绍

1、uniapp好在哪?

2、上手难度

3.uniapp内嵌到别的项目 

二、基础了解

1、关于uniapp的目录结构

2、页面适配方面

3、uniapp有自己的一套ui组件、生命周期、全局方法。

4、页面跳转:

5、页面传参

6、关于打包

7、uniapp微信小程序登录与支付

8、uniapp跨平台开发底层实现极简解释


本次不是手把手教学,仅仅给大家伙写个开发过程大概情况,能让新人知道uniapp大概是怎么个开发写法

本文关键字:vue、uniapp项目、各端适配

一、简单介绍

1、uniapp好在哪?

uniapp,是当今前端行业的热门技术,备受中小型公司的欢迎,为什么?

跨端,一个长久以来困扰开发者的问题,随着各种各样兼容问题的爆发,开发项目并能部署到各个平台平稳运行越来越让人感觉吃力。

公司为了app的稳定性和流畅性不得不招ios、安卓开发工程师去开发相同页面相同功能(Native Apps原生开发),两套项目部署到两个端,用人成本很高。

如果有个技术栈可以把项目代码转来转去就好了,例如把vue代码尽数抽离解析转化为微信小程序代码

uniapp诞生后让人们看到了希望,但最初用uniapp开发是很冒险的,一个又一个坑,颇具实验性。 

近些年来uniapp团队疯狂填坑补漏,因为可以节约用人成本、开发成本,相对稳定的hybird app开发技术栈uniapp终于广受中小型公司青睐,大厂还是用的app原生开发比较多,因为性能方面确实有差距。

React Native是react开发者使用的跨端技术实现方式,vue这边主要依靠uniapp,使用的代码编辑器是HBuilder X(uniapp开发必备)。

为了使自己更有竞争力,vue程序猿们纷纷研究起了uniapp,向着成为“大前端”开发者的路前进。

2、上手难度

uniapp的架构是vue的语法+小程序的api

那么uniapp的上手难度怎么样呢,如果你是有vue项目的开发经验,那么基本上直接是就能上手开发的,边看着官网边开发项目,虽然查找资料有点费时间,但确实可以说:会vue,看两天官网就可以说自己会uniapp。各位新人可以在练手项目中看着官网写几个页面,上手难度真不大,而且社区活跃度很好,基本上遇到的问题都能搜到。

但是不要太掉以轻心,认为uniapp不足为惧,等到实际上手时可能比自己预想的开发时间多了几倍,因为一些细节性的小问题就可能拦住你几个小时,所以学无止境,多多熟悉官网上的文档吧。 

 官网:uni-app官网

3.uniapp内嵌到别的项目 

uni-app很多开发朋友反应用着还算顺手,并且开发效率很快一套代码可以跑Android、iOS、H5和小程序多端,但是涉及到调用第三方原生SDK就很麻烦,为了解决此问题需将原生和uni-app项目混编,也就是大家常说的Hybrid APP开发

我个人前些年开发的uniapp项目是内嵌在app、公众号、小程序用的。

把uniapp项目内嵌到别的项目,一种方法是相关页面接口做免登陆校验(后端处理)

第二种就是把登录后的数据(token以及所有要用到的登录信息)和要给页面接口传参用的值通过路由路径给到uniapp页面,uniapp拿到登录数据后存到本地实现登录效果,调用接口后页面自然正常展示,有需要的话可以调用app原生项目开发者提供的方法去调用并实现相应的功能

	var u = navigator.userAgent;
					var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
					var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
					if(isAndroid){
						window.Android.finishView();
					}
					if(isiOS){
						window.webkit.messageHandlers.js_obj.postMessage("close")
					}

二、基础了解

1、关于uniapp的目录结构

跟普通vue项目目录结构差不多,多了几个核心文件,manifest.json是配置应用名称、appid、logo、版本等打包信息用的,pages.json的作用是配置页面路径、页面窗口样式、tabBar、navigationBar等页面类信息

2、页面适配方面

uniapp页面像素单位使用的是rpx

3、uniapp有自己的一套ui组件、生命周期、全局方法。

其中 onLoad(option)可以获取路由参数很常用,其他的详细信息见官网。

  官网:uni-app官网

4、页面跳转:

5、页面传参

在uniapp中,页面传参还有 globalData方式,首先在App.vue中定义 globalData:{参数},然后在其他页面通过getApp().globalData.参数名获取值,更新值直接getApp().globalData.参数名=重新赋值就行

6、关于打包

打包的话网上有很多教程,简单用语言描述一下就是:在HbuilderX里打开项目,点击manifest.json文件,查看项目基础配置,然后点击HbuilderX菜单栏上面的发行,选择相应类型的打包方式,这时候就会出现弹出框,我们需要在里面修改配置,设置证书等,最后点击打包,就完成了。

7、uniapp微信小程序登录与支付

  1. 登录:通过uni.login获取code传给后端,后端返回token参数,使用uni.getUserProfile()方法去提醒用户进行授权,用来获取用户信息。

  2. 支付:在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“微信支付”项,配置一些像AppId或是支付完成后要返回的通用链接,调用 [uni.requestPayment(OBJECT)]发起支付,OBJECT参数中provider属性值固定为wxpay等,APP和微信支付传的参数都不太一样,参数如sign,signtype,appid等

8、uniapp跨平台开发底层实现极简解释

uniapp指定打包成某平台版本后,项目在打包进行中会进行编译解析,会把当前开发写的代码转化成能被指定平台解析的ast语法树(一个又一个细小节点组成的一层又一层的对象,由上而下包含项目编写的所有代码内容),AST语法树又被转化为相应平台的代码,如编译成vue的jsx语法,通过render函数渲染页面。

最后:

不要错位:干好自己的岗位就行了,别的事领导自然有办法处理

不要求全:不要求一次性就把事情做得完美。可以先把主要的做了,后续再慢慢补别的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/148750.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成本2元开发游戏,最快3分钟完成!全程都是AI智能体“打工”,大模型加持的那种

金磊 发自 凹非寺 量子位 | 公众号 QbitAI 家人们,OpenAI前脚刚发布自定义GPT,让人人都能搞开发;后脚国内一家大模型初创公司也搞了个产品,堪称重新定义开发——让AI智能体们协作起来! 只需一句话,最快3分…

leetcode:1576. 替换所有的问号(python3解法)

难度:简单 给你一个仅包含小写英文字母和 ? 字符的字符串 s,请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外,不存…

立仪科技光谱共焦在半导体领域的应用

半导体技术在近年来以极快的速度发展,对质量和精密度的要求也不断提升。在这样的背景下,用于材料与设备研究的先进检测技术如光谱共焦成像将自然地找到一席之地。下面我们将详细探讨一下光谱共焦在半导体领域中的应用。 光谱共焦技术,通过在细…

HTML5学习系列之标题和正文、描述性信息

HTML5学习系列之标题和正文、描述性信息 标题和正文标题段落 描述性信息强调注解备选上下标术语代码预定义格式缩写词编辑提示引用引述换行显示修饰非文本注解 总结 标题和正文 标题 按语义轻重排列&#xff1a;h1\h2\h3\h4\h5\h6 <h1>诗词介绍</h1> <h2>…

算法通关村——归并排序

归并排序 1、归并排序原理 ​ 归并排序是一种很经典的分治策略。 ​ 归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干小的数组&#xff0c;分成几个比较小的结构&#xff0c;然后是利用归并的思想实现的排序方法。将一个大的问题分解成一些小的问题分别求解&#xff…

区域入侵AI算法如何应用在工地场景,保卫工地施工安全?

在工地、厂区等施工场所&#xff0c;安全保障是必不可少的&#xff0c;特别是在人工智能技术日益成熟的今天&#xff0c;如何利用旭帆科技AI智能视频中的区域入侵算法助力智慧工地、保障工地安全呢&#xff1f; 1、建筑物周界安全 TSINGSEE青犀区域入侵算法可以用于监控建筑物…

03-CSS基础选择器

3.1 CSS基础认知&#x1f34e; 3.1.1 &#x1f441;️‍&#x1f5e8;️CSS概念 CSS&#xff1a;层叠样式表&#xff08;Cascading style sheets)&#xff0c;为网页标签增加样式表现的 语法格式&#xff1a; 选择器{<!-- 属性设置 -->属性名:属性值; <!--每一个…

大模型架构创新已死?

金磊 白交 发自 凹非寺 量子位 | 公众号 QbitAI 一场围绕大模型自研和创新的讨论&#xff0c;这两天在技术圈里炸了锅。 起初&#xff0c;前阿里技术VP贾扬清&#xff0c;盆友圈爆料吐槽&#xff1a;有大厂新模型就是LLaMA架构&#xff0c;但为了表示不同&#xff0c;通过改变…

wx.canvasToTempFilePath生成图片保存到相册

微信小程序保存当前画布指定区域的内容导出生成指定大小的图片&#xff0c;记录一下 api&#xff1a;wx.canvasToTempFilePath 效果&#xff1a; 代码&#xff1a;wxml <canvas style"width: {{screenWidth}}px; height: {{canvasHeight}}px;" canvas-id"my…

AI绘画工具汇总

目前市面上的AI绘画工具十分繁杂&#xff0c;以下工具可供参考&#xff1a; 1. Midjourney 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; Midjourney&#xff1a;最主流的AI绘图工具之一&#xff0c;出图效果好&#xff0c;简单学习就可上手。需要在di…

webstorm基础配置

设置左侧菜单栏文字大小 开启鼠标滚轮控制文字大小 配置自定义注释 设置左侧菜单栏文字大小&#xff1a;file》settings》Appearance&Behavior》Appearance 开启鼠标滚轮控制主界面文字大小&#xff1a;file》settings》Editor》General 配置自定义注释&#xff1a;fi…

【星海出品】SDN neutron (五) openvswitch

1、ovs-vswitchd组件是交换机的主要模块&#xff0c;运行在用户态&#xff0c;其主要负责基本的转发逻辑、地址学习、外部物理端口绑定等。还可以运用OVS自带的ovs-ofctl工具采用openflow协议对交换机进行远程配置和管理。 2、ovsdb-server组件是存储OVS的网桥等配置、日志以及…

2013年10月23日 Go生态洞察:字符串、字节、符文和字符

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

正则匹配去除HTMl标签

正则匹配去除HTMl标签 案例&#xff1a;如在textarea中去除标签 操作方法 val.replace(/<[^>]>/g, ‘’))

【2015年数据结构真题】

用单链表保存m个整数&#xff0c;结点的结构为 [data] [link]&#xff0c;且|data|<n(n为正整数)。现要求设计一个时问复杂度尽可能高效的算法&#xff0c;对于链表中 data 的绝对值相等的结点&#xff0c;仅保留第一次出现的结点而删除其余绝对值相等的结点。例如&#xff…

ai语音电销机器人电销行业要怎么降低封号率?

工信部对电话营销电话的管控越来越严格&#xff0c;企业电销行业的发展受到了很多限制&#xff0c;因为电话销售人员在进行销售工作的时候&#xff0c;经常会因为各种原因触发封号机制&#xff0c;导致手机卡号被封&#xff0c;那企业电销行业要怎么降低封号率&#xff1f; 很多…

上门预约小程序开发app创业有哪些优势?

上门小程序app创业优势如下&#xff1a; 1. 无需租金&#xff0c;省下房租费用。由于采用技师上门服务&#xff0c;因此无需租用门店&#xff0c;为您节省了数十万的房租&#xff0c;省下来的就是赚的&#xff01; 2. 无需招聘全职技师和员工&#xff0c;省下工资。技师以兼职方…

vue中ref的用法

vue中ref的用法 在项目中使用ref时有时候直接取值,有时候返回的却是一个数组,不知其中缘由,后查了一下ref用法,所以总结一下. 1.绑定在dom元素上时&#xff0c;用起来与id差不多&#xff0c;通过this.$refs来调用: <div id"passCarEchart" ref"passCarEch…

如何在jupyter 上安装Office365-REST-Python-Client

最近工作需要写python代码从sharepoint 上定期load 数据写入到SQL server 中&#xff0c; 首先需要安装 office365 的python库&#xff08;python库名&#xff1a; Office365-REST-Python-Client&#xff09;但是直接安装失败了。 !pip install Office365-REST-Python-Client…

Java 等后端应用如何获取客户端真实IP —— 筑梦之路

需求说明 现有一套Java开发的应用&#xff0c;需要能获取到用户访问的真实IP地址&#xff0c;以此来过滤到一些不安全的因素。而实际部署的场景中Java服务提供给用户访问需要经过多次代理&#xff0c;默认情况下是无法获取到客户端真实IP地址的&#xff0c;因此要实现该需求&a…