<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      uni-app 通過后綴名區分不同渠道版本

      同一套微信小程序代碼根據需求要打包成兩款小程序,主要邏輯頁面一致,主題色不一致,部分頁面布局不,邏輯不一致。

      script命令

      先在package.json的script新增命令,根據不同的命令生成對應的環境變量,方便后續判斷當前適用的版本。

      pages.json配置

      查詢文檔發現page.js可以定制pages.json的返回。所以在根目錄新增page.js,
      內容如下:

      /**
      如果要熱部署,可以引用uni-pages-hot-modules
      **/
      try {
          var version_a= require('./config/version_a.js');
          var version_b= require('./config/version_b.js');
          module.exports = (pagesJson, loader) => {
              console.log('------------------當前開發版本為:'+process.env.NODE_CF_ENV)
              if (process.env.NODE_CF_ENV == 'version_a') {
                  return version_a
              } else if (process.env.NODE_CF_ENV == 'version_b') {
                  return version_b
              }
          }
      
      } catch (e) {
          console.log(e)
      }
      

      頁面布局、代碼邏輯

      使用webpack loader在讀取時判斷讀取文件, 比如有兩個文件為:home.vue home.version_b.vue,在webpack執行時會根據環境變更輸出不同的代碼
      loader配置:根目錄新增 vue.config.js

      module.exports = {
          chainWebpack: config => {
              // 訪問到vue的規則配置,添加自己的loader相關邏輯,具體api自行參考https://github.com/neutrinojs/webpack-chain
              config.module
                  .rule('vue')
                  .use('./packages/platformSpecificLoader')
                  .loader('./packages/platformSpecificLoader')
                  .end();
              //如果不清楚最終的webpack配置,可以輸出一下,根據自己的需求,通過api調整最終規則
              // console.log(config.toString());
          },
          configureWebpack: config =>{
              plugins: [
              ]
          }
      }
      

      loader代碼

      const path = require('path')
      const utils = require('loader-utils')
      const qs = require('querystring')
      const loaderUtils = require('loader-utils')
      var fs = require("fs")
      
      module.exports = function(source, map) {
          try{
      
              const loaderContext = this;
              const platformEnv = process.env.NODE_CF_ENV;
      
              const stringifyRequest = r => loaderUtils.stringifyRequest(loaderContext, r)
      
              const {
                  target,
                  request,
                  minimize,
                  sourceMap,
                  rootContext,
                  resourcePath,
                  resourceQuery
              } = loaderContext
      
              const rawQuery = resourceQuery.slice(1)
              const inheritQuery = `&${rawQuery}`
              const incomingQuery = qs.parse(rawQuery)
              const options = loaderUtils.getOptions(loaderContext) || {}
      
              const isServer = target === 'node'
              const isShadow = !!options.shadowMode
              const isProduction = options.productionMode || minimize || process.env.NODE_ENV === 'production'
              const filename = path.basename(resourcePath);
              const ext = path.extname(filename);
              const context = rootContext || process.cwd()
              const sourceRoot = path.dirname(path.relative(context, resourcePath))
              
              var platformFileName = filename.replace(ext, `.${platformEnv}${ext}`);
              const fileExists = fs.existsSync(resourcePath.replace(filename,platformFileName)
                          );
              if (fileExists) {
                  console.log('讀取平臺個性文件')
                  console.log(platformFileName)
                  // 同步讀取
                  var data = fs.readFileSync(resourcePath.replace(filename,platformFileName));
                  source = data;
              }
              this.callback(null, source, map)
          }catch(e){
              console.error(e)
          }
      }
      

      嘗試過使用babel plugins進行不同版本代碼文件的讀取,發現輸出的文件還是有問題。
      TODO:這種情況下熱加載有問題,在修改home.version_a.vue時未監聽到變更,需要修改home.vue才監聽到。

      主題色

      定義css變量,在vue文件中使用 var(--cf-theme)讀取主題色。要實現不同的版本使用不同的主題色,可以使用uni-app的條件編譯,具體參照官方文檔。如果代碼 邏輯差異不大的也可以使用條件編譯而不使用上面的后綴名來區分版本

      /*  #ifdef  MP-versiona*/
      body {
        --cf-theme: #fd4373;
      }
      /*  #endif  */
      /*  #ifdef  MP-versionb*/
      body {
        --cf-theme: #85d7cf;
      }
      /*  #endif  */
      
      posted @ 2021-03-05 17:13  gloxing  閱讀(947)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人人爽亚洲aⅴ人人爽av人人片| 女人裸体性做爰视频| 欧美激情一区二区三区成人| 国内熟妇人妻色在线三级| 好了av四色综合无码| 福利一区二区视频在线| 国产精品自拍实拍在线看| 国产一区二区三区色噜噜| 大又大又粗又硬又爽少妇毛片| 国产粉嫩区一区二区三区| 欧美嫩交一区二区三区| 精品一卡2卡三卡4卡乱码精品视频| 99久久激情国产精品| 久久久这里只有精品10| 日本欧美一区二区三区在线播放| 国产一区二区三区色视频| 国内精品久久黄色三级乱| 精品偷拍一区二区三区| 国产午夜福利片在线观看| 又大又粗又硬又爽黄毛少妇| 共和县| 国产粉嫩区一区二区三区| 婷婷久久综合九色综合88| 柳州市| 99久久精品久久久久久婷婷 | 九九热精品免费视频| 国语偷拍视频一区二区三区| 中文字幕精品人妻av在线 | 高清自拍亚洲精品二区| 无码国内精品人妻少妇| 亚洲精品天堂成人片AV在线播放| 乱60一70归性欧老妇| 欧洲精品色在线观看| 国产在线乱子伦一区二区| 国产精品午夜福利免费看| 丰满爆乳一区二区三区| 亚洲另类激情专区小说图片| 亚洲AV高清一区二区三区尤物| 中文字幕国产精品二区| 九龙坡区| 亚洲精品综合第一国产综合|