黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Kbone基礎(chǔ)-[05]Kbone+Vue項(xiàng)目手工搭建流程

Kbone基礎(chǔ)-[05]Kbone+Vue項(xiàng)目手工搭建流程

來源:千鋒教育
發(fā)布人:qyf
時(shí)間: 2022-10-10 14:30:08 1665383408

  此方案基于 webpack 構(gòu)建實(shí)現(xiàn),構(gòu)建 web 端代碼的流程無需做任何調(diào)整,此處只介紹如何將源碼構(gòu)建成小程序端代碼。

  1、搭建 webpack 環(huán)境

  在本地手工搭建一個(gè) webpack 環(huán)境。在任意目錄下執(zhí)行以下命令:

  // 創(chuàng)建項(xiàng)目目錄

  mkdir kbone-vue-project

  // 生成 Node 包管理配置文件

  cd kbone-vue-project

  npm init -y

  // 安裝 webpack, webpack-cli

  npm install webpack webpack-cli --save-dev

  2、編寫 webpack 配置

  2.1 webpack.mp.config.js

  在項(xiàng)目跟目錄下創(chuàng)建文件夾 build,在 build 下面新建一個(gè) webpack.mp.config.js 文件,用于小程序端代碼的構(gòu)建,文件內(nèi)容如下:

  const path = require('path')

  const webpack = require('webpack')

  const MiniCssExtractPlugin = require('mini-css-extract-plugin')

  const { VueLoaderPlugin } = require('vue-loader')

  const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

  const TerserPlugin = require('terser-webpack-plugin')

  const MpPlugin = require('mp-webpack-plugin') // 用于構(gòu)建小程序代碼的 webpack 插件

  const isOptimize = false // 是否壓縮業(yè)務(wù)代碼,開發(fā)者工具可能無法完美支持業(yè)務(wù)代碼使用到的 es 特性,建議自己做代碼壓縮

  module.exports = {

  mode: 'production',

  entry: {

  index: path.resolve(__dirname, '../src/index/main.mp.js'),

  },

  output: {

  path: path.resolve(__dirname, '../dist/mp/common'), // 放到小程序代碼目錄中的 common 目錄下

  filename: '[name].js', // 必需字段,不能修改

  library: 'createApp', // 必需字段,不能修改

  libraryExport: 'default', // 必需字段,不能修改

  libraryTarget: 'window', // 必需字段,不能修改

  },

  target: 'web', // 必需字段,不能修改

  optimization: {

  runtimeChunk: false, // 必需字段,不能修改

  splitChunks: { // 代碼分隔配置,不建議修改

  chunks: 'all',

  minSize: 1000,

  maxSize: 0,

  minChunks: 1,

  maxAsyncRequests: 100,

  maxInitialRequests: 100,

  automaticNameDelimiter: '~',

  name: true,

  cacheGroups: {

  vendors: {

  test: /[\\/]node_modules[\\/]/,

  priority: -10

  },

  default: {

  minChunks: 2,

  priority: -20,

  reuseExistingChunk: true

  }

  }

  },

  minimizer: isOptimize ? [

  // 壓縮CSS

  new OptimizeCSSAssetsPlugin({

  assetNameRegExp: /\.(css|wxss)$/g,

  cssProcessor: require('cssnano'),

  cssProcessorPluginOptions: {

  preset: ['default', {

  discardComments: {

  removeAll: true,

  },

  minifySelectors: false, // 因?yàn)?wxss 編譯器不支持 .some>:first-child 這樣格式的代碼,所以暫時(shí)禁掉這個(gè)

  }],

  },

  canPrint: false

  }),

  // 壓縮 js

  new TerserPlugin({

  test: /\.js(\?.*)?$/i,

  parallel: true,

  })

  ] : [],

  },

  module: {

  rules: [

  {

  test: /\.css$/,

  use: [

  MiniCssExtractPlugin.loader,

  'css-loader'

  ],

  },

  {

  test: /\.vue$/,

  loader: 'vue-loader',

  },

  {

  test: /\.js$/,

  use: [

  'babel-loader'

  ],

  exclude: /node_modules/

  },

  {

  test: /\.(png|jpg|gif|svg)$/,

  loader: 'file-loader',

  options: {

  name: '[name].[ext]?[hash]'

  }

  }

  ]

  },

  resolve: {

  extensions: ['*', '.js', '.vue', '.json']

  },

  plugins: [

  new webpack.DefinePlugin({

  'process.env.isMiniprogram': process.env.isMiniprogram, // 注入環(huán)境變量,用于業(yè)務(wù)代碼判斷

  }),

  new MiniCssExtractPlugin({

  filename: '[name].wxss',

  }),

  new VueLoaderPlugin(),

  new MpPlugin(require('./miniprogram.config.js')),

  ],

  }

  2.2 安裝依賴

  安裝上述配置文件里的 loader 和 plugin 依賴:

  npm install babel-loader @babel/core css-loader file-loader mini-css-extract-plugin vue-loader vue-template-compiler optimize-css-assets-webpack-plugin terser-webpack-plugin mp-webpack-plugin --save-dev

  2.3 編寫 webpack 插件配置

  這里的 webpack 插件配置即 MpPlugin 的配置參數(shù)文件。在 build 文件夾下創(chuàng)建 miniprogram.config.js 文件,內(nèi)容如下:

  module.exports = {

  // 頁面 origin,默認(rèn)是 https://miniprogram.default

  origin: 'https://test.miniprogram.com',

  // 入口頁面路由

  entry: '/test/aaa',

  // 頁面路由,用于頁面間跳轉(zhuǎn)。其值是一個(gè)以頁面名稱作為 key 的對(duì)象,每項(xiàng)的值是該頁面可以響應(yīng)的路由

  router: {

  index: [

  '/test/aaa',

  '/test/bbb',

  ],

  },

  // 特殊路由跳轉(zhuǎn)

  redirect: {

  notFound: 'index',

  accessDenied: 'index',

  },

  // 構(gòu)建輸出配置

  generate: {

  /**

  * 注入全局變量,每一項(xiàng)為 [key, value] 的結(jié)構(gòu)。構(gòu)建時(shí)會(huì)將需要注入的全局變量聲明在所有要執(zhí)行的代碼之前,以方便代碼里直接使用。

  * 如果配置了 ['TEST_VAR_STRING', '\'miniprogram\''],則會(huì)生成類似 var TEST_VAR_STRING = 'miniprogram' 的聲明語句;

  * 不指定 value 的話,則會(huì)從 window 下讀取,如 ['CustomEvent'] 則會(huì)生成類似 var CustomEvent = window.CustomEvent 的聲明語句。

  */

  globalVars: [

  ['TEST_VAR_STRING', '\'miniprogram\''],

  ['TEST_VAR_NUMBER', '123'],

  ['TEST_VAR_BOOL', 'true'],

  ['TEST_VAR_FUNCTION', 'function() {return \'I am function\'}'],

  ['TEST_VAR_OTHERS', 'window.document'],

  ['open'],

  ],

  // 構(gòu)建完成后是否自動(dòng)安裝小程序依賴。'npm':使用 npm 自動(dòng)安裝依賴

  autoBuildNpm: 'npm',

  },

  // 小程序全局配置,參見 https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#window

  app: {

  navigationBarTitleText: 'kbone-vue-project',

  },

  // 所有頁面的全局配置

  global: {

  rem: true, // 是否支持 rem

  pageStyle: true, // 是否支持修改頁面樣式

  },

  // 項(xiàng)目配置,會(huì)被合并到 project.config.json 中

  projectConfig: {

  appid: '',

  projectname: 'kbone-vue-project',

  },

  // 包配置,會(huì)被合并到 package.json 中

  packageConfig: {

  author: 'wechat-miniprogram',

  },

  }

  3、新增入口文件

  3.1 在項(xiàng)目根目錄下創(chuàng)建 src/index 目錄,在 index 目錄下創(chuàng)建 main.mp.js文件:

  import Vue from 'vue'

  import Router from 'vue-router'

  import App from './App.vue'

  import AAA from './AAA.vue'

  import BBB from './BBB.vue'

  export default function createApp() {

  const container = document.createElement('div')

  container.id = 'app'

  document.body.appendChild(container)

  // rem 和頁面樣式修改

  window.onload = function() {

  document.documentElement.style.fontSize = wx.getSystemInfoSync().screenWidth / 16 + 'px'

  document.documentElement.style.backgroundColor = '#fffbe7'

  }

  window.onerror = (message, source, lineno, colno, error) => {

  console.log('window.onerror => ', message, source, lineno, colno, error)

  };

  window.addEventListener('error', evt => console.log('window.addEventListener(\'error\') =>', evt))

  Vue.use(Router)

  const router = new Router({

  mode: 'history', // 是否使用 history api

  routes: [

  { path: '/test/aaa', component: AAA },

  { path: '/test/bbb', component: BBB }

  ]

  })

  return new Vue({

  el: '#app',

  router,

  render: h => h(App)

  })

  }

  3.2 安裝 Vue Vue-router

  npm install vue vue-router

  4、構(gòu)建項(xiàng)目文件

  4.1 創(chuàng)建App.vue

  在 index 目錄下創(chuàng)建 App.vue 文件,實(shí)現(xiàn)了:

  · 路由組件的展示和路由切換

  · 載入子組件

  · 全局變量的測(cè)試

  · cookie的測(cè)試

  · 拋出異常的測(cè)試

04

05

06

07

  4.2 創(chuàng)建 Footer.vue組件

  在 src 目錄下創(chuàng)建 common 目錄,在 common 目錄下創(chuàng)建 Footer.vue 文件:

00

  4.3 創(chuàng)建 AAA.vue 組件

  在 src/index 目錄下創(chuàng)建 AAA.vue 組件:

01

  4.4 創(chuàng)建 AAA.vue 組件

  在 src/index 目錄下創(chuàng)建 BBB.vue 組件:

02

  5、執(zhí)行構(gòu)建

  5.1 安裝 cross-env

  為什么使用cross-env?

  cross-env 是運(yùn)行跨平臺(tái)設(shè)置和使用環(huán)境變量的腳本。

  當(dāng)您使用NODE_ENV=production, 來設(shè)置環(huán)境變量時(shí),大多數(shù)Windows命令提示將會(huì)阻塞(報(bào)錯(cuò))。

  cross-env使得您可以使用單個(gè)命令,而不必?fù)?dān)心為平臺(tái)正確設(shè)置或使用環(huán)境變量。這個(gè)迷你的包(cross-env)能夠提供一個(gè)設(shè)置環(huán)境變量的scripts,讓你能夠以u(píng)nix方式設(shè)置環(huán)境變量,然后在windows上也能兼容運(yùn)行。

  安裝:

  npm install cross-env --save-dev

  5.2 編寫 npm 腳本

  NODE_ENV 環(huán)境變量將由 cross-env 設(shè)置。打印 process.env.NODE_ENV 值為 'production'。

  "scripts": {

  "mp": "cross-env NODE_ENV=production webpack --config build/webpack.mp.config.js --progress --hide-modules"

  }

  6、項(xiàng)目效果預(yù)覽

  6.1 執(zhí)行命令:

  npm run mp

  6.2 預(yù)覽效果:

  使用微信開發(fā)者工具導(dǎo)入項(xiàng)目根目錄下 dist 目錄下的項(xiàng)目 mp,直接選擇 mp 文件夾即可,如下圖所示:

圖片1

  項(xiàng)目運(yùn)行效果如下圖:

圖片2

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
大數(shù)據(jù)測(cè)試工程師需要具備哪些技能?

一、理解大數(shù)據(jù)概念大數(shù)據(jù)測(cè)試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲(chǔ)、MapReduce、實(shí)時(shí)計(jì)算等。他們還需要了解如何處理大規(guī)模的...詳情>>

2023-10-14 23:43:03
為什么SpringBoot的 jar 可以直接運(yùn)行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項(xiàng)目的類文件、資源文件以及依賴庫等...詳情>>

2023-10-14 23:01:49
站群服務(wù)器是什么?

站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個(gè)人擁有,并且經(jīng)常會(huì)互相鏈...詳情>>

2023-10-14 22:46:12
自編碼器是什么?

一、自編碼器原理自編碼器的設(shè)計(jì)靈感源于神經(jīng)科學(xué)中關(guān)于感知系統(tǒng)的認(rèn)知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個(gè)隱藏層的特征表示...詳情>>

2023-10-14 22:41:10
什么是云網(wǎng)融合?

一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計(jì)算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實(shí)現(xiàn)資源的共享、業(yè)務(wù)的協(xié)同,將網(wǎng)絡(luò)與云端服務(wù)深度融合,提供更靈活、高效、安全的...詳情>>

2023-10-14 22:31:47
一本高清在线| 99久久精品国产免费| 国产亚洲免费观看| 天堂网中文在线| 精品视频在线观看视频免费视频| 日本在线不卡视频| 一级毛片看真人在线视频| 午夜欧美成人久久久久久| 99久久视频| 亚飞与亚基在线观看| 日韩在线观看视频黄| 欧美18性精品| 999久久66久6只有精品| 九九久久国产精品大片| 欧美大片a一级毛片视频| 一a一级片| 免费国产在线观看不卡| 久草免费资源| 精品视频在线看| 你懂的日韩| 精品国产亚一区二区三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本特黄特黄aaaaa大片| 国产一区免费在线观看| 黄视频网站免费看| 黄视频网站免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产网站免费视频| 欧美国产日韩在线| 天天色成人网| 精品国产三级a| 日本伦理网站| 四虎影视精品永久免费网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产高清视频免费观看| a级毛片免费全部播放| 999久久久免费精品国产牛牛| 999精品在线| 色综合久久天天综合| 台湾毛片| 精品国产一区二区三区久| 国产麻豆精品高清在线播放| 一 级 黄 中国色 片| 国产精品自拍在线| 国产视频一区二区在线播放| 99色视频| 亚洲精品影院一区二区| 国产麻豆精品| 久久福利影视| 日韩中文字幕在线观看视频| 免费的黄视频| 日韩中文字幕在线亚洲一区| 国产91精品一区| 日韩在线观看免费| 精品久久久久久综合网| 久久成人综合网| 亚洲 欧美 成人日韩| 国产欧美精品午夜在线播放| 久久精品欧美一区二区| 四虎影视久久久免费| 精品国产一区二区三区免费| 国产精品1024在线永久免费| 国产伦精品一区二区三区无广告| 日韩专区一区| 国产激情一区二区三区| 国产麻豆精品| 国产91精品系列在线观看| 国产成人啪精品视频免费软件| 国产一区免费观看| 国产a视频精品免费观看| 精品视频免费看| 999久久久免费精品国产牛牛| 欧美国产日韩在线| 欧美a免费| 国产美女在线一区二区三区| 欧美日本国产| 日韩在线观看免费| 99久久视频| 午夜欧美成人香蕉剧场| 欧美激情一区二区三区在线| 日韩专区一区| 午夜久久网| 久草免费资源| 麻豆网站在线看| 日本特黄一级| 亚欧乱色一区二区三区| 国产麻豆精品高清在线播放| 日韩av成人| 二级片在线观看| 天天做人人爱夜夜爽2020| 欧美另类videosbestsex久久 | 日韩女人做爰大片| 亚洲wwwwww| 久久99爰这里有精品国产| 久久国产精品自线拍免费| 免费一级片网站| 国产一区二区精品久| 亚洲第一页乱| 亚洲精品中文字幕久久久久久| 久久99青青久久99久久| 亚洲wwwwww| 久久99这里只有精品国产| 一本高清在线| 精品视频一区二区三区免费| 久久精品成人一区二区三区| 成人免费福利片在线观看| 天天做人人爱夜夜爽2020毛片| 成人免费观看视频| 国产视频一区在线| 四虎影视久久久免费| 精品国产一级毛片| 久久国产精品只做精品| 国产成人啪精品视频免费软件| 九九久久99| 欧美日本二区| 国产精品自拍在线| 91麻豆精品国产综合久久久| 国产麻豆精品免费密入口| 免费毛片播放| 久草免费资源| 可以免费看毛片的网站| 91麻豆国产| 日韩专区亚洲综合久久| 美女免费精品视频在线观看| 色综合久久久久综合体桃花网| 欧美激情一区二区三区在线| 日韩一级黄色大片| 色综合久久久久综合体桃花网| 欧美激情在线精品video| 国产精品自拍一区| 成人免费观看男女羞羞视频| 国产视频在线免费观看| 一本伊大人香蕉高清在线观看| 欧美激情一区二区三区在线播放| 午夜激情视频在线观看| 欧美大片a一级毛片视频| 精品在线观看国产| 麻豆午夜视频| 日日夜夜婷婷| 国产不卡在线观看视频| 九九热国产视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区精品| 一 级 黄 中国色 片| 国产91丝袜高跟系列| 成人免费观看视频| 久久精品大片| 日韩在线观看视频黄| 国产成人精品影视| 色综合久久天天综合绕观看| 亚洲女人国产香蕉久久精品| 国产一区二区精品| 你懂的日韩| 午夜久久网| 欧美激情一区二区三区在线| 亚洲精品影院一区二区| 日韩综合| 黄色免费三级| 成人高清视频免费观看| 国产a毛片| 国产美女在线一区二区三区| 欧美一级视频免费观看| 久久国产影视免费精品| 二级片在线观看| 国产91素人搭讪系列天堂| 日韩av成人| 欧美国产日韩久久久| 精品视频在线观看一区二区| 亚洲wwwwww| 一 级 黄 中国色 片| 亚洲精品中文字幕久久久久久| 99色视频| 午夜家庭影院| 国产一区二区精品久久91| 999久久66久6只有精品| 深夜做爰性大片中文| 成人免费观看男女羞羞视频| 国产网站免费视频| 精品视频免费在线| 精品国产香蕉伊思人在线又爽又黄| 精品国产三级a∨在线观看| 亚洲天堂免费| 99热精品在线| 91麻豆爱豆果冻天美星空| 国产美女在线观看| 精品国产亚一区二区三区| 久久99中文字幕| 国产不卡精品一区二区三区| 欧美激情一区二区三区视频高清 | 精品久久久久久综合网| 国产麻豆精品视频| 国产激情一区二区三区| 日韩中文字幕在线播放| 午夜欧美成人久久久久久| 超级乱淫伦动漫| 韩国三级视频网站| 欧美电影免费| 日韩一级黄色| 国产美女在线观看| 999精品在线|