使用总结
- 本来想做一个记录日常数据的应用,主要在Android端使用,后来发现在uniapp中使用sqllite数据库不是像原生中那样简单(所以当前准备去进行另一个路线,就是给我使用的电脑都安装一个portalble的服务端,用来记录数据,这样也不会占用手机的空间了)。当前的使用体验如下:
- 考虑到兼容性问题,HBuilder比较适合写UI加服务端存储的项目(各种小程序,网页商城)(当然其他功能也可以进行uniapp的安卓原生插件开发或者与原生Android交互传递数据)
- Hbuilder编辑器在使用打包时要进行登录,手机绑定。使用中还出现了以下问题:
- 本地打包3.1.10版本起需要申请 Appkey。
基础
- 官方文档: https://uniapp.dcloud.net.cn/quickstart.html
重要组成 | 说明 | 注释 |
---|---|---|
vue的基础语法 | 插值和数据绑定,条件与循环等 | 重要 |
App.vue | 应用入口文件,监听应用生命周期、配置全局样式、配置全局的存储globalData | 处理app启动,切换时的命令,可以不用管 |
main.js/main.uts | 初始化vue实例、定义全局组件、使用需要的插件如 i18n、vuex | import作用 |
pages.json | 页面管理,pages数组中第一项表示应用启动页 | 重要配置文件 |
vue.config.js | 是一个可选的配置文件 | |
vite.config.js | 是一个可选的配置文件 | |
代码主要复用方式 | 认识Vue 的 export、export default、import | 重要,例子 |
各种控件 | 比如label控件 | 重要 |
uni.scss | 整体控制应用的风格 | 使用<style lang="scss"> |
存储 | uniapp本地kv存储:uni.getStorageSync | |
父子组件 | props传递值 | 例子 |
Vue.mixin | 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。 | 提高复用性,在全局范围内共享代码 |
uView组件库 | uni-app 分不清的全局变量this, uni, $u, vm, uni.$u, this.$u,API集中管理:uni.$u.api. | this.$u.api.register(data) =>http://192.168.0.30:8000/api/register |
状态管理Vuex | 状态管理模式 | this.$store.dispatch:调取store里的user.js的login方法 |
插件 | 快速实现各种功能 | 时间格式化插件dayjs,Hbuilder使用tailwindcss |
兼容性
- 比如文件系统 uni.getFileSystemManager(),app平台需要使用uni-app x支持,另见,但是uni-app x是用的uts语言(uni-app x 没有使用js和webview,它基于 uts 语言。在App端,uts在iOS编译为swift、在Android编译为kotlin,完全达到了原生应用的功能、性能。并且uni-app x不支持vue2,新基座名称默认为uni-app x(之前叫HBuilder))。
例子
- 各端兼容问题,比如以下代码无法在安卓端运行
<template><view class="container"><button @click="createAndWriteTxt">创建并写入txt文件</button></view>
</template><script>
export default {methods: {createAndWriteTxt() {// 创建文件内容const content = "Hello, this is a txt file content.";// 创建Blob对象const blob = new Blob([content], { type: "text/plain" });// 创建下载链接const link = document.createElement("a");link.href = URL.createObjectURL(blob);link.download = "example.txt";// 模拟点击下载链接document.body.appendChild(link);link.click();// 移除下载链接document.body.removeChild(link);},},
};
</script><style>
.container {display: flex;justify-content: center;align-items: center;height: 100vh;
}text {font-size: 16px;color: #007aff;text-decoration: underline;cursor: pointer;
}
</style>
CG
-
https://playcode.io/vue
-
https://gitee.com/iamxcd/yq-uniapp
-
基于laravel+uniapp 开发的记账APP
-
最好的 6 个免费天气 API 接口对比测评
-
我为什么要选择flutter
-
AndroPHP是一款Android应用程序,它允许您在Android设备上搭建PHP服务器 : 手机搭建PHP+MYSQL完美运行WordPress
-
【XIAO ESP32S3 sense 通过 ESPHome 与 Home Assistant 连接】
-
第三篇 香橙派的外设开发基础(中)— 串口篇
-
还有一个例子,是可以在网页端运行,但是打包到app无法运行
-
前端
fetch('http://192.168.31.28:5000/upload', {method: 'POST', headers: {'Content-Type': 'application/json',},body: JSON.stringify(data),}).then(response => {window.alert("ok !");}).then(responseData => {// window.alert("sometext2");}).catch(error => {window.alert(error);});
- 后端
from flask import Flask, request
app = Flask(__name__)
from flask_cors import CORS # pip install flask_cors
CORS(app)@app.route('/')
def hello_world():return 'Hello, World!'@app.route('/upload', methods=['POST', 'GET'])
def upload():if request.method == 'POST':content_type = request.headers.get('Content-Type')if content_type and 'application/json' in content_type:user_info = request.get_json(force=True)print(user_info)save_to_text_file(user_info, 'data.txt')else:# Processing form data (as a dictionary)user_info = request.form.to_dict()print(user_info)save_to_text_file(user_info, 'data.txt')return "Data received and saved successfully."else:save_to_text_file("user_info", 'data.txt')return "Data received and saved successfully."def save_to_text_file(data, filename):with open(filename, 'a') as file:if isinstance(data, dict):# Save dictionary datafile.write(str(data)+"\n")elif isinstance(data, str):# Save JSON datafile.write(data+"\n")else:raise ValueError("Unsupported data type. Expecting dict or str (JSON).")
app.run(host='0.0.0.0',port=5000) # 访问 http://127.0.0.1:5000/ 即可