├── 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 ) [](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 ) [](https://github.com/shaoting0730/Flutter_learn_demo)
2 | [ 电商项目实战 ]( https://github.com/shaoting0730/flutter_shop ) [](https://github.com/shaoting0730/flutter_shop)
3 | [ 项目实战练习 ]( https://github.com/shaoting0730/flutter_video_audio_news ) [](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 ) [](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 ) [](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 ) [](https://github.com/shaoting0730/IOS-native-and-React-native-interaction)
8 | [ 关于Android和React Native的简单交互 ]( https://github.com/shaoting0730/androidrn ) [](https://github.com/shaoting0730/androidrn)
9 | [ react-navigation的介绍 ]( https://github.com/shaoting0730/navigationDemo ) [](https://github.com/shaoting0730/navigationDemo)
10 | [ react-navigation先登录再Tab ]( https://github.com/shaoting0730/loginRN/tree/master ) [](https://github.com/shaoting0730/loginRN)
11 | [ react-navigation的基本使用 ]( https://github.com/shaoting0730/react-navigation-use ) [](https://github.com/shaoting0730/react-navigation-use)
12 | [ React-Native 新推出的列表组件FlatList SectionList 学习 ]( https://github.com/shaoting0730/RN-FlatList-SectionList ) [](https://github.com/shaoting0730/RN-FlatList-SectionList)
13 | [ react-native-videoDemo 网络音乐播放器 ]( https://github.com/shaoting0730/react-native-videoDemo ) [](https://github.com/shaoting0730/react-native-videoDemo)
14 | [ react-native 微博demo ]( https://github.com/shaoting0730/react_native_weibo ) [](https://github.com/shaoting0730/react_native_weibo)
15 | [ Mobx与react-navigation的结合使用 ]( https://github.com/shaoting0730/mobx_reactNavigation_demo ) [](https://github.com/shaoting0730/mobx_reactNavigation_demo)
16 | [ redux与react-navigation的结合使用 ]( https://github.com/shaoting0730/RN_nav ) [](https://github.com/shaoting0730/RN_nav)
17 | [ dva与react-navigation的结合使用 ]( https://github.com/shaoting0730/rn_dva ) [](https://github.com/shaoting0730/rn_dva)
18 | [ 二维码扫描(react-native-camera) ]( https://github.com/shaoting0730/scanDemo ) [](https://github.com/shaoting0730/scanDemo)
19 | [ 前置登录 ]( https://github.com/shaoting0730/lead_the_login/tree/master ) [](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) [](https://github.com/shaoting0730/webRN)
25 | [react_navigation3.X demo](https://github.com/shaoting0730/react_navigation3.x_demo) [](https://github.com/shaoting0730/react_navigation3.x_demo)
26 | [react_navigation3.X 与 Mobx结合使用](https://github.com/shaoting0730/mobxRN) [](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 ) [](https://github.com/shaoting0730/danMu)
17 | [ 学学习下动画 ]( https://github.com/shaoting0730/iOSAnimationLearn ) [](https://github.com/shaoting0730/iOSAnimationLearn)
18 | [ 二维码学习 ]( https://github.com/shaoting0730/QRcode ) [](https://github.com/shaoting0730/QRcode)
19 | [ 九宫格密码学习 ]( https://github.com/shaoting0730/iOS-nineLock ) [](https://github.com/shaoting0730/iOS-nineLock)
20 | [ iOS-touchID-demo ]( https://github.com/shaoting0730/iOS-touchID-demo ) [](https://github.com/shaoting0730/iOS-touchID-demo)
21 | [ iOS-Scoket入门 ]( https://github.com/shaoting0730/iOS-Scoket- ) [](https://github.com/shaoting0730/iOS-Scoket-)
22 | [ JavaScriptCore.framework的简单使用--JS与OC的交互 ]( https://github.com/shaoting0730/JavaScriptCore_demo ) [](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 ) [](https://github.com/shaoting0730/swift_study)
29 | [ swift制作的音视频demo,已适配swift3+ ]( https://github.com/shaoting0730/swift-video-audio ) [](https://github.com/shaoting0730/swift-video-audio)
30 | [ 第一次学习游戏开发 采用swift3.0 ]( https://github.com/shaoting0730/Flappy-Bird ) [](https://github.com/shaoting0730/Flappy-Bird)
31 | [ 之前项目的相机模块,保留一下 ]( https://github.com/shaoting0730/swift_custom_camera ) [](https://github.com/shaoting0730/swift_custom_camera)
32 | [ swift简单处理调用高清大图导致内存暴涨的情况 ]( https://github.com/shaoting0730/swift-imagePicker-memory ) [](https://github.com/shaoting0730/swift-imagePicker-memory)
33 | [ swift3.0-自定义键盘 ]( https://github.com/shaoting0730/swift3.0-emojiKeyboard ) [](https://github.com/shaoting0730/swift3.0-emojiKeyboard)
34 | [ swift4.0 JSON转模型 ]( https://github.com/shaoting0730/swift_study ) [](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 ) [](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 | 
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 | 
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 | 
4 | 
5 | ## 截图
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
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 |
4 |
5 |
6 |
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 |
--------------------------------------------------------------------------------