国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vuecli3 vant rem 移動端框架方案

since1986 / 2340人閱讀

摘要:描述基于適配方案封裝,構(gòu)建手機端模板腳手架幫你做好的配置有多環(huán)境開發(fā)封裝適配方案生產(chǎn)環(huán)境優(yōu)化首屏加速低版本瀏覽器兼容環(huán)境發(fā)布腳本可以上手直接寫代碼多環(huán)境開發(fā)之前寫過一個多環(huán)境的方案,是基于的多環(huán)境配置方案傳送門最近新的項目采用了開始了

描述

基于vue-cli3.0+webpack 4+vant ui + sass+ rem適配方案+axios封裝,構(gòu)建手機端模板腳手架

幫你做好的配置有

vuecli3.0

多環(huán)境開發(fā)

axios封裝

rem適配方案

生產(chǎn)環(huán)境cdn優(yōu)化首屏加速

babel低版本瀏覽器兼容

環(huán)境發(fā)布腳本

...
可以上手直接寫代碼

多環(huán)境開發(fā)

之前寫過一個多環(huán)境的方案,是基于vue-cli2.0的vue多環(huán)境配置方案-傳送門
最近新的項目采用了vuecli3.0開始了一番折騰

這里參考了 vue-admin-template基本思路不變
在src的文件里新建config 根據(jù)不同的環(huán)境去引用不同的配置文件,不同的是在根目錄下有三個設(shè)置環(huán)境變量的文件
這里可以參考vue-admin-template

這里要注意的是,要以VUE_APP_前綴設(shè)置,才可以在vue中引用

這里有個問題,既然這里有了根據(jù)不同環(huán)境設(shè)置變量的文件,為什么還要去config下新建三個對應(yīng)的文件呢?
個人比較喜歡這種引入的方式而,比如我需要在文件引入api.common_api

import { api } from "@/config"
// api
const { common_api } = api

rem適配方案

還是那句話,用vw還是用rem,這是個問題?

選用rem的原因是因為vant直接推薦了這個適配方案,拿來直接用

================2019.06.06 更新===========================

生產(chǎn)環(huán)境使用CDN

可以使用cdn提高速度,這里要在vue.config.js需要配置externals,修改public 下的index.html

vue.config.js

"use strict"
const path = require("path")
const defaultSettings = require("./src/config/index.js")
function resolve(dir) {
  return path.join(__dirname, dir)
}

const name = defaultSettings.title || "vue mobile template" // page title
const port = 9018 // dev port
const externals = {
  vue: "Vue",
  "vue-router": "VueRouter",
  vuex: "Vuex",
  vant: "vant",
  axios: "axios",
  "crypto-js": "CryptoJS"
}
// cdn
const cdn = {
  // 開發(fā)環(huán)境
  dev: {
    css: [],
    js: [
      "https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.4.4/polyfill.js"
    ]
  },
  // 生產(chǎn)環(huán)境
  build: {
    css: ["https://cdn.jsdelivr.net/npm/vant@beta/lib/index.css"],
    js: [
      "https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.4.4/polyfill.js",
      "https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js",
      "https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.0.6/vue-router.min.js",
      "https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js",
      "https://cdnjs.cloudflare.com/ajax/libs/vuex/3.1.1/vuex.min.js",
      "https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js",
      "https://cdn.jsdelivr.net/npm/vant@beta/lib/vant.min.js"
    ]
  }
}
module.exports = {
  publicPath: process.env.NODE_ENV === "development" ? "/" : "/app/", // 需要區(qū)分生產(chǎn)環(huán)境和開發(fā)環(huán)境,不然build會報錯
  outputDir: "dist",
  assetsDir: "static",
  lintOnSave: process.env.NODE_ENV === "development",
  productionSourceMap: false,
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    }
  },

  configureWebpack: config => {
    // 為生產(chǎn)環(huán)境修改配置...
    if (process.env.NODE_ENV === "production") {
      // externals里的模塊不打包
      Object.assign(config, {
        name: name,
        externals: externals
      })
    }
    // 為開發(fā)環(huán)境修改配置...
    if (process.env.NODE_ENV === "development") {
    }
  },
  chainWebpack(config) {
    config.plugins.delete("preload") // TODO: need test
    config.plugins.delete("prefetch") // TODO: need test
    // alias
    config.resolve.alias
      .set("@", resolve("src"))
      .set("assets", resolve("src/assets"))
      .set("views", resolve("src/views"))
      .set("components", resolve("src/components"))
    /**
     * 添加CDN參數(shù)到htmlWebpackPlugin配置中, 詳見public/index.html 修改
     */
    config.plugin("html").tap(args => {
      if (process.env.NODE_ENV === "production") {
        args[0].cdn = cdn.build
      }
      if (process.env.NODE_ENV === "development") {
        args[0].cdn = cdn.dev
      }
      return args
    })

    // set preserveWhitespace
    config.module
      .rule("vue")
      .use("vue-loader")
      .loader("vue-loader")
      .tap(options => {
        options.compilerOptions.preserveWhitespace = true
        return options
      })
      .end()

    config
      // https://webpack.js.org/configuration/devtool/#development
      .when(process.env.NODE_ENV === "development", config =>
        config.devtool("cheap-source-map")
      )

    config.when(process.env.NODE_ENV !== "development", config => {
      config
        .plugin("ScriptExtHtmlWebpackPlugin")
        .after("html")
        .use("script-ext-html-webpack-plugin", [
          {
            // `runtime` must same as runtimeChunk name. default is `runtime`
            inline: /runtime..*.js$/
          }
        ])
        .end()
      config.optimization.splitChunks({
        chunks: "all",
        cacheGroups: {
          libs: {
            name: "chunk-libs",
            test: /[/]node_modules[/]/,
            priority: 10,
            chunks: "initial" // only package third parties that are initially dependent
          },
          // elementUI: {
          //   name: "chunk-elementUI", // split elementUI into a single package
          //   priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
          //   test: /[/]node_modules[/]_?element-ui(.*)/ // in order to adapt to cnpm
          // },
          commons: {
            name: "chunk-commons",
            test: resolve("src/components"), // can customize your rules
            minChunks: 3, //  minimum common number
            priority: 5,
            reuseExistingChunk: true
          }
        }
      })
      config.optimization.runtimeChunk("single")
    })
  }
}

public/index.html



  
    
    
    
    
    <% for (var i in
      htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.css) { %>
      
      
      <% } %>
    <%= webpackConfig.name %>
  
  
    
    
<% for (var i in htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.js) { %> <% } %>
babel轉(zhuǎn) ES5

因為babel研究的還不夠透徹,所以采用了最笨的方法直接引入babel-polyfill,生產(chǎn)環(huán)境和開發(fā)環(huán)境都直接引用cdn js
babel.config.js 添加 useBuiltIns: "entry"

babel.config.js

module.exports = {
  presets: [["@vue/app", { useBuiltIns: "entry" }]],
  plugins: [
    [
      "import",
      {
        libraryName: "vant",
        libraryDirectory: "es",
        style: true
      },
      "vant"
    ]
  ]
}
總結(jié)

因為項目剛剛構(gòu)建起來,后面還會持續(xù)更新,實際使用過程中一定還有很多問題,如果文章中有錯誤希望能夠被指正,一起成長

項目github地址

關(guān)于我

您可以掃描添加下方的微信并備注 Sol 加交流群,給我提意見,交流學(xué)習(xí)。

如果對你有幫助送我一顆小星星(づ ̄3 ̄)づ╭?~

轉(zhuǎn)載請聯(lián)系作者!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/109794.html

相關(guān)文章

  • 【開源】小程序And公眾號商城,外加后臺,功能齊全!

    摘要:前言一個集微信公眾號商城小程序商城商城后臺的一個開源項目,后臺是基于開發(fā)的,是一個簡潔而強大的開源微信公眾平臺開發(fā)框架,微信功能插件化開發(fā)多公眾號管理配置簡單。微信小程序項目下載整個包之后,進行根目錄文件夾。 前言 一個集微信公眾號商城/小程序商城/商城后臺的一個開源項目,后臺是基于WeiPHP5.0開發(fā)的,WeiPHP是一個簡潔而強大的開源微信公眾平臺開發(fā)框架,微信功能插件化開發(fā),多...

    VishKozus 評論0 收藏0
  • 【開源】小程序And公眾號商城,外加后臺,功能齊全!

    摘要:前言一個集微信公眾號商城小程序商城商城后臺的一個開源項目,后臺是基于開發(fā)的,是一個簡潔而強大的開源微信公眾平臺開發(fā)框架,微信功能插件化開發(fā)多公眾號管理配置簡單。微信小程序項目下載整個包之后,進行根目錄文件夾。 前言 一個集微信公眾號商城/小程序商城/商城后臺的一個開源項目,后臺是基于WeiPHP5.0開發(fā)的,WeiPHP是一個簡潔而強大的開源微信公眾平臺開發(fā)框架,微信功能插件化開發(fā),多...

    linkFly 評論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請點擊集前端最近很火的框架資源定時更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請::點擊::集web前端最近很火的vue2框架資源;定時更新,歡迎 Star 一下。 蘇...

    sutaking 評論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請點擊集前端最近很火的框架資源定時更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請::點擊::集web前端最近很火的vue2框架資源;定時更新,歡迎 Star 一下。 蘇...

    khs1994 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<