• 小程序框架->框架,视图层,生命周期(逻辑层)


    • 框架
    • 视图层
    • 生命周期(逻辑层)

    1.框架

    小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。

    整个小程序框架系统分为两部分:**[逻辑层](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/)**(App Service)和 **[视图层](https://developers.weixin.qq.com/miniprogram/dev/framework/view/)**(View)。小程序提供了自己的视图层描述语言 `WXML` 和 `WXSS`,以及基于 `JavaScript` 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。
     

    2.视图层

    1. //min2\app.json
    2. {
    3. "pages":[
    4. "pages/a/a",
    5. "pages/b/b",
    6. "pages/c/c",
    7. "pages/d/d",
    8. "pages/user/user",
    9. "pages/index/index",
    10. "pages/logs/logs"
    11. ],
    12. "window":{
    13. "backgroundTextStyle":"light",
    14. "navigationBarBackgroundColor": "#00f",
    15. "navigationBarTitleText": "Weixin",
    16. "navigationBarTextStyle":"black"
    17. },
    18. "style": "v2",
    19. "sitemapLocation": "sitemap.json"
    20. }
    1. //min2\pages\a\a.js
    2. C:\Users\朱\WeChatProjects\min2\pages\a\a.json
    3. C:\Users\朱\WeChatProjects\min2\pages\a\a.wxml
    4. C:\Users\朱\WeChatProjects\min2\pages\a\a.wxss
    5. {{message}}
    6. for="{{array}}"> {{item}}
    7. for="{{users}}"> 用户编号:{{item.id}};用户姓名:{{item.name}}
    8. if="{{view == '1'}}"> WEBVIEW
    9. "{{view == '2'}}"> APP
    10. else="{{view == '3'}}"> MINA
    11. "tapTest" data-hi="Weixin" data-meetingState="6" bindtap="tapName"> Click me!
    1. // pages/a/a.js
    2. Page({
    3. /**
    4. * 页面的初始数据
    5. */
    6. data: {
    7. message: 'Hello 页面一',
    8. array:[1,2,3,4,5],
    9. users:[{id:1,name:'牛逼'},{id:2,name:'晴天'},{id:3,name:'雨天'}],
    10. view:2,
    11. staffA: {firstName: 'Hulk', lastName: 'Hu'},
    12. staffB: {firstName: 'Shang', lastName: 'You'},
    13. staffC: {firstName: 'Gideon', lastName: 'Lin'}
    14. },
    15. tapName: function(event) {
    16. console.log(event);
    17. console.log(event.target.dataset);
    18. },
    19. /**
    20. * 生命周期函数--监听页面加载
    21. */
    22. onLoad(options) {
    23. },
    24. /**
    25. * 生命周期函数--监听页面初次渲染完成
    26. */
    27. onReady() {
    28. },
    29. /**
    30. * 生命周期函数--监听页面显示
    31. */
    32. onShow() {
    33. },
    34. /**
    35. * 生命周期函数--监听页面隐藏
    36. */
    37. onHide() {
    38. },
    39. /**
    40. * 生命周期函数--监听页面卸载
    41. */
    42. onUnload() {
    43. },
    44. /**
    45. * 页面相关事件处理函数--监听用户下拉动作
    46. */
    47. onPullDownRefresh() {
    48. },
    49. /**
    50. * 页面上拉触底事件的处理函数
    51. */
    52. onReachBottom() {
    53. },
    54. /**
    55. * 用户点击右上角分享
    56. */
    57. onShareAppMessage() {
    58. }
    59. })

    2.生命周期(逻辑层)

    ## 响应的数据绑定

    框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新。

    1. //min2\app.json
    2. {
    3. "pages":[
    4. "pages/index/index",
    5. "pages/a/a",
    6. "pages/b/b",
    7. "pages/c/c",
    8. "pages/d/d",
    9. "pages/user/user",
    10. "pages/logs/logs"
    11. ],
    12. "window":{
    13. "backgroundTextStyle":"light",
    14. "navigationBarBackgroundColor": "#00f",
    15. "navigationBarTitleText": "Weixin",
    16. "navigationBarTextStyle":"black"
    17. },
    18. "tabBar": {
    19. "list": [{
    20. "pagePath": "pages/index/index",
    21. "text": "首页"
    22. }, {
    23. "pagePath": "pages/a/a",
    24. "text": "a页面"
    25. }, {
    26. "pagePath": "pages/b/b",
    27. "text": "b页面"
    28. }]
    29. },
    30. "style": "v2",
    31. "sitemapLocation": "sitemap.json"
    32. }

     

    1. // pages/a/a.js
    2. Page({
    3. /**
    4. * 页面的初始数据
    5. */
    6. data: {
    7. message: 'Hello 页面一',
    8. array:[1,2,3,4,5],
    9. users:[{id:1,name:'牛逼'},{id:2,name:'晴天'},{id:3,name:'雨天'}],
    10. view:2,
    11. staffA: {firstName: 'Hulk', lastName: 'Hu'},
    12. staffB: {firstName: 'Shang', lastName: 'You'},
    13. staffC: {firstName: 'Gideon', lastName: 'Lin'}
    14. },
    15. tapName: function(event) {
    16. console.log(event);
    17. console.log(event.target.dataset);
    18. },
    19. a2b:function() {
    20. wx.switchTab({
    21. url: '/pages/b/b',
    22. })
    23. },
    24. a2c:function() {
    25. wx.navigateTo({
    26. url: '/pages/c/c',
    27. })
    28. },
    29. /**
    30. * 生命周期函数--监听页面加载
    31. */
    32. onLoad(options) {
    33. console.log("a.onload");
    34. },
    35. /**
    36. * 生命周期函数--监听页面初次渲染完成
    37. */
    38. onReady() {
    39. console.log("a.onReady");
    40. },
    41. /**
    42. * 生命周期函数--监听页面显示
    43. */
    44. onShow() {
    45. console.log("a.onShow");
    46. },
    47. /**
    48. * 生命周期函数--监听页面隐藏
    49. */
    50. onHide() {
    51. console.log("a.onHide");
    52. },
    53. /**
    54. * 生命周期函数--监听页面卸载
    55. */
    56. onUnload() {
    57. console.log("a.onUnload");
    58. },
    59. /**
    60. * 页面相关事件处理函数--监听用户下拉动作
    61. */
    62. onPullDownRefresh() {
    63. },
    64. /**
    65. * 页面上拉触底事件的处理函数
    66. */
    67. onReachBottom() {
    68. },
    69. /**
    70. * 用户点击右上角分享
    71. */
    72. onShareAppMessage() {
    73. }
    74. })

     

    1. {{message}}
    2. for="{{array}}"> {{item}}
    3. for="{{users}}"> 用户编号:{{item.id}};用户姓名:{{item.name}}
    4. if="{{view == '1'}}"> WEBVIEW
    5. "{{view == '2'}}"> APP
    6. else="{{view == '3'}}"> MINA
    7. "tapTest" data-hi="Weixin" data-meetingState="6" bindtap="tapName"> Click me!
    1. // pages/b/b.js
    2. Page({
    3. /**
    4. * 页面的初始数据
    5. */
    6. data: {
    7. },
    8. /**
    9. * 生命周期函数--监听页面加载
    10. */
    11. onLoad(options) {
    12. console.log("b.onload");
    13. },
    14. /**
    15. * 生命周期函数--监听页面初次渲染完成
    16. */
    17. onReady() {
    18. console.log("b.onReady");
    19. },
    20. /**
    21. * 生命周期函数--监听页面显示
    22. */
    23. onShow() {
    24. console.log("b.onShow");
    25. },
    26. /**
    27. * 生命周期函数--监听页面隐藏
    28. */
    29. onHide() {
    30. console.log("b.onHide");
    31. },
    32. /**
    33. * 生命周期函数--监听页面卸载
    34. */
    35. onUnload() {
    36. console.log("b.onUnload");
    37. },
    38. /**
    39. * 页面相关事件处理函数--监听用户下拉动作
    40. */
    41. onPullDownRefresh() {
    42. },
    43. /**
    44. * 页面上拉触底事件的处理函数
    45. */
    46. onReachBottom() {
    47. },
    48. /**
    49. * 用户点击右上角分享
    50. */
    51. onShareAppMessage() {
    52. }
    53. })
    1. // pages/c/c.js
    2. // import c from cs
    3. Page({
    4. /**
    5. * 页面的初始数据
    6. */
    7. data: {
    8. },
    9. c2b:function() {
    10. wx.switchTab({
    11. url:'/pages/b/b',
    12. })
    13. },
    14. c2d:function() {
    15. wx.navigateTo({
    16. url: '/pages/d/d',
    17. })
    18. },
    19. /**
    20. * 生命周期函数--监听页面加载
    21. */
    22. onLoad(options) {
    23. console.log("c.onload");
    24. },
    25. /**
    26. * 生命周期函数--监听页面初次渲染完成
    27. */
    28. onReady() {
    29. console.log("c.onReady");
    30. },
    31. /**
    32. * 生命周期函数--监听页面显示
    33. */
    34. onShow() {
    35. console.log("c.onShow");
    36. },
    37. /**
    38. * 生命周期函数--监听页面隐藏
    39. */
    40. onHide() {
    41. console.log("c.onHide");
    42. },
    43. /**
    44. * 生命周期函数--监听页面卸载
    45. */
    46. onUnload() {
    47. console.log("c.onUnload");
    48. },
    49. /**
    50. * 页面相关事件处理函数--监听用户下拉动作
    51. */
    52. onPullDownRefresh() {
    53. },
    54. /**
    55. * 页面上拉触底事件的处理函数
    56. */
    57. onReachBottom() {
    58. },
    59. /**
    60. * 用户点击右上角分享
    61. */
    62. onShareAppMessage() {
    63. }
    64. })
    1. pages/c/c.wxml
    1. // pages/d/d.js
    2. Page({
    3. /**
    4. * 页面的初始数据
    5. */
    6. data: {
    7. },
    8. /**
    9. * 生命周期函数--监听页面加载
    10. */
    11. onLoad(options) {
    12. console.log("d.onload");
    13. },
    14. /**
    15. * 生命周期函数--监听页面初次渲染完成
    16. */
    17. onReady() {
    18. console.log("d.onReady");
    19. },
    20. /**
    21. * 生命周期函数--监听页面显示
    22. */
    23. onShow() {
    24. console.log("d.onShow");
    25. },
    26. /**
    27. * 生命周期函数--监听页面隐藏
    28. */
    29. onHide() {
    30. console.log("d.onHide");
    31. },
    32. /**
    33. * 生命周期函数--监听页面卸载
    34. */
    35. onUnload() {
    36. console.log("d.onUnload");
    37. },
    38. /**
    39. * 页面相关事件处理函数--监听用户下拉动作
    40. */
    41. onPullDownRefresh() {
    42. },
    43. /**
    44. * 页面上拉触底事件的处理函数
    45. */
    46. onReachBottom() {
    47. },
    48. /**
    49. * 用户点击右上角分享
    50. */
    51. onShareAppMessage() {
    52. }
    53. })

    结论:

    一级不会销毁;

    二级层级深跳到层级低的会销毁;

    二级层级低级跳到深层级只会隐藏;

    隔代中间所有页面会被销毁;

  • 相关阅读:
    Maven项目的目录结构
    Python自动化测试,web网站怎么测试?全网最详细实战......
    PMP现在报班还来得及参加11月份的PMP考试吗?
    6.2:荷兰国旗问题
    如何理解与学习数学分析——第二部分——数学分析中的基本概念——第7章——连续性
    Linux部署多个jar包脚本
    VBA技术资料MF83:将Word文档批量另存为PDF文件
    python研发工程师面试准备一
    我和 chatGPT 对线操作系统!
    面经汇总--校招--金山办公
  • 原文地址:https://blog.csdn.net/weixin_73471776/article/details/133840772