├── Android ├── Fragment │ ├── fragment-add.jpg │ ├── fragment-add:remove-show:hide-attach:detach.jpg │ ├── fragment-attach-detach.jpg │ ├── fragment-remove后台仍然在.jpg │ ├── fragment-replace-backStack.jpg │ ├── fragment-replace.jpg │ ├── fragment-show-hide.jpg │ ├── fragment.jpg │ ├── fragment介绍.jpg │ ├── fragment传递数据.jpg │ ├── fragment生命周期.jpg │ ├── fragment移除.jpg │ ├── 命令行查看当前存在的fragment.jpg │ └── 静态动态Fragment生命周期的区别.jpg ├── Intent │ ├── Intent简单传参.jpg │ ├── intent传参bundle.jpg │ ├── intent传参多bundle.jpg │ ├── intent传参对象.jpg │ └── intent回传数据.jpg ├── README.md ├── android4大组件 │ ├── Activity │ │ ├── A到B界面Activity总结.jpg │ │ ├── A到B界面Activity生命周期jpg.jpg │ │ ├── A到B界面Activity生命周期(SingleTask:SingleTop模式).jpg │ │ ├── A到B界面Activity生命周期(弹出系统对话框).jpg │ │ ├── A到B界面Activity(对话框样式的ActivityB半透明).jpg │ │ ├── A到B界面Activity(对话框样式的ActivityB透明).jpg │ │ ├── activity生命周期.jpg │ │ ├── activity生命周期使用建议.jpg │ │ └── activity生命周期意义.png │ ├── Broadcast Receiver │ │ ├── README.md │ │ ├── 动态广播VS静态广播 │ │ │ ├── 动态广播的注册和使用.jpg │ │ │ ├── 静态广播和动态广播.jpg │ │ │ ├── 静态广播的注册与使用.jpg │ │ │ └── 静态广播的限制.jpg │ │ ├── 广播Broadcast-发送广播.jpg │ │ ├── 广播Broadcast-广播接收.jpg │ │ ├── 广播Broadcast概念.jpg │ │ ├── 广播Broadcast组成.jpg │ │ ├── 有序广播VS无序广播 │ │ │ ├── 修改有序广播.jpg │ │ │ ├── 修改有序广播1.jpg │ │ │ ├── 截断有序广播.jpg │ │ │ ├── 无序广播的使用.jpg │ │ │ ├── 有序广播和无序广播的区别.jpg │ │ │ └── 有序广播的使用.jpg │ │ └── 本地广播VS全局广播 │ │ │ ├── 本地广播和全局广播概念.jpg │ │ │ ├── 本地广播的使用-注册.jpg │ │ │ ├── 本地广播的使用-解注册和发送.jpg │ │ │ └── 本地广播的接收器.jpg │ ├── Content Provider │ │ ├── ContentProvider.jpg │ │ ├── ContentProvider的基本使用.jpg │ │ └── ContentProvider的组成部分.jpg │ └── Service │ │ ├── Service概念.jpg │ │ ├── Service类型.jpg │ │ ├── 前台Service.jpg │ │ ├── 前台Service使用场景.jpg │ │ ├── 前台Service创建.jpg │ │ ├── 前台Service概念.jpg │ │ ├── 前台Service结束.jpg │ │ ├── 绑定式Service的生命周期.jpg │ │ └── 非绑定式的Service的生命周期.jpg ├── sharedPrefence.jpg ├── url&uri.jpg └── 使用过的开发库.md ├── Flutter ├── AliFlutter体系化建设和实践.pdf ├── AliFlutter直播.md ├── Flutter技术解析.pdf ├── README.md ├── flame游戏框架.png ├── web.png ├── 反射.md └── 我的pub库.md ├── README.md ├── React Native ├── README.md ├── RN长列表重用.png └── promise解析.md ├── docker-learn ├── README.md ├── Volume.jpg ├── dockerfile常用命令1.jpg ├── dockerfile语法0.jpg ├── 常用命令0.jpg └── 常用命令1.jpg ├── iOS ├── KVC&KVO.md ├── README.md ├── block.md ├── copy.md ├── iOS-多线程.md ├── weak.md ├── 内存管理.md └── 分类&扩展.md ├── just_relax.md ├── uniapp └── README.md ├── 各端生命周期图 ├── README.md ├── flutter生命周期.png ├── iOS-viewController生命周期.jpg ├── iOS启动原理图.png ├── react(新16.4)生命周期.png ├── react-native生命周期.jpg ├── vue生命周期.png └── 小程序生命周期.png ├── 声明式UI&命令式UI.md ├── 微信小程序 ├── README.md ├── mini-canvas │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── mini_canvas.png │ ├── pages │ │ ├── component │ │ │ └── pz_canvas │ │ │ │ ├── pz_canvas.js │ │ │ │ ├── pz_canvas.json │ │ │ │ ├── pz_canvas.wxml │ │ │ │ └── pz_canvas.wxss │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── logs │ │ │ ├── logs.js │ │ │ ├── logs.json │ │ │ ├── logs.wxml │ │ │ └── logs.wxss │ ├── project.config.json │ ├── readMe.md │ ├── sitemap.json │ └── utils │ │ └── util.js ├── mini_custom_previewImage │ ├── README.md │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── images │ │ ├── one.jpeg │ │ ├── three.jpeg │ │ └── two.jpeg │ ├── pages │ │ ├── components │ │ │ └── pz_previewImage │ │ │ │ ├── pz_previewImage.js │ │ │ │ ├── pz_previewImage.json │ │ │ │ ├── pz_previewImage.wxml │ │ │ │ └── pz_previewImage.wxss │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── logs │ │ │ ├── logs.js │ │ │ ├── logs.json │ │ │ ├── logs.wxml │ │ │ └── logs.wxss │ ├── project.config.json │ ├── result.gif │ ├── sitemap.json │ └── utils │ │ └── util.js ├── mini_event │ ├── README.md │ ├── event.js │ └── 使用.js └── taro │ ├── README.md │ ├── login.jpg │ ├── myApp │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── .idea │ │ ├── .gitignore │ │ ├── inspectionProfiles │ │ │ └── Project_Default.xml │ │ ├── modules.xml │ │ ├── myApp.iml │ │ └── vcs.xml │ ├── .swc │ │ └── plugins │ │ │ └── v4 │ │ │ └── 200063c2c798457e0f441f309e564fe9e258e1dcb142b8c6a1df1cbb41ae9bd9 │ ├── babel.config.js │ ├── config │ │ ├── dev.js │ │ ├── index.js │ │ └── prod.js │ ├── package.json │ ├── project.config.json │ ├── project.private.config.json │ ├── project.tt.json │ ├── src │ │ ├── app.config.ts │ │ ├── app.less │ │ ├── app.tsx │ │ ├── assets │ │ │ ├── home.png │ │ │ ├── home_select.png │ │ │ ├── login_bg.png │ │ │ ├── mine.png │ │ │ ├── mine_select.png │ │ │ ├── news.png │ │ │ ├── news_select.png │ │ │ ├── swiper1.jpeg │ │ │ ├── swiper2.jpeg │ │ │ ├── swiper3.jpeg │ │ │ └── swiper4.jpeg │ │ ├── index.html │ │ ├── pages │ │ │ ├── home │ │ │ │ ├── index.config.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── login │ │ │ │ ├── index.config.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── mine │ │ │ │ ├── index.config.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── news │ │ │ │ ├── index.config.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── news_details │ │ │ │ ├── index.config.ts │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ ├── service │ │ │ ├── service_method.ts │ │ │ ├── service_provider.ts │ │ │ └── service_url.ts │ │ ├── store │ │ │ ├── counter.ts │ │ │ └── login.ts │ │ └── utils │ │ │ └── constans.ts │ ├── tsconfig.json │ ├── types │ │ └── global.d.ts │ └── yarn.lock │ ├── register.jpg │ ├── taro截图1.jpg │ ├── taro截图2.jpg │ ├── taro截图3.jpg │ ├── taro截图4.jpg │ ├── taro截图5.jpg │ ├── taro版本.jpg │ └── 使用.jpg ├── 杂类 ├── README.md ├── Socket.md └── 可持续集成相关篇.md └── 鸿蒙 └── README.md /Android/Fragment/fragment-add.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-add.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment-add:remove-show:hide-attach:detach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-add:remove-show:hide-attach:detach.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment-attach-detach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-attach-detach.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment-remove后台仍然在.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-remove后台仍然在.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment-replace-backStack.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-replace-backStack.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment-replace.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-replace.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment-show-hide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment-show-hide.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment介绍.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment介绍.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment传递数据.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment传递数据.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment生命周期.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment生命周期.jpg -------------------------------------------------------------------------------- /Android/Fragment/fragment移除.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/fragment移除.jpg -------------------------------------------------------------------------------- /Android/Fragment/命令行查看当前存在的fragment.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/命令行查看当前存在的fragment.jpg -------------------------------------------------------------------------------- /Android/Fragment/静态动态Fragment生命周期的区别.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Fragment/静态动态Fragment生命周期的区别.jpg -------------------------------------------------------------------------------- /Android/Intent/Intent简单传参.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Intent/Intent简单传参.jpg -------------------------------------------------------------------------------- /Android/Intent/intent传参bundle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Intent/intent传参bundle.jpg -------------------------------------------------------------------------------- /Android/Intent/intent传参多bundle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Intent/intent传参多bundle.jpg -------------------------------------------------------------------------------- /Android/Intent/intent传参对象.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Intent/intent传参对象.jpg -------------------------------------------------------------------------------- /Android/Intent/intent回传数据.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/Intent/intent回传数据.jpg -------------------------------------------------------------------------------- /Android/README.md: -------------------------------------------------------------------------------- 1 | [ Android学习历程demo ]( https://github.com/shaoting0730/android_learn_demo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/android_learn_demo.svg?style=social&label=Stars)](https://github.com/shaoting0730/flutter_video_audio_news)
2 | [ mvnrepository三方库查询 ]( https://mvnrepository.com/ )
3 | minSdkVersion <= targetSdkVersion <= compileSdkVersion
4 | [ adb 命令大全 ]( https://cloud.tencent.com/developer/article/2342099 ) adb shell dumpsys activity 包名
5 | [ gradle版本-插件版本 ]( https://developer.android.google.cn/build/releases/gradle-plugin#updating-plugin )
6 | [ gradle下载 ]( https://services.gradle.org/distributions/ )
7 | [ 使用过得开发库 ]( https://github.com/shaoting0730/mobile-learn/blob/master/Android/%E4%BD%BF%E7%94%A8%E8%BF%87%E7%9A%84%E5%BC%80%E5%8F%91%E5%BA%93.md )
8 | [ Android UI文档 ]( https://developer.android.google.cn/develop/ui/views/layout/declaring-layout?hl=zh-cn )
9 | [ Android 系统源码分析-前身 ]( https://github.com/sucese/android-open-source-project-analysis )
10 | [ Android 系统源码分析 ]( https://github.com/BeesX/BeesAndroid )
11 | [ Activity 生命周期 ]( https://developer.android.google.cn/guide/components/activities/activity-lifecycle?hl=zh-cn )
12 | [ Jetpack Compose 使用入门 ]( https://developer.android.google.cn/jetpack/compose/documentation?hl=zh-cn )
13 | [ compose 课程 ]( https://developer.android.google.cn/jetpack/compose?hl=zh-cn )
14 | [ 最佳实践:Android应用中的网络请求和数据缓存 ]( https://blog.csdn.net/u011897062/article/details/130243052 )
15 | [ Android activity生命周期 ]( https://github.com/shaoting0730/mobile-learn/blob/master/Android/activity%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.jpg )
16 | [ Android fragment生命周期 ]( https://github.com/shaoting0730/mobile-learn/blob/master/Android/fragment%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.jpg )
17 | [ ViewBinding的使用 ]( https://developer.android.com/topic/libraries/view-binding?hl=zh-cn#groovy )
18 | -------------------------------------------------------------------------------- /Android/android4大组件/Activity/A到B界面Activity总结.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/A到B界面Activity总结.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/A到B界面Activity生命周期jpg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/A到B界面Activity生命周期jpg.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/A到B界面Activity生命周期(SingleTask:SingleTop模式).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/A到B界面Activity生命周期(SingleTask:SingleTop模式).jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/A到B界面Activity生命周期(弹出系统对话框).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/A到B界面Activity生命周期(弹出系统对话框).jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/A到B界面Activity(对话框样式的ActivityB半透明).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/A到B界面Activity(对话框样式的ActivityB半透明).jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/A到B界面Activity(对话框样式的ActivityB透明).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/A到B界面Activity(对话框样式的ActivityB透明).jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/activity生命周期.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/activity生命周期.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/activity生命周期使用建议.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/activity生命周期使用建议.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Activity/activity生命周期意义.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Activity/activity生命周期意义.png -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/README.md: -------------------------------------------------------------------------------- 1 | ## 按照传播范围划分 2 | ### 本地广播 和 全局广播 3 | ## 按照传播接收器的注册方式划分 4 | ### 静态广播 和 动态广播 5 | ## 按照传播接受顺序划分 6 | ### 无序广播 和 有序广播 7 | -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/动态广播的注册和使用.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/动态广播的注册和使用.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/静态广播和动态广播.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/静态广播和动态广播.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/静态广播的注册与使用.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/静态广播的注册与使用.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/静态广播的限制.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/动态广播VS静态广播/静态广播的限制.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/广播Broadcast-发送广播.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/广播Broadcast-发送广播.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/广播Broadcast-广播接收.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/广播Broadcast-广播接收.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/广播Broadcast概念.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/广播Broadcast概念.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/广播Broadcast组成.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/广播Broadcast组成.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/修改有序广播.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/修改有序广播.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/修改有序广播1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/修改有序广播1.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/截断有序广播.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/截断有序广播.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/无序广播的使用.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/无序广播的使用.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/有序广播和无序广播的区别.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/有序广播和无序广播的区别.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/有序广播的使用.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/有序广播VS无序广播/有序广播的使用.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播和全局广播概念.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播和全局广播概念.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播的使用-注册.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播的使用-注册.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播的使用-解注册和发送.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播的使用-解注册和发送.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播的接收器.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Broadcast Receiver/本地广播VS全局广播/本地广播的接收器.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Content Provider/ContentProvider.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Content Provider/ContentProvider.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Content Provider/ContentProvider的基本使用.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Content Provider/ContentProvider的基本使用.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Content Provider/ContentProvider的组成部分.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Content Provider/ContentProvider的组成部分.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/Service概念.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/Service概念.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/Service类型.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/Service类型.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/前台Service.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/前台Service.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/前台Service使用场景.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/前台Service使用场景.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/前台Service创建.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/前台Service创建.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/前台Service概念.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/前台Service概念.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/前台Service结束.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/前台Service结束.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/绑定式Service的生命周期.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/绑定式Service的生命周期.jpg -------------------------------------------------------------------------------- /Android/android4大组件/Service/非绑定式的Service的生命周期.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/android4大组件/Service/非绑定式的Service的生命周期.jpg -------------------------------------------------------------------------------- /Android/sharedPrefence.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/sharedPrefence.jpg -------------------------------------------------------------------------------- /Android/url&uri.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Android/url&uri.jpg -------------------------------------------------------------------------------- /Android/使用过的开发库.md: -------------------------------------------------------------------------------- 1 | > [ 网络库okhttp ]( https://github.com/square/okhttp )
2 | > [ okhttputils-okhttp辅助类(已停止维护) ]( https://github.com/hongyangAndroid/okhttputils )
3 | > [ 序列化 gson ]( https://github.com/google/gson )
4 | > [ 下拉刷新、加载更多 ]( https://github.com/android-cjj/Android-MaterialRefreshLayout )
5 | > [ 轮播 ]( https://github.com/youth5201314/banner )
6 | > [ EventBus ]( https://github.com/greenrobot/EventBus )
7 | > [ 沉浸式导航栏 ]( https://github.com/jgilfelt/SystemBarTint )
8 | 9 | -------------------------------------------------------------------------------- /Flutter/AliFlutter体系化建设和实践.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Flutter/AliFlutter体系化建设和实践.pdf -------------------------------------------------------------------------------- /Flutter/AliFlutter直播.md: -------------------------------------------------------------------------------- 1 | # 第一批次 2 | [ Flutter技术解析与实践 ]( https://github.com/shaoting0730/mobile-learn/blob/master/Flutter%E6%8A%80%E6%9C%AF%E8%A7%A3%E6%9E%90.pdf )
3 | 🎉第一期直播回放:http://mudu.tv/watch/5466337
4 | 「AliFlutter客户端研发体系概览」PPT:https://files.alicdn.com/tpsservice/89ab52b6cec155a86578e0aa4c8e4c08.pdf
5 | 「闲鱼研发框架应用和探索」PPT:https://files.alicdn.com/tpsservice/2a6760dd0ffb62678d0bde1e76d0b1f8.pdf
6 | 🎉第二期直播回放:http://mudu.tv/watch/5624777
7 | 「AliFlutter图片解决方案与优化」PPT:https://files.alicdn.com/tpsservice/db6a840f7ac7a8e3d5bde69c401bcfd5.pdf
8 | 「UC Flutter技术实践分享」PPT:https://files.alicdn.com/tpsservice/d324c2a95852b22f1bdf2e60e55670a2.pdf
9 | 🎉第三期直播回放:http://mudu.tv/watch/5708706
10 | 「淘宝特价版 Flutter 实践」PPT:https://files.alicdn.com/tpsservice/009f133282fab1a90063e9b71f019760.pdf
11 | 「基于 Flutter 的 Canvas 探索和应用」PPT:https://files.alicdn.com/tpsservice/374ab08fb192eb527b2968c3a61927b8.pdf
12 | 🎉第四期直播回放:http://mudu.tv/watch/5817421
13 | 「ICBU Flutter探索之路」PPT:https://files.alicdn.com/tpsservice/ab1df267562defb59d2f9ba50fb4b2c5.pdf
14 | 「Flutter 在饿了么的应用与沉淀」PPT:https://files.alicdn.com/tpsservice/568e1747c3f0bb09313a0b1b6a4b4107.pdf
15 | 16 | # 第二批次 17 | 【第一期】Flutter工程化与优化实践
18 | PPT下载:https://files.alicdn.com/tpsservice/bb31e2d33177c80c0e2fb78ff6784cd1.pdf
19 | 视频回放:http://mudu.tv/watch/7236989
20 | 【第二期】
21 | PPT下载:https://files.alicdn.com/tpsservice/23aaeefbb6bdb2794f0977aaa939a133.pdf
22 | 视频回放:http://mudu.tv/watch/7237244
23 | 【第三期】
24 | PPT下载:https://files.alicdn.com/tpsservice/2a6ad62c78044fa28c366c4b0a6b8573.pdf
25 | 视频回放:http://mudu.tv/watch/7237278
26 | 【第四期】
27 | PPT下载:https://files.alicdn.com/tpsservice/53d5932de38f825e8c89a43c7095cfca.pdf
28 | 视频回放:http://mudu.tv/watch/7237346
29 | 【第五期】
30 | PPT下载:https://files.alicdn.com/tpsservice/d283475004dfd98e17fcb47b9c499a70.pdf
31 | 视频回放:http://mudu.tv/watch/7237448
32 | 【第六期】
33 | PPT下载:https://files.alicdn.com/tpsservice/0550e09a9fec69ab37dce80c7962a5fe.pdf
34 | 视频回放:http://mudu.tv/watch/7237482
35 | -------------------------------------------------------------------------------- /Flutter/Flutter技术解析.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Flutter/Flutter技术解析.pdf -------------------------------------------------------------------------------- /Flutter/README.md: -------------------------------------------------------------------------------- 1 | [ Flutter 学习历程demo ]( https://github.com/shaoting0730/Flutter_learn_demo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/Flutter_learn_demo.svg?style=social&label=Stars)](https://github.com/shaoting0730/Flutter_learn_demo)
2 | [ 电商项目实战 ]( https://github.com/shaoting0730/flutter_shop ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/flutter_shop.svg?style=social&label=Stars)](https://github.com/shaoting0730/flutter_shop)
3 | [ 项目实战练习 ]( https://github.com/shaoting0730/flutter_video_audio_news ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/flutter_video_audio_news.svg?style=social&label=Stars)](https://github.com/shaoting0730/flutter_video_audio_news)
4 | [ 自己上传的pub包 ]( https://github.com/shaoting0730/mobile-learn/blob/master/Flutter/%E6%88%91%E7%9A%84pub%E5%BA%93.md )
5 | [ flame框架练习:打苍蝇 ]( https://github.com/shaoting0730/langaw ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/langaw.svg?style=social&label=Stars)](https://github.com/shaoting0730/langaw)
6 | [ mpflutter:Flutter 小程序开发框架 ]( https://mpflutter.com/zh/ )  
7 | [ toly_game ]( https://github.com/toly1994328/toly_game )  
8 | [ What's Flutter??? ]( https://zhuanlan.zhihu.com/p/52666477 )  
9 | [ Flutter中国开源项目 ]( https://github.com/flutterchina )  
10 | [ 《Flutter实战·第二版》 ]( https://book.flutterchina.club/#%E7%AC%AC%E4%BA%8C%E7%89%88%E5%8F%98%E5%8C%96 )  
11 | [ gskinnerTeam:flutter-folio ]( https://github.com/gskinnerTeam/flutter-folio )  
12 | [ gskinnerTeam:flutter-wonderous-app ]( https://github.com/gskinnerTeam/flutter-wonderous-app )
13 | [ 张风捷特烈:FlutterUnit ]( https://github.com/toly1994328/FlutterUnit?tab=readme-ov-file )
14 | [ 张风捷特烈:toly_game -Flame教程 ]( https://github.com/toly1994328/toly_game )
15 | [ 闲鱼技术:Flutter专栏 ]( https://www.yuque.com/xytech/flutter )
16 | [ 闲鱼技术:怎样写好Flutter代码 ](https://mp.weixin.qq.com/s/Xsp4pdxqdyGovXQmXcKk7A )
17 | [ 谷歌中国B站-Flutter Engage 主题演讲 ]( https://www.bilibili.com/medialist/play/ml1195151358/BV125411N7AU )
18 | [ 谷歌中国-微信公众号 ]( https://mp.weixin.qq.com/s/lc58-tWSJlkRvT6veL17KQ )
19 | [ Flutter社区-微信公众号 ]( https://mp.weixin.qq.com/s/DOUELDqCD5MlgGfW7bMpEw )
20 | [ Dark2 中文文档 ]( https://www.kancloud.cn/marswill/dark2_document )  
21 | [ Flutter中文书 ]( https://book.flutterchina.club/ )
22 | [ flutter-低代码flutterflow ]( https://flutterflow.io/ )
23 | [ 空安全 ](https://dart.cn/null-safety )
24 | [ 空安全1 ](https://liujunmin.com/flutter/null_safety.html )
25 | [ Dart VM 简介 ]( https://annatarhe.github.io/2019/01/31/introduction-to-dart-vm.html )
26 | [ 一个很棒的Flutter学习资源:由crazycodeboy提供 ]( https://github.com/crazycodeboy/awesome-flutter-cn#%E7%BB%84%E4%BB%B6 )
27 | [ Flutter 核心技术与实战 ]( https://www.kancloud.cn/alex_wsc/flutter_demo/1559549 )
28 | [ Flutter 跨平台演进及架构开篇-头条 ]( http://gityuan.com/flutter/ )
29 | [ Flutter原理与实践-美团 ]( https://tech.meituan.com/2018/08/09/waimai-flutter-practice.html )
30 | [ 一条上岸小咸鱼·掘金 ]( https://juejin.cn/user/193956140559304/posts )
31 | [ 零、GSY历程·GitBook ]( https://guoshuyu.cn/home/wx/Flutter-0.html )
32 | [ Vadaski大佬的简书 ]( https://www.jianshu.com/u/f0cd06a06592 )
33 | [ 安卓小哥的掘金 ]( https://juejin.cn/user/1591748567765480/posts )
34 | [ 恋猫de小郭的掘金 ]( https://juejin.cn/user/817692379985752 )
35 | [ xubaolin的掘金 ]( https://juejin.cn/user/1621148729870391/posts )
36 | [ 安卓小哥的掘金 ]( https://juejin.cn/user/1591748567765480/posts )
37 | [ 深入理解Flutter引擎架构--Gityuan ]( https://xiaozhuanlan.com/gityuan_flutter )
38 | [ 淘系技术 ]( https://blog.csdn.net/Taobaojishu )
39 | [ 反射 ]( https://github.com/shaoting0730/mobile-learn/blob/master/%E5%8F%8D%E5%B0%84.md )
40 | [ 声明式UI&命令式UI ](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%A3%B0%E6%98%8E%E5%BC%8FUI%26%E5%91%BD%E4%BB%A4%E5%BC%8FUI.md )
41 | [ 全面理解flutter-知乎 ]( https://zhuanlan.zhihu.com/p/106221577 )
42 | [ AliFlutter体系化建设和实践 pdf ]( https://files.flutter-io.cn/events/gdd2018/Profiling_your_Flutter_Apps.pdf )
43 | [ 国内大厂在移动端跨平台的框架接入分析 ]( https://juejin.im/post/5ed45cf2e51d457858775d01 )
44 | [ 老孟程序员-Flutter 实战入门]( http://laomengit.com/ )
45 | [ Flutter 您需要知道的知识点-公众号:谷歌开发者 ]( https://mp.weixin.qq.com/s/4tdqptBIf4VHrjWmHeUKjA )
46 | [ Flutter 闲鱼技术-语雀 ]( https://www.yuque.com/xytech/flutter )
47 | [ Flutter 闲鱼技术-云栖 ]( https://yq.aliyun.com/users/rtcqgnmjifzda )
48 | [ 猫哥-wiki ]( https://wiki.ducafecat.tech/ )
49 | [ jimi-深入浅出组件篇 ]( https://www.liujunmin.com/categories/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BA%E7%BB%84%E4%BB%B6%E7%AF%87/ )
50 | [ Flutter 闲鱼最佳实践PDF ]( http://c.tb.cn/I3.ZZpRl )
51 | [ Flutter应用如何调试--DevTools介绍 ]( https://www.jianshu.com/p/7d8e5e0679f7 )
52 | [ Flutter应用如何调试--DevTools介绍-ducafecat猫哥 ]( https://mp.weixin.qq.com/s/cehyz8-Qp-RFeGyqYRk0zw )
53 | [ 恋猫月亮的简书 ]( https://www.jianshu.com/u/6e613846e1ea )
54 | [ B站-王叔不秃 ]( https://space.bilibili.com/589533168 )
55 | [ B站-Flutter社区 ]( https://space.bilibili.com/344928717/ )
56 | [ B站-Flutter开源社区 ]( https://www.bilibili.com/video/BV1R14y1w7UB/?spm_id_from=333.788&vd_source=bc5bee468c2cbda6193e66c4288c8c7b )
57 | [ 掘金-张风捷特烈 ]( https://juejin.cn/user/149189281194766/columns)
58 | [ flutter 开发package 发布到pub.dev ]( https://zhoushaoting.com/2022/09/29/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%AD%A6%E4%B9%A0/Flutter~%E5%8F%91%E5%B8%83package%E5%88%B0pub.dev%E5%9B%BE%E6%96%87%E8%AF%A6%E8%A7%A3/ )
59 | [ GoogleFlutter团队XiaoYu:Flutter-Performance-Profiling-and-Theory ]( https://files.flutter-io.cn/events/gdd2018/Profiling_your_Flutter_Apps.pdf )
60 | [[AliFlutter 系列直播&PDF] ]( https://github.com/shaoting0730/mobile-learn/blob/master/Flutter/AliFlutter%E7%9B%B4%E6%92%AD.md)
61 | [[闲鱼研发框架应用和探索]PPT ]( https://files.alicdn.com/tpsservice/2a6760dd0ffb62678d0bde1e76d0b1f8.pdf )
62 | [ Flutter 闲鱼最佳实践直播 ]( 63 | https://appycyfaqcq1951.h5.xiaoeknow.com/content_page/eyJ0eXBlIjoiMiIsInJlc291cmNlX3R5cGUiOjQsInJlc291cmNlX2lkIjoibF81ZGE0M2VlODc1NjQ1X1FHTGlaS1J4IiwiYXBwX2lkIjoiYXBweWNZRmFxY3ExOTUxIiwicHJvZHVjdF9pZCI6IiIsInNoYXJlX3VzZXJfaWQiOiJ1XzVkYTZhYTJkZTc4YjFfUzFLSVFTYlBmTyIsInNoYXJlX3R5cGUiOjEwMCwic2NlbmUiOiLliIbkuqsifQ== )
64 | [ Flutter 技术点:美团技术团队 ]( https://mp.weixin.qq.com/s/cJjKZCqc8UuzvEtxK1BJCw?t=1547530259566&scene=25#wechat_redirect )
65 | [ Flutter 字节跳动直播 ]( https://mp.weixin.qq.com/s/UrWxYgchb-F3AqqzGrYWew )
66 | [ 如何缩减接近 50% 的 Flutter 包体积 ]( https://mp.weixin.qq.com/s/Ls3cDcqjlyOX80PXUO0wRw )
67 | [ 京东:Flutter扩展到类小程序平台 ]( https://github.com/areslabs/flutter_mp/ )
68 | [ Flutter开发插件并发布到pub ]( https://blog.csdn.net/ai_pple/article/details/108535418 )
69 | [ Flutter开发中启用Dart DevTools 连接App进行调试 ]( https://blog.csdn.net/u013560890/article/details/97144248 )
70 | [ 定位Flutter内存问题很难么? ]( https://mp.weixin.qq.com/s/g5MJSvlCH3GcP0DLaRcRiQ )
71 | [ Flutter内存泄漏解决方案 ]( https://mp.weixin.qq.com/s/ck9CAkUGvmBbtE132vmOsw )
72 | [ 从架构到源码:一文了解Flutter渲染机制 ]( https://mp.weixin.qq.com/s/wpU2APDdJdjMYkj5Kz2lTw )
73 | [ flutter使用MVVM ]( https://www.examplecode.cn/2020/05/09/flutter-provider-mvvm/ )
74 | [ 可以使用flutter开发游戏吗??? ]( https://www.bugcatt.com/archives/4 )
75 | [ 见微知著,Flutter在游戏开发的表现及跨平台带来的优势 ]( https://juejin.im/post/6856681993418211336 )
76 | [ flutter 游戏库 ]( https://flutter.dev/games )
77 | [ bonfire库 ]( https://github.com/RafaelBarbosatec/bonfire )
78 | [ flame库 ]( https://github.com/flame-engine/flame )
79 | [ forge2d-物理引擎 ]( https://github.com/flame-engine/forge2d )
80 | [ flame中文网 ]( https://www.flame-cn.com/ )
81 | [ 游戏资源 ]( https://itch.io/game-assets )
82 | [ flet:用Python写flutter ]( https://github.com/flet-dev/flet )
83 | [ 坦克大战小游戏:开发中借鉴了其中的手柄 ]( https://github.com/bladeofgod/tank_combat )
84 | [ MQTT X 桌面客户端 ]( https://mqttx.app/zh )
85 | [ 迁移Flutter项目到空安全的血泪史——有血、有泪、有💩 ]( http://www.debuggerx.com/2021/03/07/migrate-flutter-project-to-null-safety/#%E5%96%84%E7%94%A8-IDE-%E6%8F%90%E7%A4%BA%E5%8A%9F%E8%83%BD%E5%8F%8A%E8%87%AA%E5%8A%A8%E4%BF%AE%E6%AD%A3%E5%8A%9F%E8%83%BD-%E9%80%90%E4%B8%AA%E4%BF%AE%E5%A4%8D%E6%89%80%E6%9C%89%E9%97%AE%E9%A2%98 )
86 | [ Flutter应用如何调试--DevTools介绍(上) ]( https://www.jianshu.com/p/7d8e5e0679f7 )
87 | [ Using the Flutter inspector ]( https://docs.flutter.dev/tools/devtools/inspector )
88 | [ 查看APP所用的库的APP:LibChecker(限安卓) ]( https://github.com/zhaobozhen/LibChecker )
89 | [ 查看APP所用的库的APP:FlutterShark(限安卓) ]( https://play.google.com/store/apps/details?id=com.fluttershark.fluttersharkapp&hl=en_SG )
90 | [ 一文快速带你了解 KMM 、 Compose 和 Flutter 的现状2022-10-28 ]( https://mp.weixin.qq.com/s/rnGm1DQ3otnREjJ5pzIEqA )
91 | [ Flutter for Web 首次首屏优化——JS 分片优化 ]( https://juejin.cn/post/7177202619788558391 )
92 | [ reactivex ]( https://reactivex.io/ )
93 | [ 基于flutter sdk对于OpenHarmony的兼容拓展 ]( https://gitee.com/openharmony-sig/flutter_flutter )
94 | [ Kotlin 多平台移动 vs Flutter:跨平台移动应用开发的终极对决 ]( https://page.om.qq.com/page/OqP2cswIxV0u-7F5wrTuP1eg0 )
95 | -------------------------------------------------------------------------------- /Flutter/flame游戏框架.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Flutter/flame游戏框架.png -------------------------------------------------------------------------------- /Flutter/web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/Flutter/web.png -------------------------------------------------------------------------------- /Flutter/反射.md: -------------------------------------------------------------------------------- 1 | flutter中禁止开发者使用mirrors,无法进行反射 2 | [ Dart基础4-反射 ]( https://www.jianshu.com/p/d68278d19f79 )  
3 | 4 | -------------------------------------------------------------------------------- /Flutter/我的pub库.md: -------------------------------------------------------------------------------- 1 | ### 我的pub库 2 | [ 一些特殊组件 ]( https://pub.dev/packages/st_widgets )
3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## [ Flutter 学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/Flutter ) 2 | ## [ React Native 学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/React%20Native )
3 | ## [ uni app 学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/uniapp )
4 | ## [ 微信小程序原生 学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F )
5 | ## [ iOS 学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/iOS )
6 | ## [ Android 学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/Android )
7 | ## [ 鸿蒙学习历程 ]( https://github.com/shaoting0730/mobile-learn/tree/master/%E9%B8%BF%E8%92%99 )
8 | ## [ 杂类学习 ]( https://github.com/shaoting0730/mobile-learn/tree/master/%E6%9D%82%E7%B1%BB )
9 | 10 | 11 | -------------------------------------------------------------------------------- /React Native/README.md: -------------------------------------------------------------------------------- 1 | [ React Native学习历程demo ]( https://github.com/shaoting0730/React-Native-study ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/React-Native-study.svg?style=social&label=Stars)](https://github.com/shaoting0730/React-Native-study)
2 | [ React Native之原理浅析 ]( http://blog.poetries.top/2019/10/02/rn-yuanli/ )
3 | [ 《React Native 精解与实战》配套源码 ]( https://github.com/ParryQiu/ReactNative-Book-Demo )
4 | [ ReactNative与iOS原生通信原理解析-初始化 ]( https://blog.gaogangsever.cn/react/ReactNative%E4%B8%8EiOS%E5%8E%9F%E7%94%9F%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90-%E5%88%9D%E5%A7%8B%E5%8C%96.html#%E7%BC%98%E8%B5%B7 )
5 | [ promise解析 ]( https://github.com/shaoting0730/mobile-learn/blob/master/React%20Native/promise%E8%A7%A3%E6%9E%90.md )
6 | [ 京东:React Native代码转换成微信小程序代码的转换引擎工具 ]( https://github.com/areslabs/alita )
7 |   [ 关于iOS和React Native的交互 ]( https://github.com/shaoting0730/IOS-native-and-React-native-interaction ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/IOS-native-and-React-native-interaction.svg?style=social&label=Stars)](https://github.com/shaoting0730/IOS-native-and-React-native-interaction)  
8 | [ 关于Android和React Native的简单交互 ]( https://github.com/shaoting0730/androidrn ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/androidrn.svg?style=social&label=Stars)](https://github.com/shaoting0730/androidrn)
9 | [ react-navigation的介绍 ]( https://github.com/shaoting0730/navigationDemo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/navigationDemo.svg?style=social&label=Stars)](https://github.com/shaoting0730/navigationDemo)  
10 | [ react-navigation先登录再Tab ]( https://github.com/shaoting0730/loginRN/tree/master ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/loginRN.svg?style=social&label=Stars)](https://github.com/shaoting0730/loginRN)  
11 | [ react-navigation的基本使用 ]( https://github.com/shaoting0730/react-navigation-use ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/react-navigation-use.svg?style=social&label=Stars)](https://github.com/shaoting0730/react-navigation-use)  
12 | [ React-Native 新推出的列表组件FlatList SectionList 学习 ]( https://github.com/shaoting0730/RN-FlatList-SectionList ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/RN-FlatList-SectionList.svg?style=social&label=Stars)](https://github.com/shaoting0730/RN-FlatList-SectionList)
13 | [ react-native-videoDemo 网络音乐播放器 ]( https://github.com/shaoting0730/react-native-videoDemo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/react-native-videoDemo.svg?style=social&label=Stars)](https://github.com/shaoting0730/react-native-videoDemo)
14 | [ react-native 微博demo ]( https://github.com/shaoting0730/react_native_weibo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/react_native_weibo.svg?style=social&label=Stars)](https://github.com/shaoting0730/react_native_weibo)
15 | [ Mobx与react-navigation的结合使用 ]( https://github.com/shaoting0730/mobx_reactNavigation_demo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/mobx_reactNavigation_demo?style=social&label=Stars)](https://github.com/shaoting0730/mobx_reactNavigation_demo)
16 | [ redux与react-navigation的结合使用 ]( https://github.com/shaoting0730/RN_nav ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/RN_nav?style=social&label=Stars)](https://github.com/shaoting0730/RN_nav)
17 | [ dva与react-navigation的结合使用 ]( https://github.com/shaoting0730/rn_dva ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/rn_dva?style=social&label=Stars)](https://github.com/shaoting0730/rn_dva)
18 | [ 二维码扫描(react-native-camera) ]( https://github.com/shaoting0730/scanDemo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/scanDemo?style=social&label=Stars)](https://github.com/shaoting0730/scanDemo)
19 | [ 前置登录 ]( https://github.com/shaoting0730/lead_the_login/tree/master ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/lead_the_login?style=social&label=Stars)](https://github.com/shaoting0730/lead_the_login/)
20 | [ React Native 七牛0.3.0使用填坑 ]( https://github.com/shaoting0730/qiniuDemo )
21 | [ React Native 收起-展开 模块实现 ]( https://github.com/shaoting0730/suoyisuo )
22 | [ React Native 类似支付宝的应用增删模块的简单实现 ]( https://github.com/shaoting0730/editItem_RN )
23 | [ React Native 推送通知至RN且显示推送内容](https://zhoushaoting.com/2018/09/08/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%AD%A6%E4%B9%A0/React-Native%E6%8E%A8%E9%80%81%E9%80%9A%E7%9F%A5%E8%87%B3RN%E4%B8%94%E6%98%BE%E7%A4%BA%E6%8E%A8%E9%80%81%E5%86%85%E5%AE%B9/)
24 | [ React Native 与Web基本交互](https://github.com/shaoting0730/webRN/tree/master) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/webRN?style=social&label=Stars)](https://github.com/shaoting0730/webRN)
25 | [react_navigation3.X demo](https://github.com/shaoting0730/react_navigation3.x_demo) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/react_navigation3.x_demo?style=social&label=Stars)](https://github.com/shaoting0730/react_navigation3.x_demo)
26 | [react_navigation3.X 与 Mobx结合使用](https://github.com/shaoting0730/mobxRN) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/mobxRN?style=social&label=Stars)](https://github.com/shaoting0730/mobxRN)
27 | [react_native使用自定义字体]( https://github.com/shaoting0730/customFont_RN )
28 | -------------------------------------------------------------------------------- /React Native/RN长列表重用.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/React Native/RN长列表重用.png -------------------------------------------------------------------------------- /React Native/promise解析.md: -------------------------------------------------------------------------------- 1 | [ Promise实现原理1 ](https://www.cnblogs.com/daqianduan/p/4625499.html)
2 | [ Promise实现原理2 ]( https://zhuanlan.zhihu.com/p/58428287?utm_source=wechat_timeline )
3 | -------------------------------------------------------------------------------- /docker-learn/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/docker-learn/README.md -------------------------------------------------------------------------------- /docker-learn/Volume.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/docker-learn/Volume.jpg -------------------------------------------------------------------------------- /docker-learn/dockerfile常用命令1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/docker-learn/dockerfile常用命令1.jpg -------------------------------------------------------------------------------- /docker-learn/dockerfile语法0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/docker-learn/dockerfile语法0.jpg -------------------------------------------------------------------------------- /docker-learn/常用命令0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/docker-learn/常用命令0.jpg -------------------------------------------------------------------------------- /docker-learn/常用命令1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/docker-learn/常用命令1.jpg -------------------------------------------------------------------------------- /iOS/KVC&KVO.md: -------------------------------------------------------------------------------- 1 | [ Objective-C之KVC、KVO ]( https://www.cnblogs.com/kenshincui/p/3871178.html )
2 | 3 | -------------------------------------------------------------------------------- /iOS/README.md: -------------------------------------------------------------------------------- 1 | # iOS 🚅 🏎 🛩 2 | [ iOS-Weekly ]( https://github.com/SwiftOldDriver/iOS-Weekly )
3 | [ 唐巧的博客 ]( https://blog.devtang.com/ )
4 | [iOS-面试题集 ]( https://hit-alibaba.github.io/interview/ )
5 | [iOS-面试题集 ]( https://www.jianshu.com/p/25324d04797d )
6 | [iOS-内存管理 ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86.md )
7 | [iOS-block ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/block.md )
8 | [iOS-多线程 ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/iOS-%E5%A4%9A%E7%BA%BF%E7%A8%8B.md )
9 | [iOS-copy ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/copy.md )
10 | [iOS-weak ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/weak.md )
11 | [iOS-KVC&KVO ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/KVC&KVO.md )
12 | [iOS-分类[category] 扩展[extension] ]( https://github.com/shaoting0730/mobile-learn/blob/master/iOS/%E5%88%86%E7%B1%BB&%E6%89%A9%E5%B1%95.md )
13 | 14 | 15 | ## oc 🚅 🏎 🛩 16 |   [ 学习下弹幕制作 ]( https://github.com/shaoting0730/danMu ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/danMu?style=social&label=Stars)](https://github.com/shaoting0730/danMu)  
17 |   [ 学学习下动画 ]( https://github.com/shaoting0730/iOSAnimationLearn ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/iOSAnimationLearn?style=social&label=Stars)](https://github.com/shaoting0730/iOSAnimationLearn)  
18 |   [ 二维码学习 ]( https://github.com/shaoting0730/QRcode ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/QRcode?style=social&label=Stars)](https://github.com/shaoting0730/QRcode)  
19 | [ 九宫格密码学习 ]( https://github.com/shaoting0730/iOS-nineLock ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/iOS-nineLock?style=social&label=Stars)](https://github.com/shaoting0730/iOS-nineLock)  
20 | [ iOS-touchID-demo ]( https://github.com/shaoting0730/iOS-touchID-demo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/iOS-touchID-demo?style=social&label=Stars)](https://github.com/shaoting0730/iOS-touchID-demo)
21 | [ iOS-Scoket入门 ]( https://github.com/shaoting0730/iOS-Scoket- ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/iOS-Scoket-?style=social&label=Stars)](https://github.com/shaoting0730/iOS-Scoket-)
22 | [ JavaScriptCore.framework的简单使用--JS与OC的交互 ]( https://github.com/shaoting0730/JavaScriptCore_demo ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/JavaScriptCore_demo?style=social&label=Stars)](https://github.com/shaoting0730/JavaScriptCore_demo)
23 | [ iOS系统消息推送机制的实现流程 ]( https://community.jiguang.cn/article/465264 )
24 | [ iOS推送原理详解 ]( https://juejin.cn/post/7074849751472029703 )
25 | 26 | 27 | ## swift 🚅 🏎 🛩 28 | [ swiftUI控件学习历程 ]( https://github.com/shaoting0730/swift_study ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/swift_study?style=social&label=Stars)](https://github.com/shaoting0730/swift_study)
29 |   [ swift制作的音视频demo,已适配swift3+ ]( https://github.com/shaoting0730/swift-video-audio ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/swift-video-audio?style=social&label=Stars)](https://github.com/shaoting0730/swift-video-audio)  
30 |   [ 第一次学习游戏开发 采用swift3.0 ]( https://github.com/shaoting0730/Flappy-Bird ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/Flappy-Bird?style=social&label=Stars)](https://github.com/shaoting0730/Flappy-Bird)  
31 |   [ 之前项目的相机模块,保留一下 ]( https://github.com/shaoting0730/swift_custom_camera ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/swift_custom_camera?style=social&label=Stars)](https://github.com/shaoting0730/swift_custom_camera)   
32 |   [ swift简单处理调用高清大图导致内存暴涨的情况 ]( https://github.com/shaoting0730/swift-imagePicker-memory ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/swift-imagePicker-memory?style=social&label=Stars)](https://github.com/shaoting0730/swift-imagePicker-memory)   
33 | [ swift3.0-自定义键盘 ]( https://github.com/shaoting0730/swift3.0-emojiKeyboard )  [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/swift3.0-emojiKeyboard?style=social&label=Stars)](https://github.com/shaoting0730/swift3.0-emojiKeyboard)
34 | [ swift4.0 JSON转模型 ]( https://github.com/shaoting0730/swift_study ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/swift_study?style=social&label=Stars)](https://github.com/shaoting0730/swift_study)
35 | 36 | 37 | -------------------------------------------------------------------------------- /iOS/block.md: -------------------------------------------------------------------------------- 1 | 2 | [ block ]( http://www.samirchen.com/block-in-objc/ )
3 | [ iOS中Block 浅谈 ]( https://www.jianshu.com/p/25a7ba546eac )  
4 | [ iOS中Block本质 ]( https://www.jianshu.com/p/4e79e9a0dd82 )  
5 | [ iOS中多层嵌套block中如何使用__weak和__strong ]( https://blog.csdn.net/nathan1987_/article/details/82749057 )  
6 | [ iOS中block关键字的理解 ]( https://www.jianshu.com/p/e5b56b883d54 )  
7 | [ iOS-block关键字的底层实现原理 ]( https://www.jianshu.com/p/404ff9d3cd42 )  
8 | [ iOS中__weak和__strong在Block中的使用 ]( https://www.jianshu.com/p/fe772a3536ca )
9 | [ iOS中__block、__strong和__weak使用 ]( https://blog.csdn.net/wsh7365062/article/details/51594225 )
10 | [ iOS中___weak与__block区别 ]( https://honglu.me/2015/01/06/weak%E4%B8%8Eblock%E5%8C%BA%E5%88%AB/ )
11 | [ iOS中Block本质 ]( https://www.jianshu.com/p/4e79e9a0dd82 )  
12 | 13 | -------------------------------------------------------------------------------- /iOS/copy.md: -------------------------------------------------------------------------------- 1 | [ 小结iOS中的copy ]( https://www.jianshu.com/p/5254f1277dba )  
2 | -------------------------------------------------------------------------------- /iOS/iOS-多线程.md: -------------------------------------------------------------------------------- 1 | [ iOS中的多线程 ]( https://blog.csdn.net/hejiasu/article/details/82768913 )  
2 | [ iOS多线程编程 ]( https://www.jianshu.com/p/80848fdd1e2a )  
3 | [ iOS基础深入补完计划--多线程(面试题)汇总 ]( https://www.jianshu.com/p/3d430c25dd65 )  
4 | 5 | -------------------------------------------------------------------------------- /iOS/weak.md: -------------------------------------------------------------------------------- 1 | [ iOS的空指针和野指针 ]( https://blog.csdn.net/QiLong_Shi/article/details/53340239?utm_source=blogxgwz8 )  
2 | [ IOS基础知识-weak原理篇 ]( https://www.jianshu.com/p/cd282b84add6 )  
3 | [ iOS开发-多层嵌套block中如何使用__weak和__strong ]( https://blog.csdn.net/nathan1987_/article/details/82749057 )  
4 | [ iOS weak底层实现原理 ]( https://www.cnblogs.com/guohai-stronger/p/10161870.html )  
5 | -------------------------------------------------------------------------------- /iOS/内存管理.md: -------------------------------------------------------------------------------- 1 | [ iOS内存管理详解 ]( https://juejin.im/post/6844903585814151175 )  
2 | 3 | -------------------------------------------------------------------------------- /iOS/分类&扩展.md: -------------------------------------------------------------------------------- 1 | [ ios 分类(category)和类扩展(extension)详解 ]( https://blog.csdn.net/wanglei0918/article/details/74923012 )
2 | [ iOS分类(category),类扩展(extension)—史上最全攻略 ]( https://www.jianshu.com/p/9e827a1708c6 )
3 | -------------------------------------------------------------------------------- /just_relax.md: -------------------------------------------------------------------------------- 1 | 2 | ### [ 俄罗斯方块 ]( https://boyan01.github.io/flutter-tetris/#/ )
3 | ### [ 速听《三体》]( https://www.youtube.com/watch?v=QO25QnboJG0&list=PLUm1zvJ4-ufdtpMfD800oTw2hB5ghwabA&index=2&t=0s )
4 | ### [ 速听《最后一个地球人》]( https://www.youtube.com/watch?v=81ulM0cvTKw )
5 | ### [《切尔诺贝利》]( http://v.qq.com/detail/i/ix6w4wausx518m8.html?ptag=10523 )
6 | ### [ 纪妖 ]( https://www.cbaigui.com/ )
7 | ### [ 无用的网站 ]( https://theuselessweb.com/ )
8 | ### [ 全历史 ]( https://www.allhistory.com )
9 | ### [ 逗比拯救世界 ]( http://www.dbbqb.com )
10 | ### [ 此人不存在 ]( https://thispersondoesnotexist.com/ )
11 | ### [ 网页小游戏 ]( https://xingye.me/game/index.php )
12 | ### [ flutter 弹球 ]( https://pinball.flutter.dev/ )
13 | 14 | 15 | -------------------------------------------------------------------------------- /uniapp/README.md: -------------------------------------------------------------------------------- 1 | [ uni-app 官方网站 ]( https://uniapp.dcloud.net.cn/ )
2 | [ uni-appx 官方网站 ]( https://doc.dcloud.net.cn/uni-app-x/ )
3 | [ hello uni-app x ]( https://gitcode.net/dcloud/hello-uni-app-x )
4 | [ uni-app 插件市场 ]( https://ext.dcloud.net.cn/ )
5 | [ CodeGeeX for HBuilderX ]( https://ext.dcloud.net.cn/plugin?name=codegeex-zhipuai )
6 | [ uni-app学习总结:涅磐 ]( https://www.kancloud.cn/cnxiangxiang/uni-app/1178904 )
7 | -------------------------------------------------------------------------------- /各端生命周期图/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/README.md -------------------------------------------------------------------------------- /各端生命周期图/flutter生命周期.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/flutter生命周期.png -------------------------------------------------------------------------------- /各端生命周期图/iOS-viewController生命周期.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/iOS-viewController生命周期.jpg -------------------------------------------------------------------------------- /各端生命周期图/iOS启动原理图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/iOS启动原理图.png -------------------------------------------------------------------------------- /各端生命周期图/react(新16.4)生命周期.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/react(新16.4)生命周期.png -------------------------------------------------------------------------------- /各端生命周期图/react-native生命周期.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/react-native生命周期.jpg -------------------------------------------------------------------------------- /各端生命周期图/vue生命周期.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/vue生命周期.png -------------------------------------------------------------------------------- /各端生命周期图/小程序生命周期.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/各端生命周期图/小程序生命周期.png -------------------------------------------------------------------------------- /声明式UI&命令式UI.md: -------------------------------------------------------------------------------- 1 | [ 声明式 UI 介绍 ]( https://blog.csdn.net/weixin_43459071/article/details/103303650 )  
2 | [ 声明式 UI 介绍 ]( https://flutter.cn/docs/get-started/flutter-for/declarative )  
3 | [ 从 SwiftUI 谈声明式 UI 与类型系统 ]( https://zhuanlan.zhihu.com/p/68275232 )  
4 | [ Flutter入门知识—声明式UI ]( https://www.jianshu.com/p/16b21097e4a0 )  
5 | [ 2020年UI发展趋势:以声明式UI统治一切 ]( http://blog.yixao.net/surface/18880.html )  
6 | 7 | 8 | -------------------------------------------------------------------------------- /微信小程序/README.md: -------------------------------------------------------------------------------- 1 | [ 第一次尝试微信小程序 ]( https://github.com/shaoting0730/FirstWeChatSmall ) [![GitHub stars](https://img.shields.io/github/stars/shaoting0730/FirstWeChatSmall?style=social&label=Stars)](https://github.com/shaoting0730/FirstWeChatSmall)  
2 | [ 微信小程序-在component中绘制canvas并且生成图片 ]( https://github.com/shaoting0730/mobile-learn/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/mini-canvas )
3 | [ 微信小程序-自定义previewImage ]( https://github.com/shaoting0730/mobile-learn/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/mini_custom_previewImage )
4 | [ 微信小程序-使用事件收发:监听发送事件传值 ]( https://github.com/shaoting0730/mobile-learn/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/mini_event )
5 | [taro]( https://github.com/shaoting0730/mobile-learn/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro )
6 | [小程序新渲染引擎 Skyline 发布正式版官方]( https://developers.weixin.qq.com/community/business/doc/0006cc112685d87e0580fb62d6180d )
7 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/app.js: -------------------------------------------------------------------------------- 1 | // app.js 2 | App({ 3 | onLaunch() { 4 | // 展示本地存储能力 5 | const logs = wx.getStorageSync('logs') || [] 6 | logs.unshift(Date.now()) 7 | wx.setStorageSync('logs', logs) 8 | 9 | // 登录 10 | wx.login({ 11 | success: res => { 12 | // 发送 res.code 到后台换取 openId, sessionKey, unionId 13 | } 14 | }) 15 | }, 16 | globalData: { 17 | userInfo: null 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages":[ 3 | "pages/index/index", 4 | "pages/logs/logs" 5 | ], 6 | "window":{ 7 | "backgroundTextStyle":"light", 8 | "navigationBarBackgroundColor": "#fff", 9 | "navigationBarTitleText": "Weixin", 10 | "navigationBarTextStyle":"black" 11 | }, 12 | "style": "v2", 13 | "sitemapLocation": "sitemap.json" 14 | } 15 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/app.wxss: -------------------------------------------------------------------------------- 1 | /**app.wxss**/ 2 | .container { 3 | height: 100%; 4 | display: flex; 5 | flex-direction: column; 6 | align-items: center; 7 | justify-content: space-between; 8 | padding: 200rpx 0; 9 | box-sizing: border-box; 10 | } 11 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/mini_canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini-canvas/mini_canvas.png -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/component/pz_canvas/pz_canvas.js: -------------------------------------------------------------------------------- 1 | // pages/component/pz_canvas/pz_canvas.js 2 | Component({ 3 | /** 4 | * 组件的属性列表 5 | */ 6 | properties: { 7 | 8 | }, 9 | 10 | /** 11 | * 组件的初始数据 12 | */ 13 | data: { 14 | radarImg:'', // canvas之后的背景图片 15 | widheight:'', // 屏幕高 16 | widwidth:'', // 屏幕宽 17 | }, 18 | lifetimes: { 19 | // 生命周期函数,可以为函数,或一个在methods段中定义的方法名 20 | attached: function () { 21 | this.getSystemInfo(); 22 | this.initDraw(); 23 | }, 24 | moved: function () { }, 25 | detached: function () { }, 26 | }, 27 | 28 | /** 29 | * 组件的方法列表 30 | */ 31 | methods: { 32 | initDraw: function () { 33 | //小程序坑1: 在component中绘制canvas需要传入this 34 | var my_carvas = wx.createCanvasContext('myCanvas', this) //1.创建carvas实例对象,方便后续使用。 35 | my_carvas.setFillStyle('#CDCDCD') 36 | my_carvas.setFontSize(13) 37 | 38 | var myDate = new Date(); 39 | var year=myDate.getFullYear(); 40 | var month=myDate.getMonth()+1; 41 | var day=myDate.getDate(); 42 | var pz_day = year+"-"+month+"-"+day; 43 | 44 | const {widwidth,widheight} = this.data; 45 | my_carvas.rotate(-20 * Math.PI / 180) // 倾斜 46 | my_carvas.translate(-200, 20) 47 | 48 | // 绘制具体内容:手机号 + 当天日期 49 | for(var i = 0;i <100;i++){ 50 | my_carvas.fillText('15108663578', 10, i*90) 51 | my_carvas.fillText('15108663578', widwidth/2-50, i*90) 52 | my_carvas.fillText('15108663578', widwidth-100, i*90) 53 | my_carvas.fillText('15108663578', widwidth+20, i*90) 54 | 55 | my_carvas.fillText(pz_day,10,i*90 + 30) 56 | my_carvas.fillText(pz_day,widwidth/2-50,i*90 + 30) 57 | my_carvas.fillText(pz_day,widwidth-100,i*90 + 30) 58 | my_carvas.fillText(pz_day,widwidth+20,i*90 + 30) 59 | 60 | } 61 | 62 | // 小程序坑2: 小程序中使用canvas,无法设置其层级,设置z-index无效,只能先通过canvas绘制出来以后再生成img使用· 63 | // 小程序坑3: 需要在第一步的canvas绘制出来之后再进行canvasToTempFilePath。 64 | my_carvas.draw(false,()=>{ 65 | wx.canvasToTempFilePath({ 66 | x: 0, 67 | y: 0, 68 | width: widwidth, 69 | height: widheight, 70 | canvasId: 'myCanvas', 71 | success: (res)=>{ 72 | this.setData({ 73 | radarImg: res.tempFilePath 74 | }); 75 | }, 76 | fail:(e)=>{ 77 | console.log(e); 78 | } 79 | },this); 80 | }); 81 | }, 82 | // 得到屏幕宽高 83 | getSystemInfo: function () { 84 | wx.getSystemInfo({ 85 | success: (res) => { 86 | this.setData({ 87 | widheight: res.screenHeight, 88 | widwidth: res.screenWidth 89 | }); 90 | } 91 | }) 92 | } 93 | } 94 | }) 95 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/component/pz_canvas/pz_canvas.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/component/pz_canvas/pz_canvas.wxml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/component/pz_canvas/pz_canvas.wxss: -------------------------------------------------------------------------------- 1 | .outView{ 2 | height:100%; 3 | width:100%; 4 | background-color: rgba(245, 245, 245, 1); 5 | position:fixed; 6 | } -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/index/index.js: -------------------------------------------------------------------------------- 1 | // index.js 2 | // 获取应用实例 3 | const app = getApp() 4 | 5 | Page({ 6 | data: { 7 | myData: [ 8 | { 9 | "id":1, 10 | "title": "111111", 11 | "content": "这是内容1" 12 | }, 13 | { 14 | "id":2, 15 | "title": "22222", 16 | "content": "这是内容2" 17 | }, 18 | { 19 | "id":3, 20 | "title": "3333", 21 | "content": "这是内容3" 22 | }, 23 | { 24 | "id":4, 25 | "title": "444", 26 | "content": "这是内容4" 27 | }, 28 | { 29 | "id":5, 30 | "title": "5555", 31 | "content": "这是内容5" 32 | }, 33 | { 34 | "id":6, 35 | "title": "6666", 36 | "content": "这是内容6" 37 | }, 38 | { 39 | "id":7, 40 | "title": "777", 41 | "content": "这是1内容" 42 | }, 43 | { 44 | "id":8, 45 | "title": "888", 46 | "content": "这是2内容" 47 | }, 48 | { 49 | "id":9, 50 | "title": "999", 51 | "content": "这是4内容" 52 | }, 53 | { 54 | "id":10, 55 | "title": "10", 56 | "content": "这是内5容" 57 | }, 58 | { 59 | "id":11, 60 | "title": "3456543456789765", 61 | "content": "这1是内容" 62 | }, 63 | { 64 | "id":12, 65 | "title": "101010101010101010", 66 | "content": "这2是内容" 67 | }, 68 | { 69 | "id":13, 70 | "title": "3456543456789765", 71 | "content": "这3是内容" 72 | }, 73 | { 74 | "id":14, 75 | "title": "101010101010101010", 76 | "content": "1这是内容" 77 | }, 78 | { 79 | "id":15, 80 | "title": "101010101010101010", 81 | "content": "2这是内容" 82 | } 83 | ] 84 | }, 85 | itemOnclick(e){ 86 | var id =String(e.currentTarget.dataset.id); 87 | wx.showToast({ 88 | title: id, 89 | }) 90 | } 91 | }) 92 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "pz_canvas":"/pages/component/pz_canvas/pz_canvas" 4 | } 5 | } -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/index/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{item.title}} 10 | 11 | 12 | {{item.content}} 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/index/index.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini-canvas/pages/index/index.wxss -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/logs/logs.js: -------------------------------------------------------------------------------- 1 | // logs.js 2 | const util = require('../../utils/util.js') 3 | 4 | Page({ 5 | data: { 6 | logs: [] 7 | }, 8 | onLoad() { 9 | this.setData({ 10 | logs: (wx.getStorageSync('logs') || []).map(log => { 11 | return { 12 | date: util.formatTime(new Date(log)), 13 | timeStamp: log 14 | } 15 | }) 16 | }) 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/logs/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "navigationBarTitleText": "查看启动日志", 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/logs/logs.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{index + 1}}. {{log.date}} 5 | 6 | 7 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/pages/logs/logs.wxss: -------------------------------------------------------------------------------- 1 | .log-list { 2 | display: flex; 3 | flex-direction: column; 4 | padding: 40rpx; 5 | } 6 | .log-item { 7 | margin: 10rpx; 8 | } 9 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目配置文件", 3 | "packOptions": { 4 | "ignore": [] 5 | }, 6 | "setting": { 7 | "urlCheck": true, 8 | "es6": true, 9 | "enhance": false, 10 | "postcss": true, 11 | "preloadBackgroundData": false, 12 | "minified": true, 13 | "newFeature": false, 14 | "coverView": true, 15 | "nodeModules": false, 16 | "autoAudits": false, 17 | "showShadowRootInWxmlPanel": true, 18 | "scopeDataCheck": false, 19 | "uglifyFileName": false, 20 | "checkInvalidKey": true, 21 | "checkSiteMap": true, 22 | "uploadWithSourceMap": true, 23 | "compileHotReLoad": false, 24 | "useMultiFrameRuntime": true, 25 | "useApiHook": true, 26 | "useApiHostProcess": false, 27 | "babelSetting": { 28 | "ignore": [], 29 | "disablePlugins": [], 30 | "outputPath": "" 31 | }, 32 | "enableEngineNative": false, 33 | "bundle": false, 34 | "useIsolateContext": true, 35 | "useCompilerModule": true, 36 | "userConfirmedUseCompilerModuleSwitch": false, 37 | "userConfirmedBundleSwitch": false, 38 | "packNpmManually": false, 39 | "packNpmRelationList": [], 40 | "minifyWXSS": true 41 | }, 42 | "compileType": "miniprogram", 43 | "libVersion": "2.16.0", 44 | "appid": "wxfa3c89fe35e11ef5", 45 | "projectname": "pz-canvas", 46 | "debugOptions": { 47 | "hidedInDevtools": [] 48 | }, 49 | "scripts": {}, 50 | "staticServerOptions": { 51 | "baseURL": "", 52 | "servePath": "" 53 | }, 54 | "isGameTourist": false, 55 | "condition": { 56 | "search": { 57 | "list": [] 58 | }, 59 | "conversation": { 60 | "list": [] 61 | }, 62 | "game": { 63 | "list": [] 64 | }, 65 | "plugin": { 66 | "list": [] 67 | }, 68 | "gamePlugin": { 69 | "list": [] 70 | }, 71 | "miniprogram": { 72 | "list": [] 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /微信小程序/mini-canvas/readMe.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/mini-canvas/mini_canvas.png)
2 | -------------------------------------------------------------------------------- /微信小程序/mini-canvas/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", 3 | "rules": [{ 4 | "action": "allow", 5 | "page": "*" 6 | }] 7 | } -------------------------------------------------------------------------------- /微信小程序/mini-canvas/utils/util.js: -------------------------------------------------------------------------------- 1 | const formatTime = date => { 2 | const year = date.getFullYear() 3 | const month = date.getMonth() + 1 4 | const day = date.getDate() 5 | const hour = date.getHours() 6 | const minute = date.getMinutes() 7 | const second = date.getSeconds() 8 | 9 | return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}` 10 | } 11 | 12 | const formatNumber = n => { 13 | n = n.toString() 14 | return n[1] ? n : `0${n}` 15 | } 16 | 17 | module.exports = { 18 | formatTime 19 | } 20 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/mini_custom_previewImage/result.gif)
2 | 建议实际开发中,采用wxs脚本语言去修改,本demo采用的state修改办法,iOS运行完美,但是android卡的一批。 3 | 4 | [ wxs脚本语言 ]( https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html )
5 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/app.js: -------------------------------------------------------------------------------- 1 | // app.js 2 | App({ 3 | onLaunch() { 4 | // 展示本地存储能力 5 | const logs = wx.getStorageSync('logs') || [] 6 | logs.unshift(Date.now()) 7 | wx.setStorageSync('logs', logs) 8 | 9 | // 登录 10 | wx.login({ 11 | success: res => { 12 | // 发送 res.code 到后台换取 openId, sessionKey, unionId 13 | } 14 | }) 15 | }, 16 | globalData: { 17 | userInfo: null 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages":[ 3 | "pages/index/index", 4 | "pages/logs/logs" 5 | ], 6 | "window":{ 7 | "backgroundTextStyle":"light", 8 | "navigationBarBackgroundColor": "#fff", 9 | "navigationBarTitleText": "Weixin", 10 | "navigationBarTextStyle":"black" 11 | }, 12 | "style": "v2", 13 | "sitemapLocation": "sitemap.json" 14 | } 15 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/app.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini_custom_previewImage/app.wxss -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/images/one.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini_custom_previewImage/images/one.jpeg -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/images/three.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini_custom_previewImage/images/three.jpeg -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/images/two.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini_custom_previewImage/images/two.jpeg -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/components/pz_previewImage/pz_previewImage.js: -------------------------------------------------------------------------------- 1 | // pages/components/pz_previewImage.js 2 | Component({ 3 | /** 4 | * 组件的属性列表 5 | */ 6 | properties: { 7 | current: { 8 | type: Number, 9 | value: 0 10 | }, 11 | imgData: { 12 | type: Array, 13 | value: [], 14 | }, 15 | show: { 16 | type: Boolean, 17 | value: false, 18 | }, 19 | }, 20 | /** 21 | * 组件的初始数据 22 | */ 23 | data: { 24 | imgData: [], 25 | show: false, 26 | stv: { 27 | offsetX: 0, 28 | offsetY: 0, 29 | zoom: false, //是否缩放状态 30 | distance: 0, //两指距离 31 | scale: 1, //缩放倍数 32 | }, 33 | current: 0, // 当前第几张 34 | }, 35 | /** 36 | * 组件的方法列表 37 | */ 38 | methods: { 39 | //事件处理函数 40 | touchstartCallback: function (e) { 41 | //触摸开始 42 | console.log('touchstartCallback'); 43 | console.log(e); 44 | 45 | if (e.touches.length === 1) { 46 | let { clientX, clientY } = e.touches[0]; 47 | this.startX = clientX; 48 | this.startY = clientY; 49 | this.touchStartEvent = e.touches; 50 | } else { 51 | let xMove = e.touches[1].clientX - e.touches[0].clientX; 52 | let yMove = e.touches[1].clientY - e.touches[0].clientY; 53 | let distance = Math.sqrt(xMove * xMove + yMove * yMove); 54 | this.setData({ 55 | 'stv.distance': distance, 56 | 'stv.zoom': true, //缩放状态 57 | }) 58 | } 59 | 60 | }, 61 | touchmoveCallback: function (e) { 62 | //触摸移动中 63 | //console.log('touchmoveCallback'); 64 | //console.log(e); 65 | 66 | if (e.touches.length === 1) { 67 | //单指移动 68 | if (this.data.stv.zoom) { 69 | //缩放状态,不处理单指 70 | return; 71 | } 72 | let { clientX, clientY } = e.touches[0]; 73 | let offsetX = clientX - this.startX; 74 | let offsetY = clientY - this.startY; 75 | this.startX = clientX; 76 | this.startY = clientY; 77 | let { stv } = this.data; 78 | stv.offsetX += offsetX; 79 | stv.offsetY += offsetY; 80 | stv.offsetLeftX = -stv.offsetX; 81 | stv.offsetLeftY = -stv.offsetLeftY; 82 | this.setData({ 83 | stv: stv, 84 | }); 85 | 86 | } else { 87 | //双指缩放 88 | let xMove = e.touches[1].clientX - e.touches[0].clientX; 89 | let yMove = e.touches[1].clientY - e.touches[0].clientY; 90 | let distance = Math.sqrt(xMove * xMove + yMove * yMove); 91 | 92 | let distanceDiff = distance - this.data.stv.distance; 93 | let newScale = this.data.stv.scale + 0.005 * distanceDiff; 94 | 95 | this.setData({ 96 | 'stv.distance': distance, 97 | 'stv.scale': newScale, 98 | }) 99 | } 100 | 101 | }, 102 | touchendCallback: function (e) { 103 | //触摸结束 104 | console.log('touchendCallback'); 105 | console.log(e); 106 | 107 | if (e.touches.length === 0) { 108 | this.setData({ 109 | 'stv.zoom': false, //重置缩放状态 110 | }) 111 | } 112 | }, 113 | exit() { 114 | this.setData({ 115 | 'stv.offsetX': 0, 116 | 'stv.offsetY': 0, 117 | 'stv.zoom': false, 118 | 'stv.scale': 1, 119 | 'stv.distance': 0, 120 | 'current':0, 121 | show: false 122 | }) 123 | }, 124 | // swiper滑过一个page事件 125 | bindchange(e) { 126 | var current = e.detail.current; 127 | this.setData({ 128 | current: current, 129 | 'stv.zoom': false, //重置缩放状态 130 | 'stv.scale': 1, 131 | 'stv.distance': 0, 132 | 'stv.offsetX': 0, 133 | 'stv.offsetY': 0, 134 | }) 135 | }, 136 | } 137 | }) 138 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/components/pz_previewImage/pz_previewImage.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/components/pz_previewImage/pz_previewImage.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 自定义图片缩放 7 | 8 | 9 | {{current+1}}/3 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/components/pz_previewImage/pz_previewImage.wxss: -------------------------------------------------------------------------------- 1 | .detail-page { 2 | width: 100%; 3 | height: 100%; 4 | background-color: pink; 5 | min-height: 300px; 6 | display: flex; 7 | align-items: center; 8 | justify-content: center; 9 | } 10 | .top-view{ 11 | background-color: pink; 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | } 16 | .top-view .top-view-txt{ 17 | display: block; 18 | color: white; 19 | } 20 | .detail-page .swiper{ 21 | display: flex; 22 | align-items: center; 23 | justify-content: center; 24 | width: 100%; 25 | height: 100%; 26 | padding-bottom: 30%; 27 | } 28 | .detail-page .swiper .swiper-item{ 29 | display: flex; 30 | align-items: center; 31 | justify-content: center; 32 | } 33 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/index/index.js: -------------------------------------------------------------------------------- 1 | // index.js 2 | // 获取应用实例 3 | const app = getApp() 4 | Page({ 5 | data: { 6 | offsetX: 0, 7 | offsetY: 0, 8 | distance: 0, //两指距离 9 | current:0, 10 | zoom: false, //是否缩放状态 11 | show:false, 12 | scale: 1, 13 | imgData: [ 14 | 'one.jpeg', 15 | 'two.jpeg', 16 | 'three.jpeg' 17 | ], 18 | }, 19 | // 点击图片:出现图片放大 20 | imgOnlick(e) { 21 | var current = e.currentTarget.dataset.current; 22 | this.setData({ 23 | current: current, 24 | show: true, 25 | }) 26 | }, 27 | }) 28 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "pz_previewImage":"/pages/components/pz_previewImage/pz_previewImage" 4 | } 5 | } -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/index/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/index/index.wxss: -------------------------------------------------------------------------------- 1 | /**index.wxss**/ 2 | .userinfo { 3 | display: flex; 4 | flex-direction: column; 5 | align-items: center; 6 | color: #aaa; 7 | } 8 | 9 | .userinfo-avatar { 10 | overflow: hidden; 11 | width: 128rpx; 12 | height: 128rpx; 13 | margin: 20rpx; 14 | border-radius: 50%; 15 | } 16 | 17 | .usermotto { 18 | margin-top: 200px; 19 | } -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/logs/logs.js: -------------------------------------------------------------------------------- 1 | // logs.js 2 | const util = require('../../utils/util.js') 3 | 4 | Page({ 5 | data: { 6 | logs: [] 7 | }, 8 | onLoad() { 9 | this.setData({ 10 | logs: (wx.getStorageSync('logs') || []).map(log => { 11 | return { 12 | date: util.formatTime(new Date(log)), 13 | timeStamp: log 14 | } 15 | }) 16 | }) 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/logs/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "navigationBarTitleText": "查看启动日志", 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/logs/logs.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{index + 1}}. {{log.date}} 5 | 6 | 7 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/pages/logs/logs.wxss: -------------------------------------------------------------------------------- 1 | .log-list { 2 | display: flex; 3 | flex-direction: column; 4 | padding: 40rpx; 5 | } 6 | .log-item { 7 | margin: 10rpx; 8 | } 9 | -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目配置文件", 3 | "packOptions": { 4 | "ignore": [] 5 | }, 6 | "setting": { 7 | "urlCheck": true, 8 | "es6": true, 9 | "enhance": false, 10 | "postcss": true, 11 | "preloadBackgroundData": false, 12 | "minified": true, 13 | "newFeature": false, 14 | "coverView": true, 15 | "nodeModules": false, 16 | "autoAudits": false, 17 | "showShadowRootInWxmlPanel": true, 18 | "scopeDataCheck": false, 19 | "uglifyFileName": false, 20 | "checkInvalidKey": true, 21 | "checkSiteMap": true, 22 | "uploadWithSourceMap": true, 23 | "compileHotReLoad": false, 24 | "useMultiFrameRuntime": true, 25 | "useApiHook": true, 26 | "useApiHostProcess": false, 27 | "babelSetting": { 28 | "ignore": [], 29 | "disablePlugins": [], 30 | "outputPath": "" 31 | }, 32 | "enableEngineNative": false, 33 | "bundle": false, 34 | "useIsolateContext": true, 35 | "useCompilerModule": true, 36 | "userConfirmedUseCompilerModuleSwitch": false, 37 | "userConfirmedBundleSwitch": false, 38 | "packNpmManually": false, 39 | "packNpmRelationList": [], 40 | "minifyWXSS": true 41 | }, 42 | "compileType": "miniprogram", 43 | "libVersion": "2.17.0", 44 | "appid": "wxfa3c89fe35e11ef5", 45 | "projectname": "miniprogram-1", 46 | "debugOptions": { 47 | "hidedInDevtools": [] 48 | }, 49 | "scripts": {}, 50 | "staticServerOptions": { 51 | "baseURL": "", 52 | "servePath": "" 53 | }, 54 | "isGameTourist": false, 55 | "condition": { 56 | "search": { 57 | "list": [] 58 | }, 59 | "conversation": { 60 | "list": [] 61 | }, 62 | "game": { 63 | "list": [] 64 | }, 65 | "plugin": { 66 | "list": [] 67 | }, 68 | "gamePlugin": { 69 | "list": [] 70 | }, 71 | "miniprogram": { 72 | "list": [] 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/result.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/mini_custom_previewImage/result.gif -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", 3 | "rules": [{ 4 | "action": "allow", 5 | "page": "*" 6 | }] 7 | } -------------------------------------------------------------------------------- /微信小程序/mini_custom_previewImage/utils/util.js: -------------------------------------------------------------------------------- 1 | const formatTime = date => { 2 | const year = date.getFullYear() 3 | const month = date.getMonth() + 1 4 | const day = date.getDate() 5 | const hour = date.getHours() 6 | const minute = date.getMinutes() 7 | const second = date.getSeconds() 8 | 9 | return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}` 10 | } 11 | 12 | const formatNumber = n => { 13 | n = n.toString() 14 | return n[1] ? n : `0${n}` 15 | } 16 | 17 | module.exports = { 18 | formatTime 19 | } 20 | -------------------------------------------------------------------------------- /微信小程序/mini_event/README.md: -------------------------------------------------------------------------------- 1 | 2 | ``` 3 | const event = require("./event.js"); 4 | 5 | 6 | // 发 7 | 8 | event.$emit({ 9 | name: "XXXXX", 10 | data: {'a':23,'b':[1,2,3]} 11 | }) 12 | 13 | 14 | // 其他页面 监听 收到则执行 15 | 16 | event.$on({ 17 | name:"XXXXX", 18 | tg:this, 19 | success:(res)=>{ 20 | const { a, b } = res; 21 | ..... 22 | } 23 | }) 24 | 25 | ``` -------------------------------------------------------------------------------- /微信小程序/mini_event/event.js: -------------------------------------------------------------------------------- 1 | var event = {}; 2 | 3 | const $on = function(params) { 4 | if (!params) { 5 | return false; 6 | } 7 | if (!params.name) { 8 | // console.error("事件监听未设置名称 属性key=name"); 9 | return false; 10 | } 11 | if (!params.success) { 12 | // console.error("事件监听未设置回调函数 属性key=success"); 13 | return false; 14 | } 15 | if (!params.tg) { 16 | // console.error("事件监听未设置目标对象 属性key=tg"); 17 | return false; 18 | } 19 | if (event[params.name]) { 20 | var list = event[params.name]; 21 | list.push([params.tg, params.success]); 22 | } else { 23 | event[params.name] = [ 24 | [params.tg, params.success] 25 | ]; 26 | } 27 | pageStatus(params.tg); 28 | } 29 | 30 | const $emit = function(params) { 31 | if (!params) { 32 | return false; 33 | } 34 | if (!params.name) { 35 | // console.error("事件发送未设置名称 属性key=name"); 36 | return false; 37 | } 38 | if (event[params.name]) { 39 | var list = event[params.name]; 40 | list.forEach(item => { 41 | item[1].call(item[0], params.data); 42 | }) 43 | } 44 | } 45 | 46 | const $remove = function(params) { 47 | if (!params) { 48 | return false; 49 | } 50 | if (!params.tg) { 51 | // console.error("事件监听未设置目标对象 属性key=tg"); 52 | return false; 53 | } 54 | 55 | if (params.name && event[params.name]) { 56 | event[params.name] = event[params.name].filter(a => { 57 | return a[0] != params.tg; 58 | }) 59 | } else { 60 | for (let key in event) { 61 | event[key] = event[key].filter(a => { 62 | return a[0] != params.tg; 63 | }) 64 | } 65 | } 66 | } 67 | 68 | const pageStatus = function(self) { 69 | if (self["onUnload"]) { 70 | var s = self["onUnload"]; 71 | self["onUnload"] = function(a) { 72 | s.call(this, a); 73 | $remove({ 74 | tg: this 75 | }); 76 | } 77 | } else { 78 | self["onUnload"] = function() { 79 | $remove({ 80 | tg: this 81 | }); 82 | } 83 | } 84 | } 85 | 86 | exports.$on = $on; 87 | exports.$emit = $emit; 88 | exports.$remove = $remove; -------------------------------------------------------------------------------- /微信小程序/mini_event/使用.js: -------------------------------------------------------------------------------- 1 | const event = require("./event.js"); 2 | 3 | 4 | // 发 5 | 6 | event.$emit({ 7 | name: "XXXXX", 8 | data: {'a':23,'b':[1,2,3]} 9 | }) 10 | 11 | 12 | // 其他页面 监听 收到则执行 13 | 14 | event.$on({ 15 | name:"XXXXX", 16 | tg:this, 17 | success:(res)=>{ 18 | const { a, b } = res; 19 | 。。。。。 20 | } 21 | }) -------------------------------------------------------------------------------- /微信小程序/taro/README.md: -------------------------------------------------------------------------------- 1 | # taro_pro 2 | ### 版本相关 3 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/%E4%BD%BF%E7%94%A8.jpg)
4 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/taro%E7%89%88%E6%9C%AC.jpg)
5 | ## 截图 6 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/login.jpg)
7 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/register.jpg)
8 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/taro%E6%88%AA%E5%9B%BE1.jpg)
9 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/taro%E6%88%AA%E5%9B%BE2.jpg)
10 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/taro%E6%88%AA%E5%9B%BE3.jpg)
11 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/taro%E6%88%AA%E5%9B%BE4.jpg)
12 | ![image](https://github.com/shaoting0730/mobile-learn/blob/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/taro/taro%E6%88%AA%E5%9B%BE5.jpg)
13 | -------------------------------------------------------------------------------- /微信小程序/taro/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/login.jpg -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "extends": ["taro/react"], 3 | "rules": { 4 | "react/jsx-uses-react": "off", 5 | "react/react-in-jsx-scope": "off" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | deploy_versions/ 3 | .temp/ 4 | .rn_temp/ 5 | node_modules/ 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.idea/myApp.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/.swc/plugins/v4/200063c2c798457e0f441f309e564fe9e258e1dcb142b8c6a1df1cbb41ae9bd9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/.swc/plugins/v4/200063c2c798457e0f441f309e564fe9e258e1dcb142b8c6a1df1cbb41ae9bd9 -------------------------------------------------------------------------------- /微信小程序/taro/myApp/babel.config.js: -------------------------------------------------------------------------------- 1 | // babel-preset-taro 更多选项和默认值: 2 | // https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md 3 | module.exports = { 4 | presets: [ 5 | ['taro', { 6 | framework: 'react', 7 | ts: true 8 | }] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/config/dev.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | NODE_ENV: '"development"' 4 | }, 5 | defineConstants: { 6 | }, 7 | mini: {}, 8 | h5: {} 9 | } 10 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/config/index.js: -------------------------------------------------------------------------------- 1 | const config = { 2 | projectName: 'myApp', 3 | date: '2022-12-13', 4 | designWidth: 750, 5 | deviceRatio: { 6 | 640: 2.34 / 2, 7 | 750: 1, 8 | 828: 1.81 / 2 9 | }, 10 | sourceRoot: 'src', 11 | outputRoot: 'dist', 12 | plugins: [], 13 | defineConstants: { 14 | }, 15 | copy: { 16 | patterns: [ 17 | ], 18 | options: { 19 | } 20 | }, 21 | framework: 'react', 22 | compiler: 'webpack5', 23 | cache: { 24 | enable: false // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache 25 | }, 26 | mini: { 27 | postcss: { 28 | pxtransform: { 29 | enable: true, 30 | config: { 31 | 32 | } 33 | }, 34 | url: { 35 | enable: true, 36 | config: { 37 | limit: 1024 // 设定转换尺寸上限 38 | } 39 | }, 40 | cssModules: { 41 | enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true 42 | config: { 43 | namingPattern: 'module', // 转换模式,取值为 global/module 44 | generateScopedName: '[name]__[local]___[hash:base64:5]' 45 | } 46 | } 47 | } 48 | }, 49 | h5: { 50 | publicPath: '/', 51 | staticDirectory: 'static', 52 | postcss: { 53 | autoprefixer: { 54 | enable: true, 55 | config: { 56 | } 57 | }, 58 | cssModules: { 59 | enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true 60 | config: { 61 | namingPattern: 'module', // 转换模式,取值为 global/module 62 | generateScopedName: '[name]__[local]___[hash:base64:5]' 63 | } 64 | } 65 | } 66 | } 67 | } 68 | 69 | module.exports = function (merge) { 70 | if (process.env.NODE_ENV === 'development') { 71 | return merge({}, config, require('./dev')) 72 | } 73 | return merge({}, config, require('./prod')) 74 | } 75 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/config/prod.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | NODE_ENV: '"production"' 4 | }, 5 | defineConstants: { 6 | }, 7 | mini: {}, 8 | h5: { 9 | /** 10 | * WebpackChain 插件配置 11 | * @docs https://github.com/neutrinojs/webpack-chain 12 | */ 13 | // webpackChain (chain) { 14 | // /** 15 | // * 如果 h5 端编译后体积过大,可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。 16 | // * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer 17 | // */ 18 | // chain.plugin('analyzer') 19 | // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []) 20 | 21 | // /** 22 | // * 如果 h5 端首屏加载时间过长,可以使用 prerender-spa-plugin 插件预加载首页。 23 | // * @docs https://github.com/chrisvfritz/prerender-spa-plugin 24 | // */ 25 | // const path = require('path') 26 | // const Prerender = require('prerender-spa-plugin') 27 | // const staticDir = path.join(__dirname, '..', 'dist') 28 | // chain 29 | // .plugin('prerender') 30 | // .use(new Prerender({ 31 | // staticDir, 32 | // routes: [ '/pages/dashboard/dashboard' ], 33 | // postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'dashboard.html') }) 34 | // })) 35 | // } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myApp", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "练习", 6 | "templateInfo": { 7 | "name": "mobx", 8 | "typescript": true, 9 | "css": "less" 10 | }, 11 | "scripts": { 12 | "build:weapp": "taro build --type weapp", 13 | "build:swan": "taro build --type swan", 14 | "build:alipay": "taro build --type alipay", 15 | "build:tt": "taro build --type tt", 16 | "build:h5": "taro build --type h5", 17 | "build:rn": "taro build --type rn", 18 | "build:qq": "taro build --type qq", 19 | "build:quickapp": "taro build --type quickapp", 20 | "dev:weapp": "npm run build:weapp -- --watch", 21 | "dev:swan": "npm run build:swan -- --watch", 22 | "dev:alipay": "npm run build:alipay -- --watch", 23 | "dev:tt": "npm run build:tt -- --watch", 24 | "dev:h5": "npm run build:h5 -- --watch", 25 | "dev:rn": "npm run build:rn -- --watch", 26 | "dev:qq": "npm run build:qq -- --watch", 27 | "dev:quickapp": "npm run build:quickapp -- --watch" 28 | }, 29 | "browserslist": [ 30 | "last 3 versions", 31 | "Android >= 4.1", 32 | "ios >= 8" 33 | ], 34 | "author": "", 35 | "license": "MIT", 36 | "dependencies": { 37 | "@babel/runtime": "^7.7.7", 38 | "@tarojs/components": "3.5.10", 39 | "@tarojs/helper": "3.5.10", 40 | "@tarojs/plugin-platform-weapp": "3.5.10", 41 | "@tarojs/plugin-platform-alipay": "3.5.10", 42 | "@tarojs/plugin-platform-tt": "3.5.10", 43 | "@tarojs/plugin-platform-swan": "3.5.10", 44 | "@tarojs/plugin-platform-jd": "3.5.10", 45 | "@tarojs/plugin-platform-qq": "3.5.10", 46 | "@tarojs/router": "3.5.10", 47 | "@tarojs/runtime": "3.5.10", 48 | "@tarojs/shared": "3.5.10", 49 | "@tarojs/taro": "3.5.10", 50 | "@tarojs/taro-h5": "3.5.10", 51 | "@tarojs/plugin-framework-react": "3.5.10", 52 | "mobx": "^4.8.0", 53 | "mobx-react": "^6.1.4", 54 | "react-dom": "^18.0.0", 55 | "@tarojs/react": "3.5.10", 56 | "react": "^18.0.0" 57 | }, 58 | "devDependencies": { 59 | "@babel/core": "^7.8.0", 60 | "@tarojs/cli": "3.5.10", 61 | "@types/webpack-env": "^1.13.6", 62 | "@types/react": "^18.0.0", 63 | "webpack": "5.69.0", 64 | "@tarojs/webpack5-runner": "3.5.10", 65 | "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", 66 | "react-refresh": "^0.11.0", 67 | "babel-preset-taro": "3.5.10", 68 | "eslint-config-taro": "3.5.10", 69 | "eslint": "^8.12.0", 70 | "eslint-plugin-react": "^7.8.2", 71 | "eslint-plugin-import": "^2.12.0", 72 | "eslint-plugin-react-hooks": "^4.2.0", 73 | "stylelint": "9.3.0", 74 | "@typescript-eslint/parser": "^5.20.0", 75 | "@typescript-eslint/eslint-plugin": "^5.20.0", 76 | "typescript": "^4.1.0" 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "miniprogramRoot": "dist/", 3 | "projectname": "myApp", 4 | "description": "练习", 5 | "appid": "wxfa3c89fe35e11ef5", 6 | "setting": { 7 | "urlCheck": true, 8 | "es6": false, 9 | "enhance": false, 10 | "compileHotReLoad": false, 11 | "postcss": false, 12 | "minified": false, 13 | "babelSetting": { 14 | "ignore": [], 15 | "disablePlugins": [], 16 | "outputPath": "" 17 | } 18 | }, 19 | "compileType": "miniprogram", 20 | "libVersion": "2.28.1", 21 | "srcMiniprogramRoot": "dist/", 22 | "packOptions": { 23 | "ignore": [], 24 | "include": [] 25 | }, 26 | "condition": {}, 27 | "editorSetting": { 28 | "tabIndent": "insertSpaces", 29 | "tabSize": 2 30 | } 31 | } -------------------------------------------------------------------------------- /微信小程序/taro/myApp/project.private.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", 3 | "projectname": "myApp", 4 | "setting": { 5 | "compileHotReLoad": true 6 | } 7 | } -------------------------------------------------------------------------------- /微信小程序/taro/myApp/project.tt.json: -------------------------------------------------------------------------------- 1 | { 2 | "miniprogramRoot": "./", 3 | "projectname": "myApp", 4 | "description": "练习", 5 | "appid": "touristappid", 6 | "setting": { 7 | "urlCheck": true, 8 | "es6": false, 9 | "postcss": false, 10 | "minified": false 11 | }, 12 | "compileType": "miniprogram" 13 | } 14 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/app.config.ts: -------------------------------------------------------------------------------- 1 | export default defineAppConfig({ 2 | pages: [ 3 | 'pages/login/index', 4 | 'pages/home/index', 5 | 'pages/news/index', 6 | 'pages/news_details/index', 7 | 'pages/mine/index', 8 | ], 9 | window: { 10 | backgroundTextStyle: 'light', 11 | navigationBarBackgroundColor: '#fff', 12 | }, 13 | tabBar: { 14 | "list":[ 15 | { 16 | "pagePath": "pages/home/index", 17 | "text": "首页", 18 | "iconPath": "/assets/home.png", 19 | "selectedIconPath": "/assets/home_select.png" 20 | }, 21 | { 22 | "pagePath": "pages/news/index", 23 | "text": "新闻", 24 | "iconPath": "/assets/news.png", 25 | "selectedIconPath": "/assets/news_select.png" 26 | }, 27 | { 28 | "pagePath": "pages/mine/index", 29 | "text": "我的", 30 | "iconPath": "/assets/mine.png", 31 | "selectedIconPath": "/assets/mine_select.png" 32 | }, 33 | ], 34 | 'color': '#000', 35 | 'selectedColor': '#56abe4', 36 | 'backgroundColor': '#fff', 37 | 'borderStyle': 'white' 38 | } 39 | }) 40 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/app.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/app.less -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/app.tsx: -------------------------------------------------------------------------------- 1 | import { Component, PropsWithChildren } from 'react' 2 | import { Provider } from 'mobx-react' 3 | 4 | import counterStore from './store/counter' 5 | import loginStore from './store/login' 6 | import './app.less' 7 | 8 | const store = { 9 | loginStore, 10 | counterStore, 11 | } 12 | 13 | class App extends Component { 14 | componentDidMount () {} 15 | 16 | componentDidShow () {} 17 | 18 | componentDidHide () {} 19 | 20 | // this.props.children 就是要渲染的页面 21 | render () { 22 | return ( 23 | 24 | {this.props.children} 25 | 26 | ) 27 | } 28 | } 29 | 30 | export default App 31 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/home.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/home_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/home_select.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/login_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/login_bg.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/mine.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/mine_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/mine_select.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/news.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/news_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/news_select.png -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/swiper1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/swiper1.jpeg -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/swiper2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/swiper2.jpeg -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/swiper3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/swiper3.jpeg -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/assets/swiper4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/myApp/src/assets/swiper4.jpeg -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | myApp 12 | 13 | 14 | 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/home/index.config.ts: -------------------------------------------------------------------------------- 1 | export default definePageConfig({ 2 | navigationBarTitleText: '首页' 3 | }) 4 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/home/index.less: -------------------------------------------------------------------------------- 1 | .COVID19{ 2 | margin-top: 10PX; 3 | //background-color: crimson; 4 | .COVID19_input{ 5 | display: flex; 6 | justify-content: space-between; 7 | .input{ 8 | margin-left: 10PX; 9 | font-size: 14PX; 10 | width: 80%; 11 | //background-color:yellow; 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | } 16 | .search-btn{ 17 | width: 100PX; 18 | height: 40PX; 19 | } 20 | } 21 | .COVID19_info{ 22 | margin-left: 20PX; 23 | font-size: 15PX; 24 | } 25 | } 26 | .weather{ 27 | margin-top: 10PX; 28 | //background-color: crimson; 29 | .weather_input{ 30 | display: flex; 31 | justify-content: space-between; 32 | .input{ 33 | margin-left: 10PX; 34 | font-size: 14PX; 35 | width: 80%; 36 | //background-color:yellow; 37 | display: flex; 38 | justify-content: center; 39 | align-items: center; 40 | } 41 | .search-btn{ 42 | width: 100PX; 43 | height: 40PX; 44 | } 45 | } 46 | .weather_info{ 47 | margin-left: 20PX; 48 | font-size: 15PX; 49 | } 50 | } 51 | .star{ 52 | margin-top: 10PX; 53 | //background-color: crimson; 54 | .star_input{ 55 | display: flex; 56 | justify-content: space-between; 57 | .input{ 58 | margin-left: 10PX; 59 | font-size: 14PX; 60 | width: 80%; 61 | //background-color:yellow; 62 | display: flex; 63 | justify-content: center; 64 | align-items: center; 65 | } 66 | .search-btn{ 67 | width: 100PX; 68 | height: 40PX; 69 | } 70 | } 71 | .star_info{ 72 | margin-left: 20PX; 73 | font-size: 15PX; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/home/index.tsx: -------------------------------------------------------------------------------- 1 | import {Component, PropsWithChildren} from 'react' 2 | import {View, Swiper, Image, SwiperItem, Input, Button, Text} from '@tarojs/components' 3 | import {observer, inject} from 'mobx-react' 4 | import Taro from "@tarojs/taro"; 5 | import ServiceProvider from '../../service/service_provider' 6 | import './index.less'; 7 | 8 | @inject('store') 9 | @observer 10 | class Index extends Component { 11 | 12 | state = { 13 | covid19Address: '', // 疫情要查询的地点 14 | COVID19Info: {}, // 疫情信息 15 | 16 | weatherAddress: '', // 天气要查询的地点 17 | weatherInfo: [], // 天气信息 18 | 19 | star: '', // 星座 20 | starInfo: {}, // 星座信息 21 | } 22 | 23 | componentDidMount(): void { 24 | 25 | } 26 | 27 | /// swiper切换输入 28 | swiperChange(e) { 29 | console.log(e); 30 | } 31 | 32 | // 查询疫情 33 | searchCOVID19() { 34 | let address = this.state.covid19Address; 35 | console.log(address); 36 | if (address.length == 0) { 37 | Taro.showToast({ 38 | title: '请输入合法地名', 39 | icon: 'error' 40 | }) 41 | return; 42 | } 43 | 44 | ServiceProvider.COVID19Info(address).then((e) => { 45 | console.log(e); 46 | this.setState({ 47 | COVID19Info: e, 48 | }) 49 | }); 50 | 51 | } 52 | 53 | /// 查询天气 54 | searchWeather() { 55 | let address = this.state.weatherAddress; 56 | console.log(address); 57 | if (address.length == 0) { 58 | Taro.showToast({ 59 | title: '请输入合法地名', 60 | icon: 'error' 61 | }) 62 | return; 63 | } 64 | ServiceProvider.weatherInfo(address).then((e) => { 65 | console.log(e); 66 | this.setState({ 67 | weatherInfo: e.data, 68 | }) 69 | }); 70 | 71 | } 72 | 73 | /// 查询星座 74 | searchStar() { 75 | let star = this.state.star; 76 | console.log(star); 77 | if (star.length == 0) { 78 | Taro.showToast({ 79 | title: '请输入星座', 80 | icon: 'error' 81 | }) 82 | return; 83 | } 84 | ServiceProvider.starInfo(star).then((e) => { 85 | console.log(e); 86 | if (e['code'] == -1) { 87 | Taro.showToast({ 88 | title: '请输入合法星座', 89 | icon: 'error' 90 | }) 91 | return; 92 | } 93 | this.setState({ 94 | starInfo: e, 95 | }) 96 | }); 97 | 98 | } 99 | 100 | /// 地址输入改变 疫情 101 | covid19AddressInput(e) { 102 | this.setState({ 103 | covid19Address: e 104 | }) 105 | } 106 | 107 | /// 地址输入改变 天气 108 | weatherAddressInput(e) { 109 | this.setState({ 110 | weatherAddress: e 111 | }) 112 | } 113 | 114 | // 星座输入改变 115 | starInput(e) { 116 | this.setState({ 117 | star: e 118 | }) 119 | } 120 | 121 | render() { 122 | const {COVID19Info, weatherInfo, starInfo} = this.state; 123 | return ( 124 | 125 | {/*轮播*/} 126 | this.swiperChange(e)} className='swiper-style' autoplay 128 | > 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | {/* 疫情 */} 143 | 144 | 145 | this.covid19AddressInput(e.detail.value)} 146 | placeholder='请输入要查询疫情的地方' 147 | > 148 | 149 | 150 | 151 | 疫情结果: 152 | { 153 | COVID19Info['diagnosis'] > 0 ? 154 | 155 | 地点:{COVID19Info['region']} 156 | 痊愈:{COVID19Info['cure']} 157 | 死亡:{COVID19Info['death']} 158 | 确诊:{COVID19Info['diagnosis']} 159 | 时间:{COVID19Info['time']} 160 | 来源:{COVID19Info['cj']} 161 | : 162 | 没有查到疫情信息 163 | } 164 | 165 | 166 | {/* 天气 */} 167 | 168 | 169 | this.weatherAddressInput(e.detail.value)} 170 | placeholder='请输入要查询天气的地方' 171 | > 172 | 173 | 174 | 175 | 天气结果: 176 | { 177 | weatherInfo.length > 0 ? 178 | 179 | { 180 | weatherInfo.map((e, i) => { 181 | return 182 | {e['riqi']} {e['tianqi']} 183 | 184 | 185 | 温度:{e['wendu']} 186 | 风度:{e['fengdu']} 187 | 空气质量:{e['pm']} 188 | 189 | 190 | }) 191 | } 192 | : 193 | 没有查到天气信息 194 | } 195 | 196 | 197 | {/* 星座 */} 198 | 199 | 200 | this.starInput(e.detail.value)} 201 | placeholder='请输入要查询的星座' 202 | > 203 | 204 | 205 | 206 | 星座结果: 207 | { 208 | Object.getOwnPropertyNames(starInfo).length > 0 ? 209 | 210 | 211 | 星座: 212 | {starInfo['xz']} 213 | 214 | 215 | 提示: 216 | {starInfo['ts']} 217 | 218 | 219 | 幸运颜色: 220 | {starInfo['xyys']} 221 | 222 | 223 | 幸运数字: 224 | {starInfo['xysz']} 225 | 226 | 227 | 贵人方位: 228 | {starInfo['grfw']} 229 | 230 | 231 | 贵人星座: 232 | {starInfo['grxz']} 233 | 234 | 235 | 事业运势: 236 | {starInfo['syys']} 237 | 238 | 239 | 财富运势: 240 | {starInfo['cfys']} 241 | 242 | 243 | 爱情运势: 244 | {starInfo['aqys']} 245 | 246 | 247 | 整体运势 :{starInfo['ztys']} 248 | 249 | : 250 | 没有查到星座信息 251 | } 252 | 253 | 254 | 255 | {/* 历史上的今天 */} 256 | 257 | ) 258 | } 259 | } 260 | 261 | export default Index 262 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/login/index.config.ts: -------------------------------------------------------------------------------- 1 | export default definePageConfig({ 2 | navigationBarTitleText: '登录' 3 | }) 4 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/login/index.less: -------------------------------------------------------------------------------- 1 | .login_bg { 2 | background: no-repeat fixed center url('../../assets/login_bg.png'); 3 | background-size: 100% 100%; 4 | width: 100%; 5 | height: 100%; 6 | position:fixed; 7 | 8 | .login_register_btn { 9 | margin-top: 500px; 10 | // background-color: yellow; 11 | display: flex; 12 | width: 100%; 13 | height: 100px; 14 | justify-content: center; 15 | 16 | .btn_left_unSelect { 17 | background-color: whitesmoke; 18 | width: 150PX; 19 | height: 50PX; 20 | display: flex; 21 | justify-content: center; 22 | align-items: center; 23 | border-top-left-radius: 50PX; 24 | border-bottom-left-radius: 50PX; 25 | font-size: 16PX; 26 | color:black; 27 | } 28 | 29 | .btn_left_select { 30 | background-color: deeppink; 31 | width: 150PX; 32 | height: 50PX; 33 | display: flex; 34 | justify-content: center; 35 | align-items: center; 36 | border-top-left-radius: 50PX; 37 | border-bottom-left-radius: 50PX; 38 | font-size: 16PX; 39 | color:white; 40 | } 41 | 42 | .btn_right_unSelect{ 43 | background-color: whitesmoke; 44 | width: 150PX; 45 | height: 50PX; 46 | display: flex; 47 | justify-content: center; 48 | align-items: center; 49 | border-top-right-radius: 50PX; 50 | border-bottom-right-radius: 50PX; 51 | font-size: 16PX; 52 | color:black; 53 | } 54 | 55 | .btn_right_select{ 56 | background-color: deeppink; 57 | width: 150PX; 58 | height: 50PX; 59 | display: flex; 60 | justify-content: center; 61 | align-items: center; 62 | border-top-right-radius: 50PX; 63 | border-bottom-right-radius: 50PX; 64 | font-size: 16PX; 65 | color:white; 66 | } 67 | } 68 | .login_input_view{ 69 | margin: auto; 70 | width: 80%; 71 | .input_name{ 72 | margin-top: 10PX; 73 | height: 50PX; 74 | background: cornsilk; 75 | border-radius:10PX; 76 | display: flex; 77 | align-items: center; 78 | } 79 | .input_code{ 80 | margin-top: 10PX; 81 | height: 50PX; 82 | background: cornsilk; 83 | border-radius:10PX; 84 | display: flex; 85 | align-items: center; 86 | justify-content: space-between; 87 | .send_code_txt{ 88 | margin-right: 10PX; 89 | font-size: 15PX; 90 | color:red; 91 | } 92 | } 93 | .input_psw{ 94 | margin-top: 10PX; 95 | height: 50PX; 96 | background: cornsilk; 97 | border-radius:10PX; 98 | display: flex; 99 | align-items: center; 100 | justify-content: space-between; 101 | } 102 | .login_mode{ 103 | display: flex; 104 | justify-content: flex-end; 105 | color:White; 106 | font-size: 15PX; 107 | } 108 | } 109 | 110 | .login_bottom_view{ 111 | position: fixed; 112 | bottom: 10%; 113 | width: 100%; 114 | display: flex; 115 | justify-content: center; 116 | .login_bottom_btn{ 117 | width: 200PX; 118 | } 119 | } 120 | 121 | 122 | 123 | 124 | 125 | } 126 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/login/index.tsx: -------------------------------------------------------------------------------- 1 | import {Component, PropsWithChildren} from 'react' 2 | import {View, Button, Text, Input} from '@tarojs/components' 3 | import {observer, inject} from 'mobx-react' 4 | import Taro from '@tarojs/taro' 5 | import CONSTANS from '../../utils/constans' 6 | import './index.less' 7 | 8 | @inject('store') 9 | @observer 10 | class Index extends Component { 11 | 12 | 13 | state = { 14 | loginTag: 0, // 0登录 1注册 15 | loginMode: 0, // 0验证码 1密码 16 | loginCodeNum: 60, // 登录倒计时 17 | registerCodeNum: 60, // 注册倒计时 18 | loginTel: '', // 登录手机号 19 | loginCode: '', // 登录验证码 20 | loginPsw: '', // 登录密码 21 | 22 | registerTel: '', // 注册手机号 23 | registerCode: '', // 注册验证码 24 | registerPsw: '', // 密码 25 | registerPswAgain: '', // 再一次密码 26 | } 27 | 28 | componentDidMount() { 29 | var token = Taro.getStorageSync(CONSTANS.token); 30 | 31 | if (token) { 32 | Taro.switchTab({ 33 | url: '/pages/home/index' 34 | }); 35 | } else { 36 | return; 37 | } 38 | } 39 | 40 | /// 发送登录验证码 41 | sendLoginCodeAction() { 42 | if (this.state.loginCodeNum == 60) { 43 | const timerId = setInterval(() => { 44 | if (this.state.loginCodeNum == 0) { 45 | this.setState({ 46 | loginCodeNum: 60, 47 | }) 48 | clearInterval(timerId); 49 | } else { 50 | this.setState({ 51 | loginCodeNum: this.state.loginCodeNum - 1 52 | }) 53 | } 54 | 55 | }, 1000); 56 | } 57 | } 58 | 59 | /// 发送注册验证码 60 | sendRegisterAction() { 61 | if (this.state.registerCodeNum == 60) { 62 | const timerId = setInterval(() => { 63 | if (this.state.registerCodeNum == 0) { 64 | this.setState({ 65 | registerCodeNum: 60, 66 | }) 67 | clearInterval(timerId); 68 | } else { 69 | this.setState({ 70 | registerCodeNum: this.state.registerCodeNum - 1 71 | }) 72 | } 73 | 74 | }, 1000); 75 | } 76 | } 77 | 78 | /// 切换登录模式 79 | changeLoginMode(index) { 80 | if (index == 0) { 81 | this.setState({ 82 | loginPsw: '', 83 | }) 84 | } else { 85 | this.setState({ 86 | loginCode: '', 87 | }) 88 | } 89 | this.setState({ 90 | loginMode: index 91 | }) 92 | } 93 | 94 | 95 | // 切换登录/注册 96 | changeUIMode(index) { 97 | if (index == 0) { 98 | this.setState({ 99 | registerTel: '', // 注册手机号 100 | registerCode: '', // 注册验证码 101 | registerPsw: '', // 密码 102 | registerPswAgain: '', // 再一次密码 103 | }) 104 | } else { 105 | this.setState({ 106 | loginTel: '', // 登录手机号 107 | loginCode: '', // 登录验证码 108 | loginPsw: '', 109 | }) 110 | } 111 | 112 | this.setState({ 113 | loginTag: index, 114 | }) 115 | } 116 | 117 | // 登录按钮点击 118 | loginAction() { 119 | const {loginTel, loginCode, loginPsw} = this.state; 120 | console.log(loginTel, loginCode, loginPsw); 121 | // 假装开始注册 登录请求 122 | if (loginTel.length < 11) { 123 | Taro.showToast({title: '请输入合法手机号', icon: 'error'}); 124 | return; 125 | } 126 | 127 | 128 | if (loginCode.length < 6) { 129 | Taro.showToast({title: '请输入6位验证码', icon: 'error'}); 130 | return; 131 | } 132 | 133 | // 假装发起登录请求 134 | Taro.showLoading({title: '登录中'}); 135 | setTimeout(function () { 136 | Taro.setStorageSync(CONSTANS.token, 'token'); 137 | Taro.hideLoading(); 138 | Taro.switchTab({ 139 | url: '/pages/home/index' 140 | }); 141 | }, 2000) 142 | 143 | } 144 | 145 | // 注册按钮点击 146 | registerAction() { 147 | const {registerTel, registerCode, registerPsw, registerPswAgain} = this.state; 148 | if (registerTel.length < 11) { 149 | alert('请输入合法手机号'); 150 | } 151 | // ... 假装已经发了验证码 152 | if (registerCode.length < 6) { 153 | Taro.showToast({title: '请输入6位验证码', icon: 'error'}); 154 | return; 155 | } 156 | if (registerPsw.length < 6 || registerPswAgain.length < 6) { 157 | Taro.showToast({title: '密码至少需要6位', icon: 'error'}); 158 | return; 159 | } 160 | if (registerPsw != registerPswAgain) { 161 | Taro.showToast({title: '两次密码不一样', icon: 'error'}); 162 | return; 163 | } 164 | 165 | // 开始注册 并登录 166 | Taro.showLoading({title: '登录中'}); 167 | setTimeout(function () { 168 | Taro.setStorageSync(CONSTANS.token, 'token'); 169 | Taro.hideLoading(); 170 | Taro.switchTab({ 171 | url: '/pages/home/index' 172 | }); 173 | }, 2000) 174 | } 175 | 176 | 177 | /// ***********************************登录********************************************* 178 | 179 | loginTelChange(e) { 180 | this.setState({ 181 | loginTel: e, // 注册手机号, 182 | }) 183 | } 184 | 185 | loginPswChange(e) { 186 | this.setState({ 187 | loginPsw: e, 188 | }) 189 | } 190 | 191 | loginCodeChange(e) { 192 | this.setState({ 193 | loginCode: e, 194 | }) 195 | } 196 | 197 | /// ***********************************注册********************************************* 198 | 199 | registerTelChange(e) { 200 | this.setState({ 201 | registerTel: e, // 注册手机号, 202 | }) 203 | } 204 | 205 | registerCodeChange(e) { 206 | this.setState({ 207 | registerCode: e, 208 | }) 209 | } 210 | 211 | registerPswChange(e) { 212 | this.setState({ 213 | registerPsw: e, 214 | }) 215 | } 216 | 217 | registerPswAgainPswChange(e) { 218 | this.setState({ 219 | registerPswAgain: e, 220 | }) 221 | } 222 | 223 | 224 | render() { 225 | const { 226 | loginTag, 227 | loginCodeNum, 228 | loginMode, 229 | registerCodeNum, 230 | loginCode, 231 | loginTel, 232 | loginPsw, 233 | registerTel, 234 | registerCode, 235 | registerPsw, 236 | registerPswAgain 237 | } = this.state; 238 | return ( 239 | 240 | 241 | {/* 登录 注册 按钮 */} 242 | 243 | this.changeUIMode(0)} 245 | className={loginTag == 0 ? 'btn_left_select' : 'btn_left_unSelect'} 246 | > 247 | 登录 248 | 249 | this.changeUIMode(1)} 251 | className={loginTag == 1 ? 'btn_right_select' : 'btn_right_unSelect'} 252 | > 253 | 注册 254 | 255 | 256 | {/* 输入框 */} 257 | { 258 | loginTag == 0 ? 259 | 260 | 261 | this.loginTelChange(e.detail.value)} 262 | placeholder='请输入手机号' 263 | > 264 | 265 | { 266 | loginMode == 0 ? 267 | 268 | this.loginCodeChange(e.detail.value)} 269 | placeholder='请输入验证码' 270 | > 271 | 275 | {loginCodeNum == 60 ? "发送验证码" : loginCodeNum} 276 | 277 | 278 | : 279 | 280 | this.loginPswChange(e.detail.value)} 281 | placeholder='输入密码' 282 | > 283 | 284 | } 285 | 286 | { 287 | loginMode == 0 ? 288 | this.changeLoginMode(1)}> 289 | 验证码登录 290 | 291 | : 292 | this.changeLoginMode(0)}> 293 | 密码登录 294 | 295 | 296 | } 297 | 298 | : 299 | 300 | 301 | this.registerTelChange(e.detail.value)} 302 | placeholder='请输入手机号' 303 | > 304 | 305 | 306 | this.registerCodeChange(e.detail.value)} 307 | placeholder='请输入验证码' 308 | > 309 | 310 | {registerCodeNum == 60 ? "发送验证码" : registerCodeNum} 311 | 312 | 313 | 314 | this.registerPswChange(e.detail.value)} 315 | placeholder='输入密码' 316 | > 317 | 318 | 319 | this.registerPswAgainPswChange(e.detail.value)} 320 | placeholder='再次输入密码' 321 | > 322 | 323 | 324 | } 325 | {/* 底部按钮 */} 326 | 327 | { 328 | loginTag == 0 ? 329 | 330 | 331 | 332 | : 333 | 334 | 335 | 336 | } 337 | 338 | 339 | 340 | 341 | ) 342 | } 343 | } 344 | 345 | export default Index 346 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/mine/index.config.ts: -------------------------------------------------------------------------------- 1 | export default definePageConfig({ 2 | navigationBarTitleText: '我的' 3 | }) 4 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/mine/index.less: -------------------------------------------------------------------------------- 1 | .mine-bg { 2 | height: 100%; 3 | width: 100%; 4 | position: fixed; 5 | //background-color: crimson; 6 | .user_info { 7 | display: flex; 8 | border: cadetblue 1PX solid; 9 | 10 | .avatar { 11 | width: 100PX; 12 | height: 100PX; 13 | border-radius: 50PX; 14 | margin: 20PX; 15 | } 16 | 17 | .name_gender { 18 | display: flex; 19 | flex-direction: column; 20 | justify-content: space-around; 21 | 22 | .userName { 23 | display: block; 24 | font-size: 16PX; 25 | } 26 | 27 | .gender { 28 | display: block; 29 | font-size: 14PX; 30 | } 31 | } 32 | } 33 | 34 | .qq { 35 | margin-top: 10PX; 36 | //background-color: crimson; 37 | .qq_input { 38 | display: flex; 39 | justify-content: space-between; 40 | 41 | .input { 42 | margin-left: 10PX; 43 | font-size: 14PX; 44 | width: 80%; 45 | //background-color:yellow; 46 | display: flex; 47 | justify-content: center; 48 | align-items: center; 49 | } 50 | 51 | .search-btn { 52 | width: 100PX; 53 | height: 40PX; 54 | } 55 | } 56 | 57 | .qq_info { 58 | margin-left: 20PX; 59 | font-size: 15PX; 60 | } 61 | } 62 | 63 | .version { 64 | position: fixed; 65 | bottom: 100PX; 66 | text-align: center; 67 | width: 100%; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/mine/index.tsx: -------------------------------------------------------------------------------- 1 | import { Component, PropsWithChildren } from 'react' 2 | import {View, Text, Image, Input, Button} from '@tarojs/components' 3 | import { observer, inject } from 'mobx-react' 4 | import './index.less'; 5 | import Taro from "@tarojs/taro"; 6 | import ServiceProvider from "../../service/service_provider"; 7 | 8 | @inject('store') 9 | @observer 10 | class Index extends Component { 11 | 12 | state = { 13 | qq:'', 14 | qqInfo:{}, 15 | } 16 | 17 | componentDidMount(): void { 18 | 19 | } 20 | 21 | searchQQ(){ 22 | let qq = this.state.qq; 23 | console.log(qq); 24 | if (qq.length == 0) { 25 | Taro.showToast({ 26 | title: '请输入合法QQ', 27 | icon: 'error' 28 | }) 29 | return; 30 | } 31 | ServiceProvider.qqInfo(qq).then((e) => { 32 | console.log(e); 33 | this.setState({ 34 | qqInfo: e, 35 | }) 36 | }); 37 | } 38 | 39 | qqInput(e){ 40 | this.setState({ 41 | qq:e 42 | }) 43 | } 44 | 45 | render () { 46 | const {qqInfo} = this.state; 47 | return ( 48 | 49 | {/* 用户信息 */} 50 | 51 | 52 | 53 | 用户名:未知 54 | 性别:未知 55 | 56 | 57 | {/* QQ信息*/} 58 | 59 | 60 | this.qqInput(e.detail.value)} placeholder='请输入要查询的QQ' 61 | > 62 | 63 | 64 | 65 | QQ查询结果: 66 | { 67 | Object.getOwnPropertyNames(qqInfo).length > 0 ? 68 | 69 | 用户名:{qqInfo['nickname']} 70 | 邮箱:{qqInfo['email']} 71 | 72 | 头像: 73 | 74 | 75 | : 76 | 没有查到QQ信息 77 | } 78 | 79 | 80 | 81 | 0.0.1 82 | 83 | 84 | ) 85 | } 86 | } 87 | 88 | export default Index 89 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/news/index.config.ts: -------------------------------------------------------------------------------- 1 | export default definePageConfig({ 2 | navigationBarTitleText: '新闻' 3 | }) 4 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/news/index.less: -------------------------------------------------------------------------------- 1 | .item{ 2 | margin-bottom: 10PX; 3 | border-bottom: cadetblue 1PX dashed; 4 | } 5 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/news/index.tsx: -------------------------------------------------------------------------------- 1 | import { Component, PropsWithChildren } from 'react' 2 | import {Text,ScrollView,View} from '@tarojs/components' 3 | import { observer, inject } from 'mobx-react' 4 | import Taro from '@tarojs/taro'; 5 | import ServiceProvider from "../../service/service_provider"; 6 | import './index.less'; 7 | 8 | @inject('store') 9 | @observer 10 | class Index extends Component { 11 | 12 | state = { 13 | newsData : [], // 新闻list 14 | } 15 | 16 | componentDidMount(): void { 17 | this.getNewsData(); 18 | } 19 | 20 | getNewsData(){ 21 | ServiceProvider.newInfo().then((e) => { 22 | console.log(e); 23 | if(e['code'] == 1){ 24 | this.setState({ 25 | newsData: e['data'], 26 | }) 27 | } 28 | }); 29 | } 30 | 31 | // 点击item 32 | // @ts-ignore 33 | onclickItem(e){ 34 | let link = e['link']; 35 | Taro.navigateTo({ 36 | url: 'pages/news_details/index?link=' + link 37 | }).then(_ =>{}); 38 | } 39 | 40 | render () { 41 | const {newsData} = this.state; 42 | return ( 43 | {}} 45 | > 46 | { 47 | newsData.length > 0 ? 48 | newsData.map((e,i) => { 49 | return this.onclickItem(e)} key={i} > 50 | 标题: {e['title']} 51 | 点赞数: {e['heat']} 52 | 53 | }) 54 | 55 | :无数据 56 | } 57 | 58 | ) 59 | } 60 | } 61 | 62 | export default Index 63 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/news_details/index.config.ts: -------------------------------------------------------------------------------- 1 | export default definePageConfig({ 2 | navigationBarTitleText: '新闻详情' 3 | }) 4 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/news_details/index.less: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/pages/news_details/index.tsx: -------------------------------------------------------------------------------- 1 | import {Component, PropsWithChildren} from 'react' 2 | import {View, WebView} from '@tarojs/components' 3 | import {observer, inject} from 'mobx-react' 4 | import {getCurrentInstance} from '@tarojs/taro' 5 | import './index.less'; 6 | 7 | @inject('store') 8 | @observer 9 | class Index extends Component { 10 | 11 | state = { 12 | url: '' 13 | } 14 | 15 | componentDidMount() { 16 | const link = getCurrentInstance().router?.params.link; 17 | this.setState({ 18 | url: link 19 | }) 20 | } 21 | 22 | render() { 23 | return ( 24 | 25 | 26 | 27 | ) 28 | } 29 | } 30 | 31 | export default Index 32 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/service/service_method.ts: -------------------------------------------------------------------------------- 1 | import Taro from '@tarojs/taro'; 2 | // import apiConfig from './service_url' 3 | 4 | // 网络请求拦截器 5 | // const interceptor = function (chain) { 6 | // const requestParams = chain.requestParams 7 | // // const { method, data, url } = requestParams 8 | // let token = Taro.getStorageSync('TOKEN')//拿到本地缓存中存的token 9 | // requestParams.header = { 10 | // ...requestParams.header, 11 | // Authorization: 'Bearer ' + token //将token添加到头部 12 | // } 13 | // return chain.proceed(requestParams).then(res => { return res }) 14 | // } 15 | // 16 | // Taro.addInterceptor(interceptor) 17 | 18 | const request = async (method, url, params) => { 19 | //由于post请求时习惯性query参数使用params,body参数使用data,而taro只有data参数,使用contentType作为区分,因此此处需要做一个判断 20 | let contentType = params?.data ? 'application/json' : 'application/x-www-form-urlencoded'; 21 | if (params) contentType = params?.headers?.contentType || contentType; 22 | const option = { 23 | method, 24 | isShowLoading: false, 25 | url: url, 26 | data: params && (params?.data || params?.params), 27 | header: { 28 | 'content-type': contentType, 29 | }, 30 | success(res) { 31 | //根据不同返回状态值3进行操作 32 | switch (res?.statusCode) { 33 | case 503: { 34 | break; 35 | } 36 | default: 37 | break; 38 | } 39 | }, 40 | error(e) { 41 | console.log('api', '请求接口出现问题', e); 42 | } 43 | } 44 | const resp = await Taro.request(option); 45 | return resp.data;//根据个人需要返回 46 | } 47 | 48 | export default { 49 | get: (url, config) => { 50 | return request('GET', url, config); 51 | }, 52 | post: (url, config) => { 53 | return request('POST', url, config); 54 | }, 55 | put: (url, config) => { 56 | return request('PUT', url, config); 57 | }, 58 | delete: (url, config) => { 59 | return request('DELETE', url, config); 60 | }, 61 | patch: (url, config) => { 62 | return request('PATCH', url, config); 63 | }, 64 | } 65 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/service/service_provider.ts: -------------------------------------------------------------------------------- 1 | import ServiceMethod from './service_method'; 2 | import ServiceUrl from "./service_url"; 3 | 4 | 5 | function COVID19Info(address) { 6 | let url = ServiceUrl.COVID19Url + '?city=' + address; 7 | return ServiceMethod.get(url,{}); 8 | } 9 | 10 | function weatherInfo(address) { 11 | let url = ServiceUrl.weatherUrl + '?msg=' + address + '&type=1' 12 | return ServiceMethod.get(url, {}); 13 | } 14 | 15 | function starInfo(star) { 16 | let url = ServiceUrl.starUrl + '?msg=' + star; 17 | return ServiceMethod.get(url, {}); 18 | } 19 | 20 | function qqInfo(qq) { 21 | let url = ServiceUrl.QQInfo + '?qq=' + qq; 22 | return ServiceMethod.get(url, {}); 23 | } 24 | 25 | function newInfo() { 26 | let url = ServiceUrl.newsListUrl; 27 | return ServiceMethod.get(url, {}); 28 | } 29 | 30 | 31 | export default { 32 | weatherInfo, 33 | COVID19Info, 34 | starInfo, 35 | qqInfo, 36 | newInfo, 37 | } 38 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/service/service_url.ts: -------------------------------------------------------------------------------- 1 | 2 | const api = { 3 | // 首页 4 | COVID19Url:'https://v.api.aa1.cn/api/api-yq/index.php', // 疫情信息 5 | starUrl:'https://v.api.aa1.cn/api/xingzuo', // 星座运势 6 | weatherUrl:'https://v.api.aa1.cn/api/api-tianqi-3/index.php', // 天气 7 | // 新闻 8 | newsListUrl:'https://v.api.aa1.cn/api/bilibili-rs/', // 新闻接口 9 | // 我的 10 | QQInfo:'https://v.api.aa1.cn/api/qqjson/index.php', // 获取QQ信息 11 | avatarUrl:'https://v.api.aa1.cn/api/api-tx/index.php?wpon=aosijur75fi5huyty5f', // 随机头像 12 | } 13 | 14 | export default api; 15 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/store/counter.ts: -------------------------------------------------------------------------------- 1 | import { observable } from 'mobx' 2 | 3 | const counterStore = observable({ 4 | counter: 0, 5 | counterStore() { 6 | this.counter++ 7 | }, 8 | increment() { 9 | this.counter++ 10 | }, 11 | decrement() { 12 | this.counter-- 13 | }, 14 | incrementAsync() { 15 | setTimeout(() => { 16 | this.counter++ 17 | }, 1000) 18 | } 19 | }) 20 | 21 | export default counterStore -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/store/login.ts: -------------------------------------------------------------------------------- 1 | import { observable } from 'mobx' 2 | 3 | const loginStore = observable({ 4 | counter: 0, 5 | counterStore() { 6 | this.counter++ 7 | }, 8 | increment() { 9 | this.counter++ 10 | }, 11 | decrement() { 12 | this.counter-- 13 | }, 14 | incrementAsync() { 15 | setTimeout(() => { 16 | this.counter++ 17 | }, 1000) 18 | } 19 | }) 20 | 21 | export default loginStore -------------------------------------------------------------------------------- /微信小程序/taro/myApp/src/utils/constans.ts: -------------------------------------------------------------------------------- 1 | const CONSTANS = { 2 | token:'TOKEN', 3 | } 4 | 5 | export default CONSTANS; 6 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "commonjs", 5 | "removeComments": false, 6 | "preserveConstEnums": true, 7 | "moduleResolution": "node", 8 | "experimentalDecorators": true, 9 | "noImplicitAny": false, 10 | "allowSyntheticDefaultImports": true, 11 | "outDir": "lib", 12 | "noUnusedLocals": true, 13 | "noUnusedParameters": true, 14 | "strictNullChecks": true, 15 | "sourceMap": true, 16 | "baseUrl": ".", 17 | "rootDir": ".", 18 | "jsx": "react-jsx", 19 | "allowJs": true, 20 | "resolveJsonModule": true, 21 | "typeRoots": [ 22 | "node_modules/@types" 23 | ] 24 | }, 25 | "include": ["./src", "./types"], 26 | "compileOnSave": false 27 | } 28 | -------------------------------------------------------------------------------- /微信小程序/taro/myApp/types/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | declare module '*.jpg'; 6 | declare module '*.jpeg'; 7 | declare module '*.svg'; 8 | declare module '*.css'; 9 | declare module '*.less'; 10 | declare module '*.scss'; 11 | declare module '*.sass'; 12 | declare module '*.styl'; 13 | 14 | declare namespace JSX { 15 | interface IntrinsicElements { 16 | 'import': React.DetailedHTMLProps, HTMLEmbedElement> 17 | } 18 | } 19 | 20 | declare namespace NodeJS { 21 | interface ProcessEnv { 22 | TARO_ENV: 'weapp' | 'swan' | 'alipay' | 'h5' | 'rn' | 'tt' | 'quickapp' | 'qq' | 'jd' 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /微信小程序/taro/register.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/register.jpg -------------------------------------------------------------------------------- /微信小程序/taro/taro截图1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/taro截图1.jpg -------------------------------------------------------------------------------- /微信小程序/taro/taro截图2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/taro截图2.jpg -------------------------------------------------------------------------------- /微信小程序/taro/taro截图3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/taro截图3.jpg -------------------------------------------------------------------------------- /微信小程序/taro/taro截图4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/taro截图4.jpg -------------------------------------------------------------------------------- /微信小程序/taro/taro截图5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/taro截图5.jpg -------------------------------------------------------------------------------- /微信小程序/taro/taro版本.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/taro版本.jpg -------------------------------------------------------------------------------- /微信小程序/taro/使用.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaoting0730/mobile-learn/dc5dce780505dd95b932bd9834fd6bea0c98088f/微信小程序/taro/使用.jpg -------------------------------------------------------------------------------- /杂类/README.md: -------------------------------------------------------------------------------- 1 | [ free-api ]( https://github.com/fangzesheng/free-api)
2 | [ TCP/IP详解 ]( http://www.52im.net/topic-tcpipvol1.html )
3 | [ Socket ]( https://github.com/shaoting0730/mobile-learn/blob/master/Socket.md )
4 | [ public-apis ]( https://github.com/public-apis/public-apis )
5 | [ awesome-bilibili ]( https://github.com/SyMind/awesome-bilibili )
6 | [ 可持续集成相关 ]( https://github.com/shaoting0730/mobile-learn/blob/master/%E5%8F%AF%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E7%9B%B8%E5%85%B3%E7%AF%87.md )
7 | -------------------------------------------------------------------------------- /杂类/Socket.md: -------------------------------------------------------------------------------- 1 | [ 新手入门一篇就够:从零开发移动端IM ]( http://www.52im.net/thread-464-1-1.html )
2 | [ Socket??? ]( http://c.biancheng.net/socket/ )
3 | [ IOS公开课之socket上 ]( https://v.qq.com/x/page/p0504pln68d.html )
4 | [ IOS公开课之socket下 ]( https://v.qq.com/x/page/l0504qxz01v.html )
5 | [ Socket技术详解 ]( https://www.jianshu.com/p/066d99da7cbd )
6 | [ Socket粘包问题 ]( https://blog.csdn.net/binghuazh/article/details/4222516 )
7 | -------------------------------------------------------------------------------- /杂类/可持续集成相关篇.md: -------------------------------------------------------------------------------- 1 | ## jenkins 2 | [ jenkins ]( https://www.jenkins.io/ )
3 | [ jenkins教程 ]( https://blog.csdn.net/zhishidi/article/details/118082509 )
4 | [ jenkins教程 ]( https://www.jianshu.com/p/5f671aca2b5a )
5 | 6 | ## docker 7 | [ docker ]( https://github.com/jenkinsci/docker )
8 | [ Docker 教程 ]( https://www.runoob.com/docker/docker-tutorial.html )
9 | [ Docker教程 ]( https://www.php.cn/course/list/34.html )
10 | [ Docker教程 ]( https://mp.weixin.qq.com/s/oEygasL-5owZ5b8mV6uMTw )
11 | 12 | 13 | ## fastlane 14 | [ fastlane ]( https://github.com/fastlane/fastlane )
15 | [ fastlane教程 ]( https://www.jianshu.com/p/937f0856eb66 )
16 | [ 使用 Fastlane 上传 App 到蒲公英 ]( https://www.pgyer.com/doc/view/fastlane )
17 | 18 | 19 | -------------------------------------------------------------------------------- /鸿蒙/README.md: -------------------------------------------------------------------------------- 1 | > [ 学习历程demo ]( https://github.com/shaoting0730/HarmonyOS_learn_demo )
2 | > [ HarmonyOS官网 ]( https://developer.harmonyos.com/cn )
3 | > [ 三方库中央仓 ]( https://ohpm.openharmony.cn/#/cn/home )
4 | > [ codelabs开发案例 ]( https://gitee.com/harmonyos/codelabs )
5 | > [ app_samples ]( https://gitee.com/openharmony/app_samples )
6 | > [ samples ]( https://gitee.com/openharmony/applications_app_samples )
7 | > [ 最新鸿蒙关于Flutter支持的分享 ]( https://live.csdn.net/room/csdnnews/FHtQMZXa )
8 | > [ OpenHarmony文档仓库 ]( https://gitee.com/openharmony/docs )
9 | > [ flutter sdk对于OpenHarmony的兼容拓展,可支持使用flutter tools指令编译和构建OpenHarmony应用程序 ]( https://gitee.com/openharmony-sig/flutter_flutter )
10 | > [ 糖果对鸿蒙原生插件的适配 ]( https://github.com/HarmonyCandies )
11 | > [ OpenHarmony 开发者论坛 ]( https://forums.openharmony.cn/ )
12 | > [ 相关网站 ]( https://openharmony.gitee.com/openharmony )
13 | > [ Candies organization ]( https://github.com/HarmonyCandies )
14 | > [ 不吹不黑聊鸿蒙 ]( https://www.bilibili.com/video/BV18T4y1h7ch/?spm_id_from=333.999.0.0 )
15 | > [ 鸿蒙开发者学堂 ]( https://developer.huawei.com/consumer/cn/training/study-path/101652404956923765 )
16 | > [ 黑马程序员HarmonyOS4+NEXT ]( https://www.bilibili.com/video/BV1Sa4y1Z7B1/?spm_id_from=333.337.search-card.all.click&vd_source=bc5bee468c2cbda6193e66c4288c8c7b )
17 | > [ Rust 跨平台-Android 和鸿蒙 OS ]( https://mp.weixin.qq.com/s/BOtAS5TjeGSTW5eZbVhbnw )
18 | 19 | > [ 仓颉编程语言白皮书 ]( https://developer.huawei.com/consumer/cn/doc/openharmony-cangjie/cj-wp-abstract )
20 | 21 | 22 | 23 | 24 | 25 | --------------------------------------------------------------------------------