uniapp开发(由浅到深)
文章目录
- 1. 项目构建
- 1.1 脚手架构建
- 1.2 HBuilderX创建 uni-app项目步骤:
- 2 . 包依赖
- 2.1 uView
- 2.2 使用uni原生ui插件
- 2.3 uni-modules
- 2.4 vuex使用
- 3.跨平台兼容
- 3.1 条件编译
- 4.API 使用
- 4.1 正逆参数传递
- 5. 接口封装
- 6. 多端打包
- 3.1 微信小程序
- 3.2 打包App
- 3.2.1 自有证书-申请
- 3.2.3 离线打包配置

1. 项目构建
1.1 脚手架构建
- 全局安装脚手架
- npm install -g @vue/cli@4 (切记安装4.x.x的版本)
- 创建项目
vue create -p dcloudio/uni-preset-vue my-project
- 默认模板

- 执行命令参考
package.json
1.2 HBuilderX创建 uni-app项目步骤:
- 点工具栏里的文件 -> 新建 -> 项目

2 . 包依赖
2.1 uView
- 安装依赖 (注意:项目名称不能有中文字符)
// 安装sassnpm i sass -D// 安装sass-loader,注意需要版本10,否则可能会导致vue与sass的兼容问题而报错npm i sass-loader@10 -D// 安装uview-uinpm install uview-ui@2.0.31
- 全局引入uview js库
main.js
import uView from "uview-ui";Vue.use(uView);
- 全局引入uView的全局SCSS主题文件
/* uni.scss */@import 'uview-ui/theme.scss';
- 全局引入uview 基础样式
// 在App.vue中首行的位置引入,注意给style标签加入lang="scss"属性<style lang="scss">/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */@import "uview-ui/index.scss";</style>
- 配置easycom模式引入uview组件
// pages.json{"easycom": {"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"},// 此为本身已有的内容"pages": [// ......]}
- 配置vue.config.js文件
// vue.config.js,如没有此文件则手动创建 放入项目根目录下module.exports = {transpileDependencies: ['uview-ui']}
- 使用uview组件
<u-button type="primary" :disabled="disabled" text="禁用"></u-button><u-button type="primary" loading loadingText="加载中"></u-button><u-button type="primary" icon="map" text="图标按钮"></u-button><u-button type="primary" shape="circle" text="按钮形状"></u-button><u-button type="primary" size="small" text="大小尺寸"></u-button>
-
文档参考与bug处理
官方文档配置参考
实例项目参考
注意点:cnpm 安装会出现包配置错误
2.2 使用uni原生ui插件
- 安装sass 及 sass-loader
npm i sass -D
npm i sass-loader@10.1.1 -D
- 安装uni-ui
npm install @dcloudio/uni-ui
- 使用
<script>import {uniBadge} from '@dcloudio/uni-ui'export default {components: {uniBadge}}
</script>
2.3 uni-modules
- 通过 uni_modules(插件模块化规范)单独安装组件,或通过 uni_modules 按需安装某个组件

- node_modules与uni_modules区别

- 具体引入参考
2.4 vuex使用
- vuex是基于vue框架的一个状态管理库。可以管理复杂应用的数据状态,比如兄弟组件的通信、多层嵌套的组件的传值等等。核心概念 State、Getter、Mutation、Action、Module。

- 安装
npm install vuex --save 先安装依赖
- 新建 store/index.js
// 导入 vue 和 vuex
import Vue from 'vue'
import Vuex from 'vuex'// 以插件形式使用 vuex
Vue.use(Vuex)// Vuex.Store 构造器选项
const store = new Vuex.Store({state: {username: 'foo',age: 18,},
})export default store
- main.js 引入
import store from './store';
Vue.config.productionTip = false
Vue.use(uView);
App.mpType = 'app'const app = new Vue({// 把 store 的实例注入所有的子组件store,...App
})
app.$mount()
- 具体使用说明参考 vuex
3.跨平台兼容
3.1 条件编译
- 不同的平台展示不同特性与功能
- 条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。
- 官网配置参考
以
#ifdef 或 #ifndef 加 %PLATFORM%开头,以#endif结尾。
#ifdef:if defined 仅在某平台存在
#ifndef:if not defined 除了某平台均存在
%PLATFORM%:平台名称
- uni.getSystemInfo 区分
Android和iOS
<template><!-- 条件编译支持样式,支持js与Ui --><view class="content"><!-- #ifdef H5 --><image class="logo" src="/static/logo.png"></image><view class="text-area"><text class="title">{{title}}</text></view><!-- 条件编译 --><!-- #endif --><!-- APP-PLUS有 多端用或|| --><!-- #ifndef APP-PLUS || H5 --><!-- #endif --></view>
</template><script>export default {data() {return {title: 'Hello'}},onLoad() {// 方法里面也一样使用// #ifdef APP-PLUS // #endifswitch(uni.getSystemInfoSync().platform){case 'android' :console.log('运行在Android上')break;case 'ios' :console.log('运行在IOS上')break;default :console.log('运行在开发者工具上')break;} },}
</script>
4.API 使用
4.1 正逆参数传递
- index.vue
<template><view class="content"><navigator url="/pages/home/home?name=admin">跳转</navigator><button @click="hyChange()">事件跳转</button></view>
</template><script>export default {data() {return {title: 'Hello'}},methods: {hyChange() {uni.navigateTo({url: '/pages/home/home?name=admin&psd=12346678',// 触发这个事件成功时的传递参数success(res) {res.eventChannel.emit('hyPageHome', {data: '触发成功跳转传递的事件'})},events: {backEvent(data) {console.log('逆序参数', data);}}})}}}
</script><style>
</style>
- home.vue
<template><view><button type="default">home</button><button type="warn" size="mini" @click="hyIndex">逆向传递</button></view>
</template><script>export default {data() {return {}},// 正向传参onLoad(options) {console.log('@参数', options);const eventChannel = this.getOpenerEventChannel()eventChannel.on('hyPageHome', res => {console.log(res);})},methods: {// 逆向传参hyIndex() {uni.navigateBack()const eventChannel = this.getOpenerEventChannel()eventChannel.emit('backEvent', {name: 'admin',pad: 'password'})}}}
</script><style></style>
5. 接口封装
- 参考
6. 多端打包
3.1 微信小程序
3.2 打包App
3.2.1 自有证书-申请
- 下载安装jre并配置环境变量 (这里不做配置)
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
- 使用keytool -genkey命令生成证书
estalias是后面在hbuilder上要填的 证书别名
test.keystore是后面在hbuilder上要填的 证书文件
自己输入的密钥库口令 是后面在hbuilder上要填的 证书私钥密码 (比如123456)

3. 查看证书
keytool -list -v -keystore test.keystore
- 配置
注意导入的证书文件是test.keystore
3.2.3 离线打包配置
参考官网离线打包配置
参考文章
christian-dong作者写的uniapp 项目实践
Zhou_慧写的接口封装
相关文章:
uniapp开发(由浅到深)
文章目录 1. 项目构建1.1 脚手架构建1.2 HBuilderX创建 uni-app项目步骤: 2 . 包依赖2.1 uView2.2 使用uni原生ui插件2.3 uni-modules2.4 vuex使用 3.跨平台兼容3.1 条件编译 4.API 使用4.1 正逆参数传递 5. 接口封装6. 多端打包3.1 微信小程序3.2 打包App3.2.1 自有…...
QT-基于Buildroot构建系统镜像下实现QT开发
QT-基于Buildroot构建系统镜像下实现QT开发 BuildRootUboot的仓库地址和commit idKernel 的仓库地址和commit id BuildRoot已编译库在Windows上的Create上创建项目编译QT项目 BuildRoot 这部分按照100ask官网的教程走即可: Uboot的仓库地址和commit id https://e.coding.net/…...
优雅地处理RabbitMQ中的消息丢失
目录 一、异常处理 二、消息重试机制 三、错误日志记录 四、死信队列 五、监控与告警 优雅地处理RabbitMQ中的消息丢失对于构建可靠的消息系统至关重要。下面将介绍一些优雅处理消息丢失的方案,包括异常处理、重试机制、错误日志记录、死信队列和监控告警等。…...
Vim入门教程vimtutor1.7总结
vimtutor命令可以打开教程文档 原文特别提示 ⬇⬇⬇ 特别提示:切记您要在使用中学习,而不是在记忆中学习 Vim模式 正常模式(Normal Mode):默认模式,可以使用基础命令进行操作命令模式(Command…...
Stephen Wolfram:让 ChatGPT 真正起作用的是什么?
What Really Lets ChatGPT Work? 让 ChatGPT 真正起作用的是什么? Human language—and the processes of thinking involved in generating it—have always seemed to represent a kind of pinnacle of complexity. And indeed it’s seemed somewhat remarkabl…...
CTF-Flask-Jinja2(持续更新)
放心,我会一直陪着你 一.知识一.在终端的一些指令1.虚拟环境2.docker容器二.SSTI相关知识介绍1.魔术方法2.python如何执行cmd命令3.SSTI常用注入模块(1)文件读取(2)内建函数eval执行命令(3)os模块执行命令(4)importlib类执行命令(5)linecache函数执行命令(6)subproc…...
linux文件I/O之 fcntl() 函数用法:设置文件的 flags、设置文件锁(记录锁)
头文件和函数声明 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); 函数功能 获取、设置已打开文件的属性 返回值 成功时返回根据 cmd 传递的命令类型的执行结,失败时返回 -1,并设置 errno 为相…...
黑马项目一完结后阶段面试45题 JavaSE基础部分20题(一)
一、Java数据类型 基本数据类型——四类八种 整数型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 String字符串 类(对象) 接口类型 数组类型 枚举类型 二、面向对象的三大特性 1.封装 把同一类事物…...
(一)创建型设计模式:3、建造者模式(Builder Pattern)
目录 1、建造者模式含义 2、建造者模式的讲解 3、使用C实现建造者模式的实例 4、建造者模式的优缺点 5、建造者模式VS工厂模式 1、建造者模式含义 The intent of the Builder design pattern is to separate the construction of a complex object from its representatio…...
指针进阶大冒险:解锁C语言中的奇妙世界!
目录 引言 第一阶段:🔍 独特的字符指针 什么是字符指针? 字符指针的用途 演示:使用字符指针拷贝字符串 字符指针与字符串常量 小试牛刀 第二阶段:🎯 玩转指针数组 指针数组是什么? 指针…...
2.0 Maven基础
1. Maven概述 Maven概念 Apache Maven是一个软件项目管理工具,将项目开发和管理过程抽象程一个项目对象模型(POM,Project Object Model)。 Maven作用 项目构建 提供标准的、跨平台的自动化项目构建方式。 依赖管理 方便快捷…...
在Linux虚拟机内配置nginx以及docker
目录 1、nginx源码包编译以及安装依赖 1、配置安装所需的编译环境 2、安装函数库(pcre、zlib、openssl) 2、安装nginx 1、获取源码包 2、解压编译 3、启动nginx服务 1、关闭防火墙 2、运行nginx 3、使用本地浏览器进行验证 3、安装docker 1、…...
数据结构-带头双向循环链表的实现
前言 带头双向循环链表是一种重要的数据结构,它的结构是很完美的,它弥补了单链表的许多不足,让我们一起来了解一下它是如何实现的吧! 1.节点的结构 它的节点中存储着数据和两个指针,一个指针_prev用来记录前一个节点…...
android Ndk Jni动态注册方式以及静态注册
目录 一.静态注册方式 二.动态注册方式 三.源代码 一.静态注册方式 1.项目名\app\src\main下新建一个jni目录 2.在jni目录下,再新建一个Android.mk文件 写入以下配置 LOCAL_PATH := $(call my-dir)//获取当前Android.mk所在目录 inclu...
MySQL中的索引
1.2.MySQL中的索引 InnoDB存储引擎支持以下几种常见的索引:B树索引、全文索引、哈希索引,其中比较关键的是B树索引 1.2.1.B树索引 InnoDB中的索引自然也是按照B树来组织的,前面我们说过B树的叶子节点用来放数据的,但是放什么数…...
idea中如何处理飘红提示
idea中如何处理飘红提示 在写sql时,总是会提示各种错误 查找资料,大部分都是说关提示,这里把错误提示选择为None即可 关掉以后,也确实不显示任何提示了,但总有一种掩耳盗铃的感觉 这个sms表明明存在,但是还…...
Elasticsearch使用中出现的错误
Elasticsearch使用中出现的错误 1、分页查询异常 在分页的过程中出现了一个问题是当查询的数据超过10000条的时候报了异常: from size must be less than or equal to: [10000]这个问题最快捷的解决方式是增大窗口大小: curl -XPUT http://127.0.0.…...
【IMX6ULL驱动开发学习】01.编写第一个hello驱动+自动创建设备节点(不涉及硬件操作)
目录 一、驱动程序编写流程 二、代码编写 2.1 驱动程序hello_drv.c 2.2 测试程序 2.3 编写驱动程序的Makefile 三、上机实验 3.1 NFS 挂载 3.2 测试示例 一、驱动程序编写流程 构造file_operations结构体 在里面填充open/read/write/ioctl成员 注册file_operations结…...
决策规划仿真平台搭建
决策规划仿真平台搭建 自动驾驶决策规划算法第二章第一节 决策规划仿真平台搭建 这部分的主要难点在于多个软件的连通与适配,环境的搭建总是折磨人的,主要是 4 个软件,各软件版本如下 Visual Studio2017PreScan8.5.0CarSim2019.0MATLAB2019b…...
计算图像哈希SHA-512
1、MATLAB实现 计算图像哈希值SHA-512,在文献[1]提到的算法如下: % Example Code: Create an MD5 crypto-hash of an arbitrary string, "str" % Main class of interest: System.Security.Cryptography.HashAlgorithm% Example String to hash with MD5 %…...
不止于TurtleBot3:在Isaac Sim中为你的自定义机器人模型搭建ROS通信桥梁
超越标准模型:在Isaac Sim中为自定义机器人构建ROS通信的全流程指南 当开发者尝试将实验室中的独特机器人设计接入仿真环境时,往往面临标准教程无法覆盖的挑战。本文将以工业级机器人开发流程为基础,详解如何突破TurtleBot3等预设模型的限制&…...
data-transfer-object集合处理技巧:数组和DTO集合的智能转换
data-transfer-object集合处理技巧:数组和DTO集合的智能转换 【免费下载链接】data-transfer-object Data transfer objects with batteries included 项目地址: https://gitcode.com/gh_mirrors/da/data-transfer-object data-transfer-object是一款功能强大…...
突破性能瓶颈:10个关键技巧优化ASP.NET Core中HTTP.sys编码URL处理性能
突破性能瓶颈:10个关键技巧优化ASP.NET Core中HTTP.sys编码URL处理性能 【免费下载链接】aspnetcore ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux. 项目地址: https://gitcode…...
在线游戏手柄检测工具:三步快速诊断手柄按键与摇杆问题
在线游戏手柄检测工具:三步快速诊断手柄按键与摇杆问题 【免费下载链接】gamepadtest Gamepad API Test 项目地址: https://gitcode.com/gh_mirrors/ga/gamepadtest 还在为游戏手柄按键失灵、摇杆漂移而烦恼吗?这款免费的在线游戏手柄测试工具能帮…...
AD21 PCB设计避坑指南:模块复用中Channel Offset设置与PCB List高效操作
AD21 PCB模块复用实战:Channel Offset精准配置与PCB List高阶技巧 在复杂PCB设计项目中,模块复用功能往往能节省70%以上的重复布局时间——但当你在Altium Designer 21中尝试复用一个经过验证的模块时,是否遇到过明明按教程操作却始终失败的困…...
Qt源码编译避坑指南:ARM64平台下解决OpenGL测试失败、中文乱码及超长编译时间
Qt源码编译ARM64平台深度优化:解决OpenGL异常、中文乱码与编译效率瓶颈 麒麟系统特有的图形库兼容性问题往往让开发者措手不及。当你在飞腾D2000处理器上执行./configure时突然弹出"the opengl functionality tests failed"红色警告,这背后可能…...
如何彻底清理macOS应用残留?Pearcleaner给你答案
如何彻底清理macOS应用残留?Pearcleaner给你答案 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经遇到过这样的困扰:删除了…...
AI专著撰写高效法:AI工具加持,20万字专著迅速成型!
学术专著创作困境与AI工具助力 学术专著的创作并非易事,它不仅仅关乎能否完成写作,更重要的是能否实现出版和获得认可。在当前的出版市场上,学术专著吸引的读者群体相对较小,这使得出版社在评估选题的学术价值时变得格外严谨&…...
机械识图:剖视图
视图主要用于表达机件的外部形状和结构,当机件的内部形状和结构(简称为内形)比较复杂时,若采用视图表示,在某些视图中就会出现较多的虚线,既不便于读图和标注尺寸,图面也不清晰。剖视图的形成 假…...
FJSP研究入门:除了跑算法,你更该懂的Benchmark数据集(MK系列/Kacem系列详解)
FJSP研究入门:经典Benchmark数据集深度解析与选型指南 1. 柔性作业车间调度问题概述 在制造业数字化转型浪潮中,柔性作业车间调度问题(Flexible Job-shop Scheduling Problem, FJSP)已成为工业工程与运筹学交叉领域的研究热点。…...

