网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

js和微信小程序路由(頁面)跳轉攔截

發布時間:2018-04-25 10:25 所屬欄目:小程序開發教程

前言 
在開發有登錄功能的項目時,不可避免的需要在路由(頁面)跳轉時對當前用戶的權限進行一定的校驗。目前我使用的比較多的vue.js提供了比較好的解決方案。在開發微信小程序時,發現官方目前并未提供相應的解決方案,根據以往的經驗自己實現了路由(頁面)跳轉攔截。在此對兩者做一個簡單的對比。

vue.js的路由攔截 
vue.js官方稱之為導航守衛。官方文檔很詳細,使用起來也比較簡單,此處就不多說了,簡單的示例代碼如下:

 

				
  1. // routes/index.js
  2. const router = new Router({
  3. routes: [{
  4. path: '/',
  5. name: 'Login',
  6. component: Login
  7. },
  8. {
  9. path: '/user',
  10. name: 'User',
  11. component: User,
  12. meta: {
  13. requireAuth: true
  14. }
  15. }]
  16. });
  17.  
  18. // 全局導航鉤子
  19. router.beforeEach((to, from, next) => {
  20. // meta.requireAuth為true時才進行校驗
  21. if (to.meta.requireAuth) {
  22. // 此處使用vuex進行校驗,具體根據業務需求來
  23. store.dispatch('checkAuth');
  24. if (!store.state.checkAuth) {
  25. // rediect是為了登錄后重定向到當前頁面
  26. next({
  27. path: '/',
  28. query: {
  29. redirect: to.fullPath
  30. }
  31. });
  32. } else {
  33. next();
  34. }
  35. } else {
  36. next();
  37. }
  38. });
 

微信小程序的路由攔截

因為微信小程序官方并沒有提供官方的解決方案,所以這里只能自己去實現一個。如果對node.js比較熟悉的話,應該對express/koa框架中的經常提到的中間件概念比較熟悉,這里就使用中間件的機制來處理。結合小程序中Page()函數和生命周期,具體代碼如下:

 

				
  1. // utils/filter.js
  2. function loginCheck(pageObj) {
  3. if (pageObj.onLoad) {
  4. let _onLoad = pageObj.onLoad;
  5. // 使用onLoad的話需要傳遞options
  6. pageObj.onLoad = function (options) {
  7. if(wx.getStorageSync('USERID')) {
  8. // 獲取當前頁面
  9. let currentInstance = getPageInstance();
  10. _onLoad.call(currentInstance, options);
  11.  
  12. } else {
  13. //跳轉到登錄頁
  14. wx.redirectTo({
  15. url: "/pages/login/login"
  16. });
  17. }
  18. }
  19. }
  20. return pageObj;
  21. }
  22.  
  23. // 獲取當前頁面
  24. function getPageInstance() {
  25. var pages = getCurrentPages();
  26. return pages[pages.length - 1];
  27. }
  28.  
  29. exports.loginCheck = loginCheck;

以上,通用的過濾函數就寫好了。在需要使用的頁面引入該方法即可:

 

				
  1. // pages/user/user.js
  2. const filter = require('../../utils/filter');
  3. Page(filter.loginCheck({
  4. // ...
  5. onLoad: function (options) {
  6. // ...
  7. },
  8. // ...
  9. }));
 

總結

相比vue.js官方提供的路由攔截功能,自己實現微信小程序的路由攔截還是存在一定的不足。比如:

微信小程序需要進行路由攔截的每個頁面都需要引入,并包裝一層,使用起來還是比較繁瑣的。  vue.js是每次跳轉到新的路由(頁面)前進行處理,校驗通過會跳轉到新頁面,不通過則直接跳轉到登陸頁面;而微信小程序這里,會先跳轉到新頁面,校驗不通過會再次跳轉到登陸頁面。  目前在微信小程序這方面如果有比較好的解決方案的話,可以相互交流一下。

路由跳轉攔截是一個非常常用的功能,希望后續微信小程序官方能給出一個比較好的官方解決方案。



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/24024.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×